Appearance
1. Intro
1
Ziele #
- Embedded Betriebsysteme verstehen
- Praktische Anwendung mit Embedded Linux
- Linux OS für Applikationen Nutzen
- Hardware nahe Programmierung
- IoT, TCP/IP, Wireguard,
- Linux in der Cloud
16.05.2023
1. Intro
2
Ziele Linux #
- Kirtierien zur Auswahl eines OS
- Architektur von Linux
- Bootvorgang
- Root File System
- Distributionen / Embedded SW Stack
- Hardware Abstraction + Gerätetreiber
- Virtual Memory
- Filesysteme und Virtual File Systems
- Realtimefähigkeit
16.05.2023
1. Intro
3
Dev Environment #
- Linux auf Hostsystem (nativ)
- z.B. auf altem Notebook
- min 2GB RAM / 64 Bit CPU
- Dual Boot besser nur bei UEFI
- Bei MAC unproblematisch
- Linux virtualisiert (als Guest)
- Virtualbox / Parallels
- min. 60GB freier Diskspace
- 4GB RAM
- Ubuntu LTS
- ... andere Distro mit entsprechendem know-how
16.05.2023
1. Intro
6
Zugriff auf Hardware #
- SysFS
- Device FS
- Peripherie mit Device Tree Binding
- Raspberryp Pi + Pi Sense Hat
16.05.2023
1. Intro
8
Literatur / Referenzen #
- Linux Device Drivers 3rd Edition
- https://lwn.net/Kernel/LDD3
ISBN 978-0596529680
- Building Embedded Linux Systems Concepts, Techniques, Tricks, and Traps 2nd Edition
ISBN 978-0596529680
16.05.2023
1. Intro
11
Raspberry Pi 4 #
- ARMv8 Cortex-A72 64-bit SoC @ 1.5 GHz.
- Quad Core
- 2GB RAM (andere Modelle bis 8 GB)
- IO Peripherie
- USB
- UART
- I2C
- SPI
- ....
16.05.2023
1. Intro
13
Auswahl eines Dev-Boards #
- Board Support Package (Linux / Android)
- Schema für SoM
- Schema für Carrier
- Datenblatt für SoC
- FOSS Bootloader
- Mainline Kernel / U-Boot
- Community
16.05.2023
1. Intro
14
Linux taugliche Boards #
- multicore System
- Video Core
- mit Beschleuniger für 2D und 3D (OpenGL/ES o. Vulkan), H264/H265 Decoder
- HDMI u./o. LVDS Interface
- ev. Kamerainterface (meist MIPI-CSI2)
- Standard Peripherie
- UART, I2C, SPI, Timer/PWM, USB, Ethernet NIC, ev. PCIe, ev. CAN
- DRAM- und Flash-Interflace (OpenFlash u/o SDIO)
- Leistungsfähiges internes Bussystem (ARM AMBA/AXI-Bus)
16.05.2023
1. Intro
15
... weitere HW Features #
- Power Management
- DRAM
- Flash Speicher (SD-Karte / eMMC)
- ev. Audio Codec, WiFi Module, Ethernet PHY, USB3-Controller, RTC, Boot-SPI-EEPROM, ...
16.05.2023
1. Intro
17
Raspberry Pi für Linux #
- Breit verbreitet, grosse Community
- Günstig, guter Linux Support
- ... aber kein Mainline Kernel
- Teilschema erhältlich:
- ... leider unvollständig.
- nicht wirklich industrietauglich
- Compute Module CM3 / CM4
- Schema vorhanden:
- Garantierte Vefügbarkeit über längere Zeit
16.05.2023
1. Intro
18
16.05.2023
1. Intro
20
Hardware selber designen #
- Das Layout von Linux Boards ist kritisch und benötigt viel Erfahrung!
- Für Privatanwendungen/Prototypen ein Community Board verwenden
- Für industrielle Anwendung ein "Compute Module" (CM/CoM/SoM) und ein anwendungsspez. IO-Board erstellen.
16.05.2023
1. Intro
21
Linux Boards #
- Community Boards und (China) Low Cost Boards
- Beaglebone, Wandboard, Raspberry Pi
- rel. günstig; für Entwicklung geeignet; nur bedingt industrietauglich!
- Industrietaugliche Boards resp. SoM (System on Module)
- Seriosität und Support durch Hersteller?
- Garantierte langfristige Lieferbarkeit? (z.B. 10J)
- Prototypen-IO-Board? (ermöglicht schnellen Start eines Projektes)
- Temperatur Range? (Commercial: -20..+70°, ext.Industrial: -40 ..+105°)
- Beispiel CM4: : -20°C .. +85° ausser WiFi Module: -20..70°
- Preis oft deutlich höher als Community Boards
16.05.2023
1. Intro
22
Weitere Lieferanten #
Einige Lieferanten industrietauglicher Linux CM/SoM/CoM
- Raspberry Pi Compute Modules (CM3, CM4)
- ARIES Embedded https://www.aries-embedded.com/
- Toradex -> https://www.toradex.com
- Phytec -> https://www.phytec.de/produkte/software/linux-bsp/
- KARO Electronics -> https://www.karo-electronics.de
- Variscite -> http://www.variscite.com/
16.05.2023
1. Intro
23
Beispiel RPI4 CM Module Board #
- Informationen zum CM4
- Obsolescence Statement: CM4 bis 2028 lieferbar!
- Besser spezifiziert wie normales Rasbperry Pi – trotzdem sehr ähnlich
- somit ist ein normales Raspberry Pi während der Produktentwicklung geeignet.
- Industrietaugliche eMMC (statt einer SD-Karte)
- CM4-IO Board ermöglicht frühzeitig SW-Entwicklung oder Evaluation
- KICAD Files zum CM4-IO Board vorhanden als Basis für eigene IO-Boards
16.05.2023
1. Intro
24
Open Source Hardware / Software #
- Nur was im Linux-Kernel Adressraum läuft ist zwingend Opensource (GPL)
- Beim Raspberry Pi ist aber nicht alles Open Source!
- Closed Source Video Core
- ... in welchem auch der ganze Bootloader läuft ...
- ... und dieser auch closed Source ist
- ... gleiches gilt für Kameratreiber und Grafikbeschleunigung
- Binary des Bootloaders befindet sich auf dem SPI-EEPROM
16.05.2023
1. Intro
25
Auswahl: Betriebssystem #
- Zwingend nötig?
- Typ
- RTOS
- General Purpose
- Produkte
- Windows
- Linux
- FreeRTOS
16.05.2023
1. Intro
26
Auswahl: Dev Environment / Sprache #
- Interpreted
- Memoryhungrig
- Rechenleistung
- Garbage Collection
- Komplexität
- OOP (Java / C++)
- Functional (RUST / Python / JS)
- UI nötig?
- QT
- Swing / JavaFX
- Web
- Jetpack Compose
16.05.2023
1. Intro
27
Auswahl: Hardware #
- Resourcen
- RAM
- CPU / GPU
- DSP / Neural Nets
- Connectivity
- Ethernet
- WiFi
- 3G / 4G / 5G
- USB
- NFC
16.05.2023
1. Intro
28
Auswahl: Realtime Anforderungen #
- Soft-Realtime
- In der Regel einhalten
- Machbar mit Windows / Linux / OSX
- Hard-Realtime
- Immer einhalten
- Wichtig bei kritischen Steuerungen
- Luftfahrt, Medizin, Automobil
- aufwändiges SW-Management
- Performance
- Energiebedarf
16.05.2023
1. Intro
30
Betriebssysteme: Varianten #
- Ohne OS
- General Purpose
- Linux / Windows / BSD
- Abgespecktes General Purpose OS
- Echtzeit mit Multitasking
- RTOS / FreeRTOS
- Generap Purpose mit RT-Erweiterung
- RT-Patch
- Co-Kernel
16.05.2023
1. Intro
32
RTOS #
Positiv #
- Minimaler Kernel
- Minimaler Resourcenbedarf
- Kompatibel auf 32Bit uC (Cortex-M)
- Optimale Echtzeiteigenschaften
- Preemptive Multitasking
Negativ #
- Fehlende Mechanismen
- Integrity
- Authentication
- Kernel z.T. nicht vom Userspace geschützt
- Keine konfirmität mit
- Windows
- POSIX
- Treiber: oft Marke Eigenbau
- Kosten für Runtime / Dev Environment
16.05.2023
1. Intro
General Purpose OS
33
Positiv #
- Entwicklungsumgebung
- InteliJ / Eclipse/ VS Code
- Java / C++ / Python
- Golang / NodeJS
- Web / Browser
- Softwareangebot
- Security
- Ausgeklügelt
- Weit verbreitet ...
- ... oft ziel
- HW Treiber / Interfaces
- Soft- Realtime
Negativ #
- Schlechte Hard-Realtime Eigenschaften wegen ...
- hoher komplexität
- hoher Abstraktion
- Resourcenbedarf Hoch
- RAM
- CPU / GPU
- Disk Space
- Power
- Treiber-Komplexität = Lernkurve
- Kosten Für
- Support
- Lizenzen
16.05.2023
1. Intro
35
Aspekte der Programmiersprache #
- Library Eco System
- GUI
- Multithreading
- Kernel interface
read
,write
(universal)ioctl
,mmap
(C / C++)
- Hardware Beschleunigung (
arm-neon
) - Web Server (
expressjs
,flask
,fastapi
) - statische Typisierung
- Exception Handling
16.05.2023
1. Intro
37
Native Interfaces #
- Java Native Interface
- Python C Binding
- Rust C Binding
- UNIX Sockets
- IPC
16.05.2023