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:

    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

  • Typische Komponenten von eingebetteten Systemen

    • Microcontroller (MCU = MiCrocontroller Unit)

    • Peripherie (Sensoren und Aktuatoren)

    • Interaktion mit dem Anwender (LED, Button, Display, Beeper, …)

    • Stromversorgung

    • Gehäuse

1.1. Fragen

  1. 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.

  2. Was sind die Unterschiede zwischen einem PC und einem eingebetteten System? Schauen Sie sich den obigen Abschnitt zu diesem Thema an.

  3. Was sind die Hauptteile eines eingebetteten Systems?

  4. Vergleichen Sie die Festplatte des PC mit dem Flash-Speicher eines eingebetteten Systems. Was für Gemeinsamkeiten und Unterschiede gibt es?

  5. Welche Variabilität haben eingebettete Systeme hinsichtlich

    • Bitbreite

    • Taktfrequenz

    • Speicher

      • Flash

      • SRAM

    • Betriebssystem

    • Leistungsaufnahme

  6. 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.

  7. Bauen Sie ein eingebettetes System Ihrer Wahl auseinander und beschreiben Sie die Bestandteile die Sie finden.

  8. Welche Zahl ist grösser? Die Anzahl der Desktop-CPUs, oder die Anzahl der CPUs für eingebettete Systeme, die jedes Jahr hergestellt werden?

  9. Warum werden Intel x86 CPUs nicht in jedes eingebettete System gebaut?

  10. Welche “Community Boards” kennen Sie? Haben Sie schon mal ein Projekt damit gemacht?

  11. Was ist sehr störend in der täglichen Verwendung von vielen mobilen eingebetteten Systemen?

  12. Warum sind eingebettete Systeme in der Regel schwieriger zu programmieren als ein PC?

  13. Sortieren Sie die Mikrocontroller die Sie kennen in die vier verschiedenen Kategorien, die oben genannt wurden.

  14. 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, …