Vaporlight:Firmware flashen

aus dem Wiki des Entropia e.V., CCC Karlsruhe
Wechseln zu: Navigation, Suche

Zutaten

Software

  • OpenOCD
  • Einen GCC-ARM-Crosscompiler
  • Das Vaporlight-Repo ([1])

Hardware

  • Den Inhalt der Lötkellerkiste namens "andi/vaporlight-development"
  • Ein Vaporlight-Controllerboard (wahlweise schon ins Modul eingebaut)
  • falls das Board noch nicht im Modul ist: ein Labornetzteil mit Krokoklemmenkabeln

Vorbereitungen

Im Repo liegt die Datei config/openocd/vaporlight.cfg. Diese Datei nach /usr(/local)?/share/openocd/scripts/board/vaporlight.cfg kopieren.

Jetzt die Firmware compilieren. Dazu im Repo nach vaporware/led-boards/ gehen, das Makefile an den installierten Crosscompiler anpassen und make aufrufen. Verifizieren, dass die Datei led-board.hex erzeugt wurde.

Alles anschließen

Erleuchtungsgefahr: Bei den folgenden Schritten können sich wegen fehlender Initialisierung des Controllers die LEDs anschalten. Nicht direkt hineinschauen.

Falls das Controllerboard in einem Modul verbaut ist, das Modul mit Strom versorgen. Ansonsten das Board selbst per Labornetzteil mit 5 V Gleichspannung versorgen. Der Anschluss für Versorgungsspannung ist das alleinstehende Lötpad auf der langen Seite des Moduls, die Anschlüsse für Ground sind die beiden Paare von Lötpads links und rechts davon (es reicht, einen Ground-Anschluss zu verbinden).

Am Programmer sollte ein Adapter auf einen sechspoligen Pfostenstecker angeschlossen sein, der auf einer der breiten Seiten mit einem weißen Streifen markiert ist. Diesen auf den gleich markierten Anschluss des Boards aufsetzen, sodass die Markierungen übereinanderliegen. Das andere Ende des Programmers per USB an den Rechner anschließen.

Flashen

OpenOCD starten

OpenOCD starten (könnte root-Rechte brauchen):

openocd -f interface/olimex-arm-usb-tiny-h.cfg -f board/vaporlight.cfg -d 2

Es erscheinen eine Menge Debug-Meldungen, die mit einem "Initializing PLDs..." abschließen sollten. Wenn OpenOCD das Board nicht finden kann ("Target not responding, polling again in $Zeit"), die Verkabelung überprüfen und wenn dort kein Fehler vorliegt, alles in allen möglichen Permutationen neustarten (irgendwann finden sie sich meistens).

Firmware flashen

Mit dem OpenOCD-Server verbinden:

telnet localhost 4444

Dort folgende Befehle absetzen und prüfen, dass sie ohne Fehler ausgeführt werden:

halt
flash write_image erase unlock /absoluter/pfad/nach/led-board.hex
reset

Der Controller sollte nun mit der neuen Firmware neustarten und nach einiger Zeit meckern, dass er nicht konfiguriert ist (die Debug-LED blinkt "NC" im Morsecode, also "–· –·–·"). Wenn die Debug-LED stattdessen regelmäßig, aber langsamer blinkt, ist etwas schiefgelaufen.

Fertig? RETURN