Zephyr-RTOS Übersicht und Status

ECC 1. Juni 2021, © Markus Kappeler

About me

● Markus Kappeler ● 25 years in business ● Soft- and Hardware development ● Founder of bytesatwork ● Sailing, Skiing Hiking and Mountain-Biking

Agenda

● Zephyr

● Was ist Zephyr ● Features ● Roadmap ● RTOS – Realtime ● Footprint ● Bootloader mcuboot

Zephyr Project

● Opensource Realtime Betriebsystem ● Lebendige Community ● Mehrere Architekturen ● Modular und Konfigurierbar ● Bereit für Produkt-Entwicklung

Zephyr Hardware Architekturen

Zephyr Projekt Mitglieder

Februar 2016 2021

Upstream commits last year Momentum 2016 2021 Entwickler 80 969 Commits 2806 52591 Boards 4 250+ Zephyr Board-Unterstützung

Siehe auch: https://docs.zephyrproject.org/latest/boards/index.html

Zephyr Ecosystem

Kernel / HAL Zephyr OS Zephyr “Community” • Scheduler • Kernel objects und services • Kernel und HAL Zephyr Project • low-level Architektur und BSP • OS Services wie IPC, Logging, file • Power Management und low level systems, crypto Interfaces zur Hardware Zephyr Project OS Services and Low level APIs • Plattform spezifische Treiber Zephyr OS • Generisches I/O API • SDK, Tools und Kernel / HAL Entwicklungsumgebung • File systems, Logging, Debugging und IPC • Zusätzliche Middleware OS Services • Cryptography Services • Device Management und Application Services Bootloader • Networking und Connectivity Application Services Zephyr Community • High Level APIs • Zugang zu standardisierten Daten • 3rd Party Module und Bibliotheken Modellen • Support für Zephyr in 3rd Party • High Level Netzwerk Protokoll Projekte: Jerryscript, Micropython, Iotivity

Architektur

● Cooperative und Pre-emptive Threading ● Speicher wird typischerweise statisch alloziert, auf Heap auch möglich ● Memory Protection: stack overflow Protection, Kernel object und Driver tracking, isolation ● Integrierte Device Driver Schnittstelle ● Native und integrierter Netzwerk Stack ● BLE 5.2 controller und host, BLE Mesh ● USB 2.0 ● Tolerante Lizenz

Native IP stack

● Neu implementiert ● Dual Mode IPv4 / IPv6 ● Mehrere Interfaces ● Time Sensitive Network (TNS, PTP) ● BSD-socket basiertes API

● raw socket ● Compliance und Security-Tested

● > 500 automatisierte Tests

Zephyr Networking Features

High-Level Protokolle Unterstützte Schnittstellen Netzwerk Management • CoAP v1 • Ethernet ● Statische IP oder DHCP • Ethernet over USB ● hostname • MQTT Client v3.1.1 • WiFi ● net shell Commands • HTTP • IEEE 802.15.4 with 6Lo ● API mit Event-Callbacks • HTTP Server • Bluetooth LE with 6Lo • Native HTTP Client • CANbus • Websocket Client • PPP • SOCKS5 • LWM2M • Thread • OpenThread Project

Zephyr Bluetooth Features

● Bluetooth 5.2 compliant

● Low Energy & Bluetooth Classic

● Multiple HCI transports

● Qualified for LE and Mesh

● Aktive Community entwickelt an neuen Standards

● Mesh & GATT Referenz Stack in Bluetooth SIG

● Unterstützung von mehreren BLE HW

● Nordic mit ARM Cortex-M

● Vegaboard mit RISC-V

● Viele Optimierungen in den letzten Releases

● Latency, CPU und Power consumption

Zephyr USB Device Stack

● Implementationen für mehrere MCU (STM32, Kinetis, nRF, SAM, ..)

● USB 2.0 Unterstützung

● Full und High-speed

● Unterstützte Klassen

● CDC ACM, ECM und EEM

● RNDIS

● HID

● Mass storage

● Bluetooth

● Device Firmware Update (DFU)

● WebUSB

Zephyr ist unter Apache 2.0 Lizenz

● Man darf Software unter dieser Lizenz frei in jedem Umfeld verwenden, modifizieren und verteilen. ● Eine Kopie der Lizenz muss dem Paket beiliegen. ● Änderungen am Quellcode der unter der Apache- Lizenz stehenden Software müssen nicht zum Lizenzgeber zurückgeschickt werden. ● Eigene Software, die unter Apache-Lizenz stehende Software verwendet, muss nicht unter der Apache- Lizenz stehen.

Zephyr Roadmap

● LTS ist v1.14.

● > 2 jährig

● Aktuell v2.5

● Next v2.6 ist rc1

● v2.7 soll LTS2 werden

● 2 Jahre Support

Zephyr RTOS - Realtime

● Aussage über Interrupt – Contextswitch jitter ● Test mit GPIO und Oszilloskop

● GPIO Input Interrupt triggert GPIO Output ● Input via Frequenz-Generator ● Task wartet blockiert auf Semaphore ● GPIO Interrupt setzt Semaphore ● Task bekommt Semaphore und setzt GPIO Output

Zephyr RTOS - Realtime

Zephyr RTOS - Realtime

● Test mit einem 150MHz getakten Cortex-M4 ● Context Switch mit Semaphore: 5.3 uSec ● Input via message-queue in Task übergeben: 6.3 uSec

Zephyr RTOS - Realtime

● Verteilung bei 10000 Input-Events – small deviation

Linux RT-Patch

● Vergleich cyclictest mit iMX6 @998MHz mit RT-Patch

Zephyr Footprint

STM32f474 – 512KB flash and 128KB RAM

«hello world» ca. 12KB Flash

● C++ mit allen Features > 225KB

Zephyr Bootloader

● Zephyr unterstützt mcuboot

● Signierte Images (Public Key in ROM) ● Rückgängig machbare Updates (test, confirm) ● 2 Slots: aktiv ● Device-Management via

● mcumgr : go Cmd-Line Programm ● hawkbit: Update Server von Eclipse ● newtmgr: Apache mynewt ● Ziel ist Secure-Boot

Zephyr mcuboot

● Im Projekt einschalten CONFIG_BOOTLOADER_MCUBOOT=Y ● Flash Partitionen eintragen in devicetree

● Boot Partition für MCU-Boot ● Slot-0 für aktive Applikation ● Slot-1 für neue Version ● Scratch Partition für Swap

Zephyr mcuboot

● Build und Installation von mcu-boot

● west flash –hex-file mcubuild/zephyr/zephyr.hex ● Build, Signierung und Installation von Applikation

● west sign -t imgtool --no-bin -H orig.hex --key mykey.pem --version 1.0.0 ● west flash --hex-file orig.hex

Zephyr mcuboot

● Devicemanagement via smp: simple management protocol ● smp unterstützt Transports für:

● UART ● UDP ● BLE ● Signierung der Applikation via west Command

● west sign -t imgtool --no-hex -B next.bin --key mykey.pem --version 1.1.0 ● Installation in slot-1 via Host-Tool mcumgr

Zephyr Links

Doku:

● https://docs.zephyrproject.org/latest/

● https://www.zephyrproject.org/developer-resources/#how-to-contribute

● https://docs.zephyrproject.org/latest/contribute/index.html

● Github: https://github.com/zephyrproject-rtos/zephyr

● Mail Liste: https://lists.zephyrproject.org/g/main

● Slack: https://tinyurl.com/y5glwylp

Ein Mitglied der

Vielen Dank an - Kate Stewart von der Linux Foundation Ein Teil der Präsentation basiert auf ihren Slides [email protected] http://www.bytesatwork.io