GPSv2 inaccuracy

Someone needs to make a complete how-to. The problem is that there is flashed code in the xadow gps board and there is no easy way to re-flash it from the existing development environment.

I’ve posted a hex file which fixes both the inaccuracy as well as the race condition. The race condition can be seen by a random misplaced decimal point in the latitude or longitude. The inaccuracy is due to a boundary condition on a loop starting in the wrong string location for parsing.

You need a soldering iron, some small wires (i use wires I take from a cat/5 cable), an Arduino 8266 part, and (optionally) a breadboard (makes the various connections simpler), the Arduino IDE, and a little patience.

You have to solder two wires to the SWCLK and SWIO pins on the bottom of the GPS board, then hook up those 2 pins (and vdd and gnd) to another Arduino part to re-flash.

I took an Adafruit 8266 huzzah board, installed the board into my Arduino IDE, then loaded the arduinio code pointed to by the previous poster’s URL (looks like ardunio code). You map 2 gpio pins from the 8266 onto the the 2 soldered pins from the GPS board and run the little flashing program (for me on my part, gpio#0 and gpio#1). It takes just a minute or 2 for the actual flashing to occur.

That’s the overview. Going back and looking at previous posts and the URLs might make a little more sense now. The true error is not that there is a bug in the code; the issue is that no provision was made to more easily update the code on the gps part. Hopefully a future version of the part will allow you to bridge a few connections on the GPS part and allow the hex file to go across the little xadow connector from the 2502 (rephone) part; either that, or use the GPS part which Linkit has done all the work for already for the 2502 part; or change the driver to be much simpler and only provide a i2c mechanism to the UART on the GPS chip.