Firmware, Installation und Flashing
Erstprogrammierung, Feldupdate, Runtime-Installation und Recovery.
Drei Dinge unterscheiden
Beim BE-IIS-HPP-LIN gibt es drei getrennte Softwarebestandteile:
- mboot – Bootloader für Firmware-Updates,
- MicroPython-Firmware – STM32-Firmware mit nativen LIN- und Runtime-Modulen,
- Runtime-Anwendungen – Python-Apps und Instanzkonfiguration im STM32-Dateisystem.
Ein normales Firmware-Update ersetzt nicht automatisch die Runtime-Anwendungen.
Build vorbereiten
bash scripts/prepare.sh
make host
make test
Erstprogrammierung über SWD
Bootloader und Application bauen:
make firmware-all
Mit ST-Link/OpenOCD programmieren:
make flash-swd
Dieser Weg ist für die Erstprogrammierung und Low-Level-Recovery gedacht.
Firmware-Update über I²C
Nur Application bauen:
make firmware
Wenn kein Daemon läuft:
beiis-lin --direct flash \
build/micropython/ports/stm32/build-BEIIS_LIN_HAT/firmware.bin
Alternativ:
make flash-i2c
Firmware-Update bei laufendem Daemon
Wenn beiis-lind bereits den I²C-Endpunkt besitzt, nicht parallel mit --direct zugreifen.
Stattdessen:
beiis-lin flash \
build/micropython/ports/stm32/build-BEIIS_LIN_HAT/firmware.bin
Der Dateipfad wird dabei vom Daemon auf demselben Linux-System geöffnet.
Standard-Runtime installieren
Nach einer Firmware, die die 16-Slot-Runtime unterstützt:
python scripts/install-standard-runtime.py
Das Skript installiert:
query.py
lin_native.py
logging_native.py
und erzeugt die Standard-Slots 0 bis 8.
Bleiben Runtime-Apps beim Flash erhalten?
Ja. Ein normales mboot-Application-Update programmiert den Application-Bereich. Das MicroPython-Dateisystem mit:
/flash/beiis/apps/
/flash/beiis/instances.json
liegt außerhalb dieses Bereichs und bleibt erhalten.
Die Standard-Runtime muss deshalb nicht nach jedem normalen Firmware-Update neu installiert werden.
Direkter MicroPython-Zugriff
Die persistente Runtime besitzt normalerweise den MicroPython-Interpreter.
Für Low-Level-Debugging kann sie gestoppt werden:
from beiis_lin.client import DaemonClient
c = DaemonClient()
c.runtime_call("runtime_stop")
Danach können Raw-REPL- und direkte lin-Befehle verwendet werden.
Recovery
Wenn eine fehlerhafte Application den normalen Updatepfad blockiert, bleibt SWD/ST-Link der unabhängige Recovery-Weg.
Für Entwicklungsboards empfiehlt es sich deshalb, SWDIO, SWCLK und GND zugänglich zu halten.