Zum Inhalt

Dokumentation

Firmware, Installation und Flashing

Erstprogrammierung, Feldupdate, Runtime-Installation und Recovery.

Firmware, Installation und Flashing

Drei Dinge unterscheiden

Beim BE-IIS-HPP-LIN gibt es drei getrennte Softwarebestandteile:

  1. mboot – Bootloader für Firmware-Updates,
  2. MicroPython-Firmware – STM32-Firmware mit nativen LIN- und Runtime-Modulen,
  3. 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.