====== Hacking the Formica firmware =====
===== Things you need =====
Alle benötigte Software kann auch mittels [[https://github.com/muccc/formica_environment/raw/master/formicadev.sh|diesem Script]] installiert werden.
* Programmer [[http://www.ti.com/general/docs/lit/getliterature.tsp?literatureNumber=slau176d&fileType=pdf|eZ430]] (zB von lilafisch)
* mspgcc(4) http://mspgcc.sourceforge.net bzw. http://mspgcc4.sourceforge.net
* msp430-gdbproxy (fetproxy tat leider im letzten Test noch nicht)
* einen aktuellen [[git://github.com/lilafisch/formica_muc3.git|Source-Tree]]
* ti_usb_3410_5020 Modul im Kernel (nur für Kernelselbstkompilierer interessant)
* ~/.gdbinit mit folgendem Inhalt anlegen:
set remoteaddresssize 64
set remotetimeout 999999
target remote localhost:2000
==== Sourcescode ====
Die Hardware wurde von dem Team aus England weiterentwickelt, so dass deren [[git://gitorious.org/formica/firmware.git|aktuelle Firmware]] nicht mehr zu den hier verwendeten Robotern passen.
Die alte Firmware findet sich in ihrem Repository im Zweig rev1; dieser Zweig wird nun als main in dem oben verlinkten Repository weiterbearbeitet.
Zum Testen der einzelnen Funktionen der Formica gibt es einen eigenen Branch tests.
==== Anschluesse des Programmers ====
* Formica: P1: VCC entspricht Pin1 (VCC) auf dem ez430
* Formica: P2: GND entspricht Pin4 (GND) auf dem ez430
* Formica: P3: RST entspricht Pin3 (SBWTDIO) auf dem ez430
* Formica: P4: TEST/SBWTCK entspricht Pin 2 (SBWICK) auf dem ez430
===== Who to ask =====
* lilafisch
* bsx
===== source in umgebung laden =====
* source /pfad.../tools/bin/setenv.sh
===== Build it =====
* make im Firmware-Verzeichnis
* Ergebnis sind zwei ELF-Binaries main und main-top
===== Flash it =====
- ez430-Programmer anstecken und Roboter in den Programmer einspannen
- gdbproxy starten:
msp430-gdbproxy --port=2000 msp430 --spy-bi-wire /dev/ttyUSB0
- mit gdb den Code auf den Chip laden und das debuggen anfangen (For further reference: http://mspgcc.sourceforge.net/manual/c1531.html):
% msp430-gdb main
$ monitor erase all
$ load main
$ break main
$ c
bei gdb kann der Fehler auftreten dass kein Befehl (zB moitor) ausgefuehrt wird, dies lies sich bisher mit folgender zeile (in gdb) beheben:
target remote localhost:2000
===== Hack it =====
* einfach mal in main.c mit dem Source lesen anfangen ;)
* TBD