GPS
From ArmadeusWiki
This page will summarize informations to connect GPS modules to your Armadeus board.
Contents
Introduction
GPS stands for Global Positioning System and is intended to allow one to knows its localization on Earth quite accuratly. See this Wikipedia article for more informations. GPS receivers are generally driven through a low speed RS232 bus or USB.
RS232 modules
The following RS232 receivers were successfully tested:
- the GPS receiver of the APF27 Wireless extension & APF51Dev boards (uBlox)
- the GPS receiver of the Projet Aurore association. This autonomous receiver uses a standard NMEA GPS module that can be connected to the 3,3V RS232 port of your APF9328. All you need to do is to get the GND and TX signals out of this module and connect is to your GND and RX signals of your APF:
USB modules
These modules are mostly serial one with a RS232 <-> USB converter. None were tested yet.
APF51Dev
Configuration
$ make linux26-menuconfig
Device Drivers ---> Armadeus specific drivers ---> FPGA Drivers ---> [*] Board designs [*] board drivers for twin uarts design <M> board twin uarts <M> board irq manager
Usage
- Don't forget to put "Wireless" jumper J42 on your APF51Dev (near microSD connector) AND power on FPGA Bank 3 (with corresponding jumper J39).
- On APF51Dev, optionnal GPS module (like GSM/3G) is accessed through a serial port synthetized in APF51's FPGA. So it has to be "loaded" first. (Needed dual UARTs FPGA firmware can be found under armadeus-4.0 distribution in firmware/pod_scripts directory, with the POD script needed to regenerate it, and is by default installed in rootfs).
# load_fpga /lib/firmware/fpga/apf51_gsm_gps_firmware.bin
Once firmware loaded, drivers related to FPGA can be used :
# modprobe irq_ocore # modprobe 8250 Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled # modprobe twin_uarts_irq_mng # modprobe twin_uarts_16750 serial8250.0: ttyS0 at MMIO 0xb8000020 (irq = 320) is a TI16750 serial8250.0: ttyS1 at MMIO 0xb8000040 (irq = 321) is a TI16750
- Configure serial port:
If the /dev/ttyS[0-1] files don't exist, create it/them with mknod :
# mknod /dev/ttyS0 c 4 64 # mknod /dev/ttyS1 c 4 65
Then for a 38400 bauds communication (depending on GPS firmware 9600 bauds may be the default speed):
# export GPS_PORT=/dev/ttyS1 # stty -F $GPS_PORT raw -echo -echoe -echok 38400
APF27 Wireless (APW)
- Be sure to have correctly choosen the GPS option while configuring you Linux kernel for the APW. This will autoselect and activate corresponding serial port. Reflash your Linux kernel.
- Be sure that J3 jumper (near SIM card socket) is plugged in
- Configure GPS serial port (4 for Linux == UART5 for i.MX) of your APF27 (raw, no echo, 38400 bauds 8N1):
- Remark: depending on GPS firmware 9600 bauds may be the default speed
# stty -F /dev/ttySMX4 raw -echo -echoe -echok 38400
- Test it: you'll get NMEA frames:
# cat /dev/ttySMX4 $GPGSV,3,1,12,01,80,354,,02,32,070,38,04,13,037,09,09,14,146,*78 $GPRMC,164916.00,V,,,,,,,130709,,,N*7C $GPGGA,164916.00,,,,,0,00,99.99,,,,,,*6B
APF9328
- Configure Serial port 1 of your APF9328 (4800 bauds 8N1):
# stty -F /dev/ttySMX1 4800
- Power on your GPS module
- Test it: you'll get NMEA frames:
# cat /dev/ttySMX1 $GPGGA,000026.032,,,,,0,00,,,M,0.0,M,,0000*53 $GPGSA,A,1,,,,,,,,,,,,,,,*1E $GPRMC,000026.032,V,,,,,,,160406,,*2F $GPGGA,000027.032,,,,,0,00,,,M,0.0,M,,0000*52
NMEA Frames signification
- There is a small tool (under development) in target/demos/gps/ that can help you to understand how to parse some NMEA frames in your application.
- $GPGGA: Global Positioning System Fix Data
- $GPGLL: Geographic Position, Latitude/Longitude
- $GPGSA: GPS DOP and Active Satellites
- $GPGSV: GPS Satellites in View
- $GPRMB: Recommended Minimum Navigation Information
- $GPRMC: Recommended Minimum Specific GPS/TRANSIT Data
Troubleshots
- In case your Aurore GPS module is detected and then automatically removed from the USB stack when you plug it on your PC, try to uninstall brltty:
$ sudo apt-get remove brltty
Going further
- If you don't want to manually parse NMEA frames in your app or want to support different GPS receivers type, you'll probably be interested by the GPS daemon
Resources
- Datasheet of the GPS module used on Armadeus Systems APW
- Datasheet of the GPS module used by Projet Aurore
- Documentation sur le module GPS du projet Aurore