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, Thread 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 ● C «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.
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages27 Page
-
File Size-