Nastavení firmwaru
Tento návod popisuje, jak si na svém počítači připravit repozitář firmwaru STICKER, sestavit binární soubory, nahrát image debug (ten zapíná interaktivní konzoli shellu) a otevřít konzoli. Odtud začíná práce popsaná v části Přístup pro vývojáře.
Firmware zařízení STICKER je postavený na Zephyr RTOS. Návod popisuje přípravu vývojového prostředí (workspace), kompilaci binárních souborů release a debug, nahrání přes SWD a bezpečnostní model.
Bezpečnostní model a architektura firmwaru
Zařízení STICKER používá plochý aplikační image linkovaný přímo od začátku flash paměti:
- Žádný vzdálený bootloader ani FUOTA: Zařízení neobsahuje MCUboot ani oddíl DFU. Firmware nelze aktualizovat bezdrátově (FUOTA) ani přes NFC. Původní příkaz
enter_dfubyl záměrně odstraněn. - Žádná vzdálená útočná plocha: Image firmwaru nelze přes LoRaWAN ani NFC vyměnit, vrátit na starší verzi ani jinak upravit.
- Pouze fyzický přístup přes SWD: Přeprogramování nebo aktualizace firmwaru v terénu vyžaduje vždy fyzický přístup k programovacím ploškám SWD a sondu SEGGER J-Link (
make flash).
Co budete potřebovat
- Zařízení STICKER s fyzickým přístupem k SWD.
- Ladicí sonda SEGGER J-Link (připojení SWD) pro nahrání firmwaru a výstup konzole RTT.
- Hostitelský systém: Linux nebo macOS s nástroji Python 3, Git a CMake.
- Uživatelé NixOS / Nix: V kořeni repozitáře je soubor
shell.nix, který přesnix-shellautomaticky připraví toolchain ARM, J-Link a prostředí Pythonu.
- Uživatelé NixOS / Nix: V kořeni repozitáře je soubor
Příprava vývojového prostředí na počítači
Repozitář firmwaru je na github.com/hardwario/sticker-firmware a spravuje se nástrojem West (metanástroj projektu Zephyr).
1. Vytvoření workspace a virtuálního prostředí
mkdir sticker && cd sticker
python -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install west
2. Stažení firmwaru a modulů Zephyr SDK
west init -m https://github.com/hardwario/sticker-firmware.git
west update
west zephyr-export
west packages pip --install
3. Instalace doplňujících závislostí
pip install rttt
pip install protobuf grpcio-tools
west sdk install
Sestavení a nahrání firmwaru
Všechny příkazy pro kompilaci a nahrání firmwaru se spouštějí z adresáře app ve workspace firmwaru:
cd sticker/app
Cíle sestavení
| Příkaz | Popis |
|---|---|
make | Sestaví produkční image release; konzole shellu je kvůli maximální úspoře energie vypnutá. |
make debug | Sestaví image debug se zapnutou interaktivní konzolí shellu. |
make flash | Nahraje zkompilovaný binární soubor do zařízení přes J-Link SWD. |
make clean | Smaže výstupy sestavení a cache CMake. |
make rttt | Spustí interaktivní terminálovou konzoli RTT. |
make format | Naformátuje zdrojový kód pomocí clang-format. |
Sestavení a nahrání image debug:
make debug
make flash
Příkaz make flash spustí standardní west flash, který přepíše jen aplikační oddíl flash paměti. Nikdy nespouštějte úplné smazání čipu (west flash --erase ani J-Link mass erase), protože to vymaže nevolatilní úložiště (NVS) se sériovým číslem, secret key, claim tokenem a přístupovými údaji LoRaWAN.
Otevření konzole
Jakmile je nahraný image debug a připojená sonda J-Link, spusťte terminál RTT z adresáře app:
make rttt
Otevře se interaktivní příkazový řádek shellu, ve kterém můžete spouštět příkazy config, alarm, history, clock a ats.
V sestavení debug zůstává MCU aktivní, aby konzole RTT pohotově reagovala, a to zvyšuje odběr z baterie. Pokud na konzoli po dobu CONFIG_APP_DEBUG_AUTOSUSPEND_S (výchozí: 2 hodiny) neprobíhá žádná aktivita, zařízení přejde do hlubokého spánku. Konzoli znovu zpřístupníte resetem MCU nebo odpojením a připojením napájení. Produkčních sestavení release se to netýká; mezi intervaly měření přecházejí do hlubokého spánku okamžitě.