Hoe u Zephyr-gebaseerde IoT-apparaten debugt: bewezen praktijken voor remote monitoring
Het Zephyr Open Source Project van de Linux Foundation is de hoeksteen voor talloze IoT-oplossingen geworden. Met een lichtgewicht, schaalbaar, real-time besturingssysteem (RTOS) ontworpen voor bron-beperkte apparaten, ondersteunt Zephyr een breed spectrum aan architecturen – ARC, Arm, Intel, Nios, RISC-V, SPARC, Tensilica – en meer dan 250 boards. Tegenwoordig telt het project 1.000 bijdragers en 50.000 commits, en breidt zijn multi-architectuur bereik continu uit.
Ontwikkelen voor Zephyr vereist aandacht voor betrouwbaarheid. Problemen die in het lab opduiken, verdwijnen vaak pas wanneer apparaten schalen of wanneer netwerkstacks evolueren. Een robuuste strategie voor remote monitoring en debugging is essentieel om problemen te detecteren, diagnosticeren en op te lossen voordat ze leiden tot kostbare downtime.
Overweeg ons werk met GPS-trackers voor veemonitoring. Elke halsband moest naadloos functioneren over meerdere cellulaire netwerken, landen en roaming-zones. Onverwachte stroomverbruik door misconfiguratie zou tot significante economische verlies leiden. We moesten niet alleen het probleem signaleren, maar de root cause begrijpen en een fix deployen – vandaar de behoefte aan real-time, remote observeerbaarheid.
We combineerden Zephyr met Memfault, een cloud-gebaseerd device observability platform, om een monitoring stack te bouwen die firmware-updates, reboots, watchdogs, faults, asserts en connectiviteitsmetrieken dekt.
Een observability-platform opzetten
Memfault stelt ontwikkelaars in staat om apparaten remote te monitoren, debuggen en firmware-wijzigingen uit te rollen, wat mogelijk maakt:
- Vleugelmatige productierollouts die bevriezingen voorkomen
- Continue gezondheidsmonitoring van device-flotten
- Zero-downtime patches geleverd voordat gebruikers een hickup merken
De integratie van de Memfault SDK in Zephyr is eenvoudig: voeg de module toe aan uw west.yml manifest en schakel het in in prj.conf.
# west.yml [ ... ] - name: memfault-firmware-sdk url: https://github.com/memfault/memfault-firmware-sdk path: modules/memfault-firmware-sdk revision: master # prj.conf CONFIG_MEMFAULT=y CONFIG_MEMFAULT_HTTP_ENABLE=y
1️⃣ Focus op reboots
Toegenomen reset-frequenties zijn vaak het eerste teken van een dieper liggend probleem – hardwaredegradatie, firmware-bugs of netwerkanomalieën. Door te onderscheiden tussen hardware- en softwareresets, kunt u bepalen of een fout wijdverspreid is of geïsoleerd tot een subset van apparaten.
Reden registreren vóór een reboot
void fw_update_finish(void) { // … memfault_reboot_tracking_mark_reset_imminent(kMfltRebootReason_FirmwareUpdate, ...); sys_reboot(0); }
Zephyr behoudt een door de gebruiker gedefinieerde regio over resets heen; Memfault haakt hierin om de reboot-context vast te leggen. Na een reboot registreert u een init-handler om de hardware reset-reden uit te lezen en naar de cloud te sturen.
static int record_reboot_reason(void) { // 1. Lees hardware reset-reden register (raadpleeg MCU datasheet) // 2. Vang software reset-reden op uit noinit RAM // 3. Stuur data naar server voor aggregatie } SYS_INIT(record_reboot_reason, APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT);
Voorbeeld: een voedingsdefect kan zich manifesteren als duizenden reboots in een korte periode. Figuur 1 toont een vloot waar 99% van de 12.000 reboots per dag toegeschreven worden aan slechts tien apparaten – waarschijnlijk een mechanisch of batterijprobleem. Firmware-updates kunnen dergelijke problemen mitigeren, maar remote monitoring laat u ze detecteren en aanpakken voordat ze cascaderen.

Figuur 1: Voedingsprobleem, Reboots over 15 dagen. (Bron: Auteurs)
- 12K apparaatreboots per dag – te veel
- 99% van reboots van 10 apparaten
- Mechanisch defect veroorzaakt constante resets
2️⃣ Watchdogs benutten
Watchdogs zijn uw laatste verdedigingslijn tegen vastlopers – of geblokkeerde netwerkstacks, oneindige lussen, deadlocks of geheugencorruptie. Zephyr biedt een geünificeerde watchdog-API die hardwareverschillen abstraheert.
void start_watchdog(void) { struct device *s_wdt = device_get_binding(DT_LABEL(DT_INST(0, nordic_nrf_watchdog))); struct wdt_timeout_cfg wdt_config = { .flags = WDT_FLAG_RESET_SOC, .window.min = 0U, .window.max = WDT_MAX_WINDOW, }; s_wdt_channel_id = wdt_install_timeout(s_wdt, &wdt_config); const uint8_t options = WDT_OPT_PAUSE_HALTED_BY_DBG; wdt_setup(s_wdt, options); } void feed_watchdog(void) { wdt_feed(s_wdt, s_wdt_channel_id); }
Voor de Nordic nRF9160 is de typische workflow:
- Configureer de device tree voor de watchdog.
- Stel parameters in via de API.
- Installeer de watchdog.
- Voer hem periodiek; een gemiste feed triggert een reboot en een Zephyr fault handler.
Memfault vangt de pre-reset staat op, zodat u terug kunt traceren naar de schuldige codepad. Voorbeeld: een SPI-driver die na 16 maanden deployment vastloopt, wordt onthuld door een watchdog-geïnitieerde fault. Figuur 2 illustreert de timeline en degradatie, terwijl Figuur 3 de fault-handler register dump toont.

Figuur 2: SPI Driver Stuck Voorbeeld. (Bron: Auteurs)

Figuur 3: Fault Handler Voorbeeld, Register Dump. (Bron: Auteurs)
3️⃣ Faults en asserts afhandelen
Wanneer een assert of fault triggert, vangt Zephyr's fault handler de CPU-staat op. Memfault haakt naadloos in deze flow, en persisteert registers, kernel-context en een snapshot van alle actieve taken naar de cloud.
void network_send(void) { const size_t packet_size = 1500; void *buffer = z_malloc(packet_size); // Ontbrekende NULL-check leidt tot fault memcpy(buffer, 0x0, packet_size); } bool memfault_coredump_save(const sMemfaultCoredumpSaveInfo *save_info) { // Sla registerstaat, kernel & task contexts, geselecteerde .bss/.data op } void sys_arch_reboot(int type) { // … }
Belangrijkste diagnostiek omvat:
- De Cortex-M fault status register geeft de oorzaak aan.
- Memfault herstelt de exacte codelijn en omringende task-staten.
- De
_kernelstructuur onthult scheduler-status en, voor verbonden stacks, Bluetooth of LTE-parameters.
4️⃣ Apparaatmetrieken bijhouden
Metrieken geven u een kwantificeerbaar beeld van vlootgezondheid. Veelvoorkomende waarden zijn CPU-load, connectiviteitsmetrieken en thermische data. Memfault's SDK laat u metrieken declareren en rapporteren met minimale code.
- Definieer een metriek
MEMFAULT_METRICS_KEY_DEFINE( LteDisconnect, kMemfaultMetricType_Unsigned)
- Update in code
void lte_disconnect(void) { memfault_metrics_heartbeat_add( MEMFAULT_METRICS_KEY(LteDisconnect), 1); // … }
Memfault's cloud backend aggregateert metrieken per apparaat en firmwareversie, met een web UI om flotten te vergelijken en alerts te triggeren. Typische use cases:
- NB-IoT/LTE-M connectiviteit: monitor modem power states om batterijimpact te schatten.
- Cell-tower events en PSM timing: identificeer signaal-kwaliteit hotspots die stroom trekken.
- Grote-vloot telemetrie: spot outliers en onverwachte data-pieken.

Figuur 4: Metrieken volgen voor Device Observability – NB-IoT Voorbeeld, LTE-M Data Grootte. (Bron: Auteurs)
- UDP data grootte per zendinterval.
- Data piek na reboot.
- Grote packets duiden op ingesloten traces of diagnostiek.
- Gebruik metrieken om data-gebruik en kosten te sturen.
Conclusie
Door Zephyr te integreren met Memfault, verkrijgen ontwikkelaars een krachtige, end-to-end observability stack. Focus op vier pijlers – reboots, watchdogs, faults/asserts en connectiviteitsmetrieken – en u zet een vloot apparaten van ondoorzichtige black boxes om in transparante, beheersbare systemen. Voor diepere inzichten, bekijk de opgenomen presentatie van de Zephyr Developer Summit 2021.
Internet of Things-technologie
- Marketing Voor De Productiesector: Bewezen Best Practices Voor 2019 Succes
- Top toepassingen voor gecomprimeerde lucht systemen in diverse industrieën
- Synthetische Monitoring Meesteren: Bewezen Best Practices Voor Betrouwbare SaaS- & Webprestaties
- Essentiële Beveiligingspraktijken voor Fog Computing
- Cisco 1G Bidirectionele Transceivers: Service Provider en IoT Netwerkefficiëntie Boosten
- ETSI stelt nieuwe standaarden voor IoT in noodcommunicatie
- IIC & TIoTA Samenwerken voor Sterkere IoT-beveiliging en Blockchain-standaarden
- NIST Publiceert Concept-richtlijnen Voor Sterkere IoT-apparaatbeveiliging Voor Fabrikanten
- Atmosic en SMK bundelen krachten voor ultra-langlevende IoT-apparaten
- Waarom IoT Essentieel Is voor Asset Management: Top 3 Voordelen
- IoT: Het Leidende Platform voor Nauwkeurige Milieumonitoring