TomTom

From Navit's Wiki
Revision as of 21:01, 15 March 2010 by Xenos1984 (talk | contribs)
Jump to: navigation, search

Navit has not been successfully ported to TomTom yet. However, there is work in progress. I will scratch my experiences here and, hopefully, end up with some guide on porting Navit to TomTom.

TomTom hardware

Lots of information can be found at http://www.opentom.org.

Prerequisities

Before we can start, we need to set up a compiler toolchain targetting TomTom devices. TomTom provides a a pre-compiled compiler toolchain for Linux and Windows. It can be downloaded from TomTom's website: http://www.tomtom.com/page.php?Page=gpl. This file needs to be unpacked into /usr/local/cross.

In order to use the TomTom compiler and libraries, we need to set some environment variables:

export PREFIX=/usr/local/cross/gcc-3.3.4_glibc-2.3.2/arm-linux/sys-root
export CFLAGS="-mcpu=arm920t -O2 -I$PREFIX/include -I$PREFIX/usr/include"
export CPPFLAGS="-I$PREFIX/include -I$PREFIX/usr/include"
export LDFLAGS="-L$PREFIX/lib -L$PREFIX/usr/lib"

The toolchain is now ready for use.

Porting libraries

Several libraries need are needed by Navit and must be ported as well.

zlib

libxml2

libfontconfig

SDL

SDL_Image

tslib

glib

Porting Navit

Installing Navit

We can now put the compiled libraries and the Navit executable, as well as some config files and, of course, some maps, to a TomTom device. Connect the TomTom device to your computer. You should see a new hard drive. In the following, let's assume this hard drive can be found in /media/TOMTOM. We then need two directories on the TomTom disk, navit and SDKRegistry. If they don't exist yet, create them:

cd /media/TOMTOM
mkdir -p navit
mkdir -p SDKRegistry

Within the navit directory, create the following directories: bin, lib, and share.

cd navit
mkdir -p bin
mkdir -p lib
mkdir -p share

Now these directories have to be filled with content. Place all the libraries you just compiled in the lib directory. Be aware that TomTom uses a FAT file system which isn't aware of symlinks, so you will have to copy / rename libraries instead of symlinking them. Next, copy the images used by Navit to display POIs, as well as the navit config file into the share folder:

cp $PREFIX/share/navit/xpm share/
cp $PREFIX/share/navit/navit.xml share/

Put the Navit executable into the bin folder:

cp $PREFIX/bin/navit bin/

In order to run Navit, we need to create a short wrapper script, which will set a few environment variables before running Navit. Create a file named navit-wrapper in the bin directory with the following contents:

#!/bin/sh

cd /mnt/sdcard

# Set some paths.
export PATH=$PATH:/mnt/sdcard/navit/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/sdcard/navit/lib
export HOME=/mnt/sdcard/
export NAVIT_LIBDIR=/mnt/sdcard/navit/lib/navit
export NAVIT_SHAREDIR=/mnt/sdcard/navit/share

# tslib requirements.
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb
export TSLIB_TSDEVICE=/dev/ts
export TSLIB_CALIBFILE=/mnt/sdcard/navit/ts/pointercal
export TSLIB_CONFFILE=/mnt/sdcard/navit/ts/ts.conf
export TSLIB_PLUGINDIR=/mnt/sdcard/navit/lib/ts

# SDL requirements.
export SDL_MOUSEDRV=TSLIB
export SDL_MOUSEDEV=$TSLIB_TSDEVICE
export SDL_NOMOUSE=1
export SDL_FBDEV=/dev/fb
export SDL_VIDEODRIVER=fbcon

# Set language.
export LANG=en_US.utf8

# Run Navit.
/mnt/sdcard/navit/bin/navit /mnt/sdcard/navit/share/navit.xml 2>/mnt/sdcard/navit/navit.log

The first few lines tell Navit where it can find binaries, libraries, plugins and map icons. The middle part tells tslib which touchscreen device to use, and where to place calibration data. The following lines tell libSDL to use the touchscreen as mouse input, to hide the mouse pointer and to use the framebuffer. Finally, we set Navit's language and run the Navit executable. stderr is redirected into a log file, since there is usually no console available to view debugger output.

In order to start Navit from TomTom's graphical menu, we finally have to add a menu button. Create a file named navit.cap with the following contents in /media/TOMTOM/SDKRegistry:

Version|100|
AppName|navit-wrapper|
AppPath|/mnt/sdcard/navit/bin/|
AppIconFile|navit.bmp|
AppMainTitle|Navit|
AppPort||
COMMAND|CMD|hallo|navit.bmp|Navit|

In the same directory, place a simple 48 * 48 pixel, 24 bit bitmap file named navit.bmp with a fance Navit icon or whatever you like. If you are happy without such an icon, you can omit this step and delete the two "navit.bmp" entries from the file above:

Version|100|
AppName|navit-wrapper|
AppPath|/mnt/sdcard/navit/bin/|
AppIconFile||
AppMainTitle|Navit|
AppPort||
COMMAND|CMD|hallo||Navit|

Now all necessary files are on your TomTom device.

Configuring Navit

Running Navit