Nanonote GPS proof of concept working
wolfgang at sharism.cc
Tue Jul 13 15:44:37 EDT 2010
I wanted to add some information wrt GPS - I recently met (virtually) with
Henry Hallam (http://www.pericynthion.org/), who works on a GPS project
for wind turbines...
I had an interesting email exchange with him, and with his permission I
am posting what relates to our copyleft hardware work.
> You are working on a GPS stack that talks directly to a GPS front-end RF IC?
> Yes, and also working on getting permission to release it open source. I'm
> fairly hopeful that I'll be able to.
> The hardware and software is definitely in a working state. Right now
> I'm working on adding support for RTK differential carrier-phase,
> which gives relative positions between a rover and a base station
> accurate to better than 10cm. I don't know whether or not I'll be
> able to release the code for that, we'll see.
> I am interested in a free GPS solution, where 'free' means that GPL
> licensed software talks directly to the GPS RF PHY layer/chip.
> I'm using the SE4120L front end IC. It connects to a Blackfin DSP
> running my bare-metal software (currently of undetermined license, but
> I wrote it all) compiled with gcc. The DSP outputs navigation message
> bits, code phase and carrier phase information at 50Hz update rate
> over serial to a PC. I have PC software of similar license situation
> that computes navigation solutions, and can do RTK between multiple
> copies of itself over a network.
> In the past I have written versions to run entirely on a PC without
> the DSP, though that would take some backporting to bring them up to
> The MAX2769 is the other one I have looked at. It seems like it would
> do the job but didn't interface as easily with my DSP (the SE4120L can
> be set up in a serial mode that is mostly compatible with SPI, the
> Maxim part has a 4-bit parallel output.) Features that make life
> easier are a low or zero IF and serialized 1-bit I & Q outputs.
> Other people have built receivers based on older devices like the
> CX74051 but they look annoying to use and the documentation is sparse.
> It looks like u-blox is selling a rebranded SE4120L as the UBX-G0011.
> What type of 'special' DSP-like features are you using in the Blackfin?
> Nothing that's not in x86, but some things you wouldn't find in more
> basic microprocessors like ARM7. The "count ones" instruction, which
> is is very useful for one optimisation that I made (briefly, by
> keeping both the input signal and software-generated reference signals
> in 1-bit format you can multiply 32 samples at a time with an XOR
> instruction and compute the resulting sum with count ones).
> Acquisition uses FFT, which can be fixed or floating point, and MAC is
> useful for that.
> If you have a processor with enough free capacity, you could avoid using
> the Blackfin DSP and then you'd just need the small front end board.
> Right now the 500MHz Blackfin DSP is at about 75% CPU usage when
> tracking 12 satellites with a bunch of clever coding tricks and -O2
> but no assembler.
> The last time I had it running on a PC, my C code was using about 8%
> cpu usage tracking 8 satellites on an intel core 2 duo 2.2GHz (only
> using one core). I had made no effort to optimize it for that CPU.
> Do you think it is possible to hookup an RF IC like SE4120L directly to
> the Ingenic XBurst CPU in our Ben NanoNote, say if it runs at 600 MHz
> like the Blackfin?
> It will probably run fine on any decent 600MHz chip. The Blackfin is
> just what I had to hand. I wanted something smaller than a PC. The
> XBurst SIMD stuff might be useful. There are also various tricks you
> can use to get the usage down further, like rotating between satellites
> or skipping some correlation periods for satellites that have strong
> One of the trickiest parts is probably the low-level interfacing to
> get the digital IF data into the CPU/memory. At a very quick glance
> of the datasheet it looks like the SPI port on the JZ4720 might be
> suitable. The CPU needs to act as an SPI slave and not mind the
> slightly nonstandard timing (0 time delay between last falling edge of
> SCLK and rising edge of SYNC/~CS)
I wish Henry great success with his project, and hopefully he will get
permission to release some good source codes under GPL... Meanwhile we
can start exploring this area too.
More information about the discussion