1. Einführung¶
Was sind eingebettete Systeme?
“Die stille Mehrheit von allen Computern” (T. Broy)
Wo gibt es eingebettete Systeme?
Konsumgüter
Automaten im öffentlichen Raum
3D Drucker
Türzugang
Sensoren
Steuerungen
Auto
viele weitere …
Trends
Embedded Systeme nehmen stärker zu als der PC-Rechner. Verstärkt durch aktuelle Entwicklung zu “Internet of Things” (IoT).
PC bedeutet oft “Intel Inside”.
Embedded bedeutet oft “ARM inside”.
Die Leitungsaufnahme nimmt ab, die Rechenleistung nimmt zu.
Ein paar Fakten zu ARM ([YIUDG], 1.5 Background and History, pp. 15-24).
Gegründet 1990 als Advanced RISC Machines Ltd.
Sie verkaufen das Wissen wie man 32-Bit RISC CPU-Kerne baut. Das wird auch IP knowledge (IP = intellectual property) genannt. Die Pläne werden in VHDL Code beschrieben. The aktuelle CPU-Familie besteht aus Cortex-M, Cortex-A und Cortex-R. See Sect. 3.4.
Halbleiterfirmen kaufen Lizenzen von ARM um Mikrocontroller mit ARM-Kern zu bauen. Den Kern umgeben Peripheriemodule die von den Halbleiterfirmen stammen und die mit dem Kern über genormte Schnittstellen zusammenspielen. See the web pages of the companies below.
Homepage: http://www.arm.com
Eigenschaften von eingebetteten Systemen
Oft nicht-standardisierte Hardware, kundenspezifisches Design
Nur kleine User-Interfaces, oder sogar “deeply embedded” ohne UI
Oft reaktive Systeme
Schnittstellen mit Sensoren, “cyberphysical systems”
Kommunikation über UART, RS-458, CAN, I2C, SPI, …
Anforderungen an Timing (Latenz, Durchsatz)
Anforderungen an möglichst kleinen Aufbau
Anforderungen an möglichst geringe Leistungsaufnahme, z.B. wegen Batteriebetrieb
Anforderungen an die Sicherheit (“safety”, “security”)
Anforderungen an den Preis
Schwieriger zu programmieren als ein PC
Interdisziplinäres Feld
Elektrotechnik (Schaltplan, Platine, Aufbau des Prototypen, Test)
Informatik (Programmierung)
Sehr dicke Manuals (1000 Seiten und mehr)
Typische low-level Programmiersprachen sind C, C++ und Assembler.
“Bare metal” Programmierung (= ohne Betriebssystem)
Kleine Speicher (Flash 1K bis 1M, SRAM 512B bis 256K)
Kein Bildschirm, keine Tastatur
Kein Filesystem
Debuggen ist schwierig (meist über Debug-Schnittstellen wie JTAG oder SWD)
Probleme bei gleichzeitigem Datenzugriff (“shared data problems”)
Vergleich Embedded System <—> PC
Verwende die folgenden Kriterien beim Vergleich:
Standard-Hardware
Rechenleistung
Speichergrösse
Programmiersprache
Echtzeit-Anforderungen
Netzwerk (Ethernet)
Sensoren
Leistungsaufnahme
Sicherheit
Zuverlässigkeit
Preis
Kategorien von eingebetteten Systemen (die Kategorie bestimmt in etwa, wie komplex die Software sein kann)
Kategorie 1
8-Bit, 10 MHz, 0-1K SRAM, 1-8K FLASH. Hauptsächlich für bare-metal Programmierung. Software-Komplexität ca. 10 bis 1000 Zeilen Code in C.
Beispiel: AVR Microcontroller Mega8 (Arduino)
Kategorie 2
8-Bit, 10 MHz, 1-4K SRAM, 8K-128K FLASH. Einfaches/kleines Multitasking Betriebssystem möglich; Die Libc kann wegen des kleinen RAMs meist nicht verwendet werden. Software-Komplexität ca. 1000 bis 10.000 Zeilen Code in C.
Beispiel: AVR Microcontroller Mega32 (Arduino)
Kategorie 3
32-Bit (nur wenige mit 8- und 16-Bit), 16 - 100 MHz, 8K-256K SRAM, 128K-2M FLASH. Verwendbar mit Echtzeit-Betriebssystem, z.B. FreeRTOS, ChibiOS, RIOT und libc sowie anderen Bibliotheken (“Middleware”). Unser Nucleo STM32L476 32-bit Cortex-M4 Board läuft mit 80 MHz and hat 1M Flash sowie 128 KByte RAM, somit fällt es in die Kategory 3. Software-Komplexität ca. 1000 bis 200.000 Zeilen Code in C.
Beispiele: viele STM32F1/F2/F4/L4-Boards, ESP8266, ESP32
Kategorie 4
32-Bit mit Speicherverwaltungseinheit (MMU), 60 MHz bis 1 GHz, externes SDRAM 16M bis 1G, externer Flash Speicher 1M-1G. Geeignet für grosse Betriebssysteme, z.B. Linux und Windows. Software-Komplexität bis maximal mehrere 1.000.000 Zeilen Code in C (ähnlich wie ein PC).
Beispiele:
Beagle Bone http://beagleboard.org
Raspberry Pi https://www.raspberrypi.org
Wichtig:
Die Kategorien 1 bis 3 eignen sich nicht, um Linux oder Windows drauf laufen zu lassen! Dazu sind diese Betriebssysteme zu komplex.
Mit steigender Komplexität (Anzahl Transistoren) und steigender Taktfrequenz nimmt auch die Stromaufnahme zu! Die Kategorien 1 bis 3 liegen bei der Leistungsaufnahme im Betrieb noch im Bereich von 0,01 bis 0.05 Watt, die Kategorie 4 meist schon bei 0.1 bis 2 Watt.
Tendenz zu preiswerten “Community Boards” mit freier Hardware Lizenz und Open-Source Software, z.B. Arduino (2005), Raspberry Pi (2012), Beagleboard (2010) und viele weitere.
Die Programmierung erfolgt bei allen Kategorien meist in einer systemnahen Hochsprache wie C oder C++, eventuell mit ein wenig Assembler. Ab einer Programmspeichergrösse von 100K bis 200K (also Kat. 3) werden auch Interpreter verwendet, z.B. für Lua, JavaScript oder Python.
Ein paar grosse Halbleiterfirmen, die Mikrocontroller herstellen
Microchip, http://www.microchip.com (haben Atmel aufgekauft)
NXP, http://www.nxp.com (haben Freescale aufgekauft)
ST Microelectronics, http://www.st.com
Texas Instruments, http://www.ti.com
Typische Komponenten von eingebetteten Systemen
Microcontroller (MCU = MiCrocontroller Unit)
Peripherie (Sensoren und Aktuatoren)
Interaktion mit dem Anwender (LED, Button, Display, Beeper, …)
Stromversorgung
Gehäuse
Aufgaben und Fragen
Lesen Sie den Wikipedia Artikel zu Eingebetteten Systemen (deutsch oder englisch):
und extrahieren Sie den Inhalt in eine Mindmap. Unter Linux gibt es dazu z.B. das freie “FreeMind” Programm.
Was sind die Unterschiede zwischen einem PC und einem eingebetteten System? Schauen Sie sich den obigen Abschnitt zu diesem Thema an.
Was sind die Hauptteile eines eingebetteten Systems?
Vergleichen Sie die Festplatte des PC mit dem Flash-Speicher eines eingebetteten Systems. Was für Gemeinsamkeiten und Unterschiede gibt es?
Welche Variabilität haben eingebettete Systeme hinsichtlich
Bitbreite
Taktfrequenz
Speicher
Flash
SRAM
Betriebssystem
Leistungsaufnahme
Mit welchen eingebetteten Systemen kommen Sie in Kontakt während eines Tages? Denken Sie an zu Hause, an Verkehrsmittel, Fahrrad, Türen und so weiter.
Bauen Sie ein eingebettetes System Ihrer Wahl auseinander und beschreiben Sie die Bestandteile die Sie finden.
Welche Zahl ist grösser? Die Anzahl der Desktop-CPUs, oder die Anzahl der CPUs für eingebettete Systeme, die jedes Jahr hergestellt werden?
Warum werden Intel x86 CPUs nicht in jedes eingebettete System gebaut?
Welche “Community Boards” kennen Sie? Haben Sie schon mal ein Projekt damit gemacht?
Was ist sehr störend in der täglichen Verwendung von vielen mobilen eingebetteten Systemen?
Warum sind eingebettete Systeme in der Regel schwieriger zu programmieren als ein PC?
Sortieren Sie die Mikrocontroller die Sie kennen in die vier verschiedenen Kategorien, die oben genannt wurden.
Wie viele Zeilen C Code können Sie in einen Mikrocontroller der Kategorie 3 in etwa speichern? Es geht nur um die Grössenordnung 1, 10, 100, 1000, …