Skip to content
On this page
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
4

Raspberry Pi OS (Debian)

  • Linux Basics
  • Functional Testing
  • Development Tools
16.05.2023
1. Intro
5

Linux from Scratch

  • Bootloader
  • Kernel
  • Busybox
  • Root File System
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
7

Kernel

  • Eigenen Treiber schreiben
  • Copy2User
  • Character Device
  • POSIX
16.05.2023
1. Intro
8

Literatur / Referenzen

  • Linux Device Drivers 3rd Edition
  • Building Embedded Linux Systems Concepts, Techniques, Tricks, and Traps 2nd Edition
    • ISBN 978-0596529680
16.05.2023
1. Intro
9

Wo macht Embedded Linux Sinn?

16.05.2023
1. Intro
10

Raspberry Pi 4 Model B

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
12

Terminologie: SoM vs SoC

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
16

Wann sollte man ein Raspberry Pi verwenden und wann nicht?

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
19

Soll man Hardware selber designen?

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

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
29

Was gibt es für Betriebssystemvarianten?

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
31

Ohne OS

Positiv

  • Minimaler Resourcenbedarf
  • Steuerung via Polling / Interrupt
  • Keine Tasks / Threads
  • Kurze Latenzzeiten
  • deterministisch

Negativ

  • Marke Eigenbau
    • Hardwaretreiber
    • Middleware
    • Abstraktion
  • Kann unstabil werden
    • Komplexe I/O
    • Komplexe SW
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
34

Welche Programmiersprache eignet sich für Embedded Linux?

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
36

Sind Java und Python langsam?

16.05.2023
1. Intro
37

Native Interfaces

  • Java Native Interface
  • Python C Binding
  • Rust C Binding
  • UNIX Sockets
  • IPC
16.05.2023