====== 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