GPS Logger MG v0.94 - release available

You might be interested in the next release of this project. Figures show that the built-in CSV binary compressed storage format can reduce 59.4MiB of KML data to 7.9MiB. There’s a bunch of other features too. Go straight to the userguides and downloads at http://gpslogger.blogspot.com now.

In other news, I’m now working for Google (completely unrelated to this project and not in an engineering role!) so geo-location is even closer to my heart!


I’m really pleased to announce release V0.94 of the GPS Logger MG for Spark Fun GPS Datalogger V1.0 (Trimble Lassen iQ) and V2.4 (US GlobalSat EM-406).

This release includes the following highlights:

  • firmware now supports the Spark Fun GPS Datalogger V2.4 (EM-406) as well as the original V1.0 (Lassen iQ).

  • emulator now provided for Linux 2.6 as well as FreeBSD 6 systems, and now works with either raw FAT images or standard file system I/O.

  • compressed output, both generic LZARI based and specific CSV binary encoding, implemented to substantially reduce card writes and sizes thus improve power efficiency. code for two standalone decompression tools (perl & ‘C’) provided. performance against large sample sets fully evaluated and documented.

  • provided a new ‘passthrough’ serial mode, for real-time direct GPS output to other devices, e.g. a PC. verified compatibility testing with numerous PC based applications (e.g. Microsoft AutoRoute 2007, Google Earth, NetStumbler, etc).

  • various under-the-cover power, performance and feature improvements, e.g. data structures optimised to reduce RAM footprint, brown-out shutdown triggering, input data robustness (both GPS & config), lazy FAT cluster map updates, uart IRQ handling, timer delta-queue implementation, etc. code profiling also used.

  • improved test coverage, with more built-in unit-test cases, greater splint and compiler verification (under both FreeBSD and Linux), and evaluation against large sample sets.

The complete details, with other features and changes not listed here, about the release, its installation and its use, can be found in the userguide.

The package and userguide are available for download from the project blog at http://gpslogger.blogspot.com.

This is V0.94 release. If any issues need to be rectified, then I plan to make an intermediate V0.95 release within a few weeks. Timely feedback would help!

The roadmap from there is to aim for a V0.96 release to focus on restructuring and improving the GPS data processing pipeline, with the capability to directly configure the GPS module for use. Following this, a V0.98 will focus on power and performance optimisation.

I have loaded the Hex file on GPS Datalogger v1.0 and I am impressed. However to use added NMEA sentences require programming of the Trimble Lassen IQ unit using http://www.sparkfun.com/commerce/produc … cts_id=167

This is due to com port 1 on the logger not been enabled. In addition I lost sentences when writing to the SD disc with all NMEA options enabled.

(Changed code using Rowland 1.5)

Please let this not stop development as I like to through “breadcrumbs” every second.

Thanks for giving it a try!

Yes, by default the iQ only emits two sentences, so you need to program it ahead of time to emit others. In the next release I’ll be concentrating on making the firmware program both the iQ and EM-406 to get the right sentences out. Even then you’ll need to have configured the iQ ahead of time to accept TSIP as input on the comport. The EM-406 is far more default friendly in this way.

Thanks for picking up the bug, I’ll pm you seperately for the details so that I can look into it. I have to admit that I put off some i/o optimisation until the next release as I didn’t think it was necessary, but maybe I should bring it forward: logging all NMEA sentences is reasonable data volume.

dmnamibia:
I have loaded the Hex file on GPS Datalogger v1.0 and I am impressed. However to use added NMEA sentences require programming of the Trimble Lassen IQ unit using http://www.sparkfun.com/commerce/produc … cts_id=167

This is due to com port 1 on the logger not been enabled. In addition I lost sentences when writing to the SD disc with all NMEA options enabled.

(Changed code using Rowland 1.5)

Please let this not stop development as I like to through “breadcrumbs” every second.

I’ve produced an interim release v0.94b available from the blog (http://gpslogger.blogspot.com/), this adds a few I/O performance improvements and allows concurrent file and pass modes - i.e. real-time NMEA out the serial port, while concurrently logging to disk.

I haven’t been able to reproduce the defect mentioned above (logs being lost) using v2.4 with nmea, but added some additional margin in the 0.94b release by increasing uart buffer rx size, and some I/O performance fixes. Would be interested in further testing and diagnostics!

Version 94b looks good. I have not tried the RS232 port at the same time.

It would require a carputer to really work. Did you use the unit that we load the software with - to do the tests? (maybe Pete can give us directions on a LCD that we can hook up. ) Question - what is the chance of having a device that will send an iterrupt to the recording via RS232. The idea being that it would be nice to now that a way point is recorded. Currently we look at the co-ordinates on a GPS and write it in a little black book.

The cameras that support GPS are still just that expensive - although would be ideal. (Those that support RS232 - cheap one available anyone?)

Keep on developing

I am impressed. With my own programming I had to drop sentences because the SD write process would “corrupt” some of the incoming Rs232 sentences. Note that I take 1 second samples. Sample

  • $GPZDA,135432.56,23,07,2007,*64

    $GPGGA,135432.00,2240.3068,S,01433.0500,E,1,08,1.21,00041,M,023,M,*74

    $GPVTG,256.9,T,273.1,M,035.7,N,066.2,K,A*2F

    $GPGSA,A,3,24,30,05,02,06,12,26,10,2.08,1.21,1.69*06

    $GPRMC,135432.00,A,2240.3068,S,01433.0500,E,035.7,256.9,230707,16.2,W,A*0C

    $GPZDA,135433.56,23,07,2007,*65

    $GPGGA,135433.00,2240.3091,S,01433.0396,E,1,08,1.21,00040,M,023,M,*7B

    $GPVTG,256.6,T,272.8,M,035.8,N,066.4,K,A*21

    $GPGSA,A,3,24,30,05,02,06,12,26,10,2.08,1.21,1.70*0E

    $GPRMC,135433.00,A,2240.3091,S,01433.0396,E,035.8,256.6,230707,16.2,W,A*02

    $GPZDA,135434.57,23,07,2007,*63

    $GPGGA,135434.00,2240.3115,S,01433.0293,E,1,09,0.97,00040,M,023,M,*78

    $GPVTG,255.4,T,271.6,M,035.4,N,065.6,K,A*20

    $GPGSA,A,3,17,24,30,05,02,06,12,26,10,1.63,0.97,1.32*0C

    $GPRMC,135434.00,A,2240.3115,S,01433.0293,E,035.4,255.4,230707,16.2,W,A*01

    $GPZDA,135435.57,23,07,2007,*62

    $GPGGA,135435.00,2240.3140,S,01433.0192,E,1,09,0.97,00040,M,023,M,*7B

    $GPVTG,254.4,T,270.6,M,034.1,N,063.2,K,A*26

    $GPGSA,A,3,17,24,30,05,02,06,12,26,10,1.63,0.97,1.32*0C

    $GPRMC,135435.00,A,2240.3140,S,01433.0192,E,034.1,254.4,230707,16.2,W,A*07

    $GPZDA,135436.56,23,07,2007,*60

    $GPGGA,135436.00,2240.3167,S,01433.0096,E,1,09,1.11,00040,M,023,M,*77

    $GPVTG,253.3,T,269.5,M,032.4,N,060.0,K,A*2F

    $GPGSA,A,3,24,29,30,05,02,06,12,26,10,2.00,1.11,1.67*08

    $GPRMC,135436.00,A,2240.3167,S,01433.0096,E,032.4,253.3,230707,16.2,W,A*07

    $GPZDA,135437.55,23,07,2007,*62

    $GPGGA,135437.00,2240.3194,S,01433.0006,E,1,08,1.12,00040,M,023,M,*71

    $GPVTG,251.8,T,268.0,M,030.6,N,056.7,K,A*20

    $GPGSA,A,3,29,30,05,02,06,12,26,10,2.06,1.12,1.73*0E

    $GPRMC,135437.00,A,2240.3194,S,01433.0006,E,030.6,251.8,230707,16.2,W,A*0A

    $GPZDA,135438.53,23,07,2007,*6B

    $GPGGA,135438.00,2240.3220,S,01432.9919,E,1,07,1.56,00039,M,023,M,*7C

    $GPVTG,251.6,T,267.8,M,029.5,N,054.6,K,A*21

    $GPGSA,A,3,29,30,05,06,12,26,10,2.33,1.56,1.74*0D

    $GPRMC,135438.00,A,2240.3220,S,01432.9919,E,029.5,251.6,230707,16.2,W,A*03

  • Thanks for the support. With regard to your question re. interrupts. I do plan to support a CLI (command line interface) via the serial port, and it should be pretty easy to support some kind of recording mechanism as part of that (whether triggered by a pin transition, or by a command sequence of characters). btw. you could skip the ZDA sentences as the same data can be picked up from the RMC.

    I had some prolem in getiing both SD and RS232 working

    Code is not clear

    name: mode - operating mode

    type: string - file|pass (file store on card, pass through serial-port – use one or both)

    mode = file,pass

    It works with the comma but I am not sure how you pick it up

    as “file|pass” did not work.

    Still like it

    Yep, you need to use the comma, the '|'s indicate that there are multiple options. I thought it was clear here and in the manual, but perhaps it isn’t so I’ll revisit it. Feedback much appreciated!

    dmnamibia:
    I had some prolem in getiing both SD and RS232 working

    Code is not clear

    name: mode - operating mode

    type: string - file|pass (file store on card, pass through serial-port – use one or both)

    mode = file,pass

    It works with the comma but I am not sure how you pick it up

    as “file|pass” did not work.

    Still like it

    Hi,

    I have a problem with the upgrade… after a correct upload of the firmware to the GPS Module (and I have made a compare with the .hex file to be sure), switched it off & on, the status lights are fixed blue + red :frowning:

    I have also tried with 3 different SD-Cards, but it is still the same…

    Any idea ?

    Thanks.

    Typically SD card or incorrect configuration is the only thing that causes a problem.

    Did the same SD cards work correctly with the original firmware?

    If you can, could you upload the Debug version of the firmware, and monitor the start up on the serial port at 9600bps to see what the termination error condition is (and in cases where it is provided, the error code)?

    Thanks

    mg:
    Typically SD card or incorrect configuration is the only thing that causes a problem.

    Did the same SD cards work correctly with the original firmware?

    If you can, could you upload the Debug version of the firmware, and monitor the start up on the serial port at 9600bps to see what the termination error condition is (and in cases where it is provided, the error code)?

    Thanks

    Hi, thanks for you answer!

    Yes the SD cards work with the original firmware (btw, where can I find it ? … In case I have to restore it).

    I have upload the Debug version and start a capture on the serial port… here is the dump:

    000001 20:02:32.453  67 70 73 5F 6C 6F 67 67 65 72 5F 6D 67 20 76 30 gps_logger_mg v0
    000002 20:02:32.468  2E 39 34 62 3A 20 73 79 73 74 65 6D 20 66 69 72 .94b: system fir
    000003 20:02:32.484  6D 77 61 72 65 20 28 68 61 72 64 77 61 72 65 20 mware (hardware 
    000004 20:02:32.500  76 32 2E 34 29 2E 0D 0A 63 6F 70 79 72 69 67 68 v2.4)...copyrigh
    000005 20:02:32.515  74 20 28 63 29 20 32 30 30 37 20 67 70 73 5F 6C t (c) 2007 gps_l
    000006 20:02:32.531  6F 67 67 65 72 5F 6D 67 40 74 61 6E 75 6E 64 72 ogger_mg@tanundr
    000007 20:02:32.562  61 2E 63 6F 6D 2E 20 61 6C 6C 20 72 69 67 68 74 a.com. all right
    000008 20:02:32.578  73 20 72 65 73 65 72 76 65 64 2E 0D 0A 61 70 70 s reserved...app
    000009 20:02:32.593  5F 69 6E 69 74 0D 0A 63 61 72 64 5F 69 6E 69 74 _init..card_init
    000010 20:02:32.609  0D 0A 61 70 70 5F 69 6E 69 74 3A 20 66 61 69 6C ..app_init: fail
    000011 20:02:32.687  65 64 20 2D 20 66 61 74 5F 69 6E 69 74 2C 20 65 ed - fat_init, e
    000012 20:02:32.703  72 72 6F 72 3D 2D 38 0D 0A 6C 70 63 32 31 58 58 rror=-8..lpc21XX
    000013 20:02:32.718  5F 74 65 72 6D 00                               _term.
    000014 20:03:09.875  00                                              .
    

    Looks like an error :frowning: ! … If I understand well, it is a fat error, isn’t ?

    My SD-Card is formated FAT-32 with Window XP-Pro SP2, is it wrong ?

    Or, is it possible that the card reader itself is damaged ?

    Thanks.

    EDIT: ==> Ok, you may RTFM-me :oops: … it works better after a normal FAT formatting :smiley: !

    Problem looks to be solved… I now have the default GPSCONFG.TXT on the card… I will try to record GPS data now :wink: !