My first contact with the SkyTraq Venus 6 was in 2010, when i bought the Navin miniHomer (my personal "Gadget Of The Year 2010") from the german distributor ZNEX. The miniHomer containes a derivative of the Venus 6 series (Venus621bLP). Fascinated by the chip, i ordered the suggested Venus638FLP evaluation kit (EVK), the software development kit (SDK) and some "bare" Venus638FLPx-L chips in LGA69 package (10mm x 10mm x 1,3mm).
The shipping of the kit was very fast (3 days from Taiwan to the destination). The customs formality and paperwork was done by the carrier FedEx, importation VAT has to be paid for the kit.
Fig. 1: Top view of my Venus368-EVK (modified)
After some analysis of the EVK, i did some modifications:
At the 30-pin header a Honeywell HMC6352 compass chip on a Sparkfun breakout board is connected.
Fig. 2: Bottom view of my Venus368-EVK (modified)
The SDK and API documentation is very slim. Therefore i did a complete rework of the SDK (SkyTraq kernel 1.6.0), reorganized andreformatted all the code and added Doxygen comments.
Additionally i ported the AVR FAT32 package to the Venus638 and added some low-level I2C routines ("bit-bang" mode for Venus634 compatibility, and also hardware I2C functions for the Venus638)and some high-level routines for the Honeywell HMC6352 compass IC.
The modified and extended sources, packed as STI_GPS_ModTG_v0.0.2.zip can be downloaded and used in own projects (send an with a little description of your project to get the password. Made for SkyTraq kernel 1.6.0, no kernel libs included).
A Cadsoft EAGLE library SkyTraq_Venus63x.lbr provides schematic symbols and layout footprints (created with Eagle 5.11.0).
While doing some experiments with the EVK and SDK, i collected some things about that stuff, that can be found in the next section. Maybe this will help others to avoid pitfalls and puzzling about some things in the SDK...
C:\ +---opt +---SDK.pdf +---STI_GPS | +---obj | +---lib | +---dep | \---bin +---sparc-elf-3.4.4-mingw | +... | \... \---GnuWin32 +... \...
C:\opt\STI_GPS>make clean The result should be: rm -f obj/* dep/* bin/* C:\opt\STI_GPS>make The result should be similar to that: sparc-elf-gcc -MMD -MG -Wall -c -g -DNDEBUG -funswitch-loops -fweb -frename-regi sters -mv8 -msoft-float -I../kernel/inc main.c sparc-elf-gcc -MMD -MG -Wall -c -g -DNDEBUG -funswitch-loops -fweb -frename-regi sters -mv8 -msoft-float -I../kernel/inc spi.c sparc-elf-gcc -MMD -MG -Wall -c -g -DNDEBUG -funswitch-loops -fweb -frename-regi sters -mv8 -msoft-float -I../kernel/inc nmea.c sparc-elf-gcc -MMD -MG -Wall -c -g -DNDEBUG -funswitch-loops -fweb -frename-regi sters -mv8 -msoft-float -I../kernel/inc uart_intf.c sparc-elf-gcc obj/*.o lib/*.o lib/kernel.lib -mv8 -msoft-float -Ttext=0x4000000 0 -lm -o bin/soc sparc-elf-mkprom -Tdata=0x60000000 -freq 50 -rmw -romws 5 -ramwidth 16 -ramrws 3 -ramwws 3 -stack 0x60013fe0 -baud 38400 -msoft-float -mv8 obj/main.o obj/spi.o obj/nmea.o obj/uart_intf.o lib/gps_main.o lib/uart.o lib/binmsg.o lib/pll_clock. o lib/flash.o lib/lte_flash.o lib/logdata.o lib/set_system.o lib/kernel.lib LEON MKPROM prom builder for BCC v1.0.29c Copyright Gaisler Research 2004, all rights reserved. Section in rom detected, switching off compression : : creating LEON3 boot prom: prom.out 1 Datei(en) kopiert. mv prom.out bin sparc-elf-objcopy -O binary bin/prom.out bin/prom.bin sparc-elf-objdump -d -S bin/prom.out > bin/prom.asm rm -f tmp.out rm -f bin/prom.out
: $(LD) $(OBJ_DIR)... $(MKPROM) -Tdata=0x6... size prom.out sparc-elf-readelf -a prom.out >> prom.map mv prom.out $(BIN_DIR) mv prom.map $(BIN_DIR) sparc-elf-objcopy -O binary $(BIN_DIR)/prom.out $(BIN_DIR)/prom.bin sparc-elf-objdump -d -S $(BIN_DIR)/prom.out > $(BIN_DIR)/prom.asm rm -f tmp.out rm -f $(BIN_DIR)/prom.out :
U08 BMSG_user_reply_sw_version(U08 *buf, U08 *repbuf) { U08 retVal = FALSE if ( buf[0] == 1 ) { U08 ndx = 1; // reserve ndx=0 for internal assigned reply id retVal = TRUE; repbuf[ndx++] = buf[0]; repbuf[ndx++] = 0; repbuf[ndx++] = (U08)1; repbuf[ndx++] = (U08)2; repbuf[ndx++] = (U08)3; repbuf[ndx++] = 0; repbuf[ndx++] = (U08)4; repbuf[ndx++] = (U08)5; repbuf[ndx++] = (U08)6; repbuf[ndx++] = 0; repbuf[ndx++] = (U08)7; repbuf[ndx++] = (U08)8; repbuf[ndx] = (U08)9; } return retVal; } U08 BMSG_user_configure_gpio(U08 *buf, U08 *repbuf) { U08 gpio_num = buf[0]; U08 data = buf[1]; if ( data == 1 ) gpio_high(gpio_num); else gpio_low(gpio_num); return TRUE; } //currently 0x51~0x6F, 0x95~0xa7, 0xf2~0xff are not used, others are used internally #define USER_QUERY_SW_VERSION_ID 0x51 #define USER_REPLY_SW_VERSION_ID 0x95 #define USER_SET_GPIO 0x52 U08 BMSG_UserDefine(U08 reqID,U08 *reqbuf,U08 *repID,U08 *repbuf,U16 *replen) { U08 retval = FALSE; *repID = 0; *replen = 0; switch(reqID) { // example: set and need to reply case USER_QUERY_SW_VERSION_ID: retval = BMSG_user_reply_sw_version(reqbuf, repbuf); *replen = 14; //this is the same format as the skytraq query sw version *repID = USER_REPLY_SW_VERSION_ID; break; // example: set only case USER_SET_GPIO: retval = BMSG_user_configure_gpio(reqbuf, repbuf); break; } return retval; }
© 2017-2020 Thorsten Godau DL9SEC • Powered by ALL-INKL.COM • Favicon by Icons8
© 2016 Static Flat Ui kit. All rights reserved | Design by W3layouts