Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Eingebettetes Linux und Entwicklungsmethoden Informatik-Seminar Prof. Dr. Ulrich Hoffmann Prof. Dr. Uwe Schmidt Wintersemester 2008

Ähnliche Präsentationen


Präsentation zum Thema: "Eingebettetes Linux und Entwicklungsmethoden Informatik-Seminar Prof. Dr. Ulrich Hoffmann Prof. Dr. Uwe Schmidt Wintersemester 2008"—  Präsentation transkript:

1 Eingebettetes Linux und Entwicklungsmethoden Informatik-Seminar Prof. Dr. Ulrich Hoffmann Prof. Dr. Uwe Schmidt Wintersemester 2008 http://msquadrat.de/pub/talks/embedded-linux-2008/ http://www.fh-wedel.de/~si/seminare/ws08/Ausarbeitung/01.embeddedlinux/ Malte S. Stretz http://msquadrat.de

2 Eingebettetes Linux und Entwicklungsmethoden Malte S. Stretz 2008 2 Embedded Linux ● Was ist Embedded Linux?

3 Eingebettetes Linux und Entwicklungsmethoden Malte S. Stretz 2008 3 Embedded Linux ● Was ist Embedded Linux? Ein Betriebssystem, angepasst für den Betrieb als Embedded System, basierend auf Linux. ➔ Was ist ein Embedded System? ➔ Was ist Linux? ➔ Was ist überhaupt ein Betriebssystem? ➔ Vor- und Nachteile von Linux ➔ Embedded Development mit Linux

4 Eingebettetes Linux und Entwicklungsmethoden Malte S. Stretz 2008 4 Embedded Systems (Theorie) ● Was ist ein Embedded System? ● Kombination aus einer Embedded (Hardware) Plattform und hierfür angepasster Software ● Nicht exakt/einheitlich definiert ● Fließender Übergang zu Appliances und Thin Clients ● Mögliche Merkmale ● Niedrige Hardwareanforderungen ● Hardware-nahe bzw. -spezifische Software ● Betriebssystem optional ● Echtzeitfähigkeit optional ● Spezifischer Einsatzzweck (Router, Storage, Kommunikation, Steuerung, etc.) ● Blackbox-Verhalten dem Anwender gegenüber ● Vom Anwender nur bedingt erweiterbar

5 Eingebettetes Linux und Entwicklungsmethoden Malte S. Stretz 2008 5 ● Faustregel: Man arbeitet mit einem Embedded System, wenn... ●... die Software speziell an eine bestimmte Hardware-Architektur und - Umgebung angepasst wird. ●... diese auf einen bestimmten, begrenzten Einsatzzweck zugeschnitten ist. Embedded Systems (Theorie)

6 Eingebettetes Linux und Entwicklungsmethoden Malte S. Stretz 2008 6 Embedded Systems (Beispiele)

7 Eingebettetes Linux und Entwicklungsmethoden Malte S. Stretz 2008 7 Embedded Systems (Praxis) ● Prozessor ● Typen: µP, µC, DSP, FPGA, ASIC ● Architektur ● Desktop/Server: x86, PPC, SPARC, MIPS ● Embedded: 65816, 65C02, 68HC08, 68HC11, 68k, 8051, ARM, AVR, AVR32, Blackfin, C167, Coldfire, COP8, eZ8, eZ80, FR-V, H8, HT48, M16C, M32C, MIPS, MSP430, PIC, PPC, R8C, SHARC, ST6, SuperH, TLCS-47, TLCS-870, TLCS-900, Tricore, V850, x86, XE8000, Z80,... ● Reduzierte Rechenleistung ● Byteorder (Little oder Big Endian) ● FPU optional ● MMU optional

8 Eingebettetes Linux und Entwicklungsmethoden Malte S. Stretz 2008 8 Embedded Systems (Praxis) ● Arbeitsspeicher ● Typen: (S)DRAM, (F)SRAM ● Limitierte Größe ● Mehrere Speicher möglich ● Oder gar keine ● Nichtflüchtiger Speicher ● Typen: Flash, EEPROM, Festplatten ● Limitierte Größe ● Geringe Geschwindigkeit ● Falls überhaupt vorhanden

9 Eingebettetes Linux und Entwicklungsmethoden Malte S. Stretz 2008 9 Embedded Systems (Praxis) ● Schnittstellen ● EIA/RS-232, EIA/RS-485,... ● IEEE 802.3 (Ethernet), IEEE 802.11 (WLAN),... ● I²C/TWI, SPI,... ● CAN, IEC 61158,... ● Zusätzliche Hardware ● Crypto-, Compression-Chips

10 Eingebettetes Linux und Entwicklungsmethoden Malte S. Stretz 2008 10 Linux (Begriffsklärung) ● Mehrdeutig bzw. ungenau ● Ein Kernel ● Ein komplettes Betriebssystem bzw. eine Distribution, basierend auf dem Linux- Kernel ● Meist kombiniert mit Software aus dem GNU Projekt ● Das GNU system existiert 1983 ● Linux erst seit 1991 ● Im Embedded Bereich jedoch oft mit Alternativen ● „Busybox/Linux“? „GNU/Linux“

11 Eingebettetes Linux und Entwicklungsmethoden Malte S. Stretz 2008 11 Linux (Geschichte) ● Inspiriert von Unix/Minix ● Kurze Versionsgeschichte ● Aug.1991:0.01 ● Mär.1994:1.0 ● Jun.1996:2.0.0 ● Jan.1999:2.2.0 ● Aug.1999:2.0.38 ● Jan.2001:2.4.0 ● Mär.2003:2.2.25 ● Dez.2003:2.6.0 ● Feb.2004:2.0.40 ● Aug. 2006:2.4.33.1 ● Nov.2008:2.4.36.9 ● Nov.2008:2.6.27.7

12 Eingebettetes Linux und Entwicklungsmethoden Malte S. Stretz 2008 12 ● Allgemeiner Aufbau eines Betriebssystems ● Kernelspace ● Laufzeitumgebung des Kernel ● Ein Adressraum ● Verwaltet Hardware- Resourcen ● Verwaltet Prozesse im Userspace ● Userspace ● Laufzeitumgebung der Applikationen ● Adressraum pro Prozess ● Konfiguriert Kernel, Hardware Linux (Allgemein) Hardware Kernelspace Userspace Betriebssystem

13 Eingebettetes Linux und Entwicklungsmethoden Malte S. Stretz 2008 13 Linux (Kernel) ● Der Linux-Kernel ● Monolithisch ● Die meisten Dienste laufen im Kernelspace, in einem Adressraum ● Gegenkonzept: Mikrokernel ● Tendenz: Mehr Logik im Userspace (udev, FUSE, CRDA, etc.) ● Modular ● Module/Dienste (Scheduler, Treiber, Dateisysteme, etc.) sind unabhängig voneinander und können ausgetauscht werden Hardware Kernelspace Userspace Prozess- verwaltung Speicher- verwaltung Interprozesskommunikation Gerätetreiber Netzwerk- stack Dateisystem- stack

14 Eingebettetes Linux und Entwicklungsmethoden Malte S. Stretz 2008 14 Linux (Kernel) ● Ursprünglich entwickelt für den Intel 80386 (x86-32) ● Open Source (GPLv2) ● Anpassungen möglich ● Neue Prozessor-Architekturen ● Angepasstes Memory Management ● Angepasster Scheduler ● Schlankerer Kernel ● Statischer Kernel ● Derivate/Patches ● uClinux ● RTLinux, RTAI, RT-preempt ●... Kernelspace

15 Eingebettetes Linux und Entwicklungsmethoden Malte S. Stretz 2008 15 Linux (Schichten) ● Schichtenmodell ● Zwei Privilegstufen ● Zugriff auf Kernel via System Calls ● Ursprünglich nur x86 ● Kontextwechsel durch Interrupt 0x80 bzw. VDSO ● Zwei architekturabhängige Schnittstellen ● Weitere Abstraktions-schicht zur Steigerung der Portabilität Hardware Userspace Kernelspace System Calls Hardware Access (Ring 0) (Ring 3) portabel High-Level APIs

16 Eingebettetes Linux und Entwicklungsmethoden Malte S. Stretz 2008 16 Standard Linux (Userspace) ● High-Level APIs ● Kernel ● Devices ● Sockets ● libc ● GNU libc ● Userland ● GNU system ● Daemons ● udev, HAL, syslog, dhcpcd, D- Bus, NM, Avahi,... ● GUI ● X.Org ● Windowmanager Userspace Kernelspace System Calls High-Level APIs libc Devices Userland X Server Daemons WM Bibliotheken (Gtk, Qt,...) Desktop Environment (KDE, GNOME) Applikationen Betriebssystem

17 Eingebettetes Linux und Entwicklungsmethoden Malte S. Stretz 2008 17 Embedded Linux (Userspace) ● Modularer Aufbau erleichtert Portierung/Anpassung ● Einfache, portierbare, unabhängige Module mit klaren Schnittstellen ● Einfach? Portierbar? Klar? ● Code gewinnt ● Standards folgen Implementierungen ● Module sind austauschbar ● Diverse Alternativen ● Oft optional ● Meist Open Source ● Anpassungen möglich Userspace High-Level APIs libc Devices Userland X Server Daemons WM Bibliotheken (Gtk, Qt,...) Desktop Environment (KDE, GNOME) Applikationen KISS: Keep It Simple and Stupid.

18 Eingebettetes Linux und Entwicklungsmethoden Malte S. Stretz 2008 18 Embedded Linux (Userspace) ● Alternativen zur GNU libc ● uClibc ● dietlibc ● newlib ● (klibc) Userspace High-Level APIs libc Devices Userland X Server Daemons WM Bibliotheken Applikationen

19 Eingebettetes Linux und Entwicklungsmethoden Malte S. Stretz 2008 19 Embedded Linux (Userspace) ● Alternativen zum GNU system ● Busybox ● Single-Binary ● embutils ●...? Userspace High-Level APIs libc Devices Userland X Server Daemons WM Bibliotheken Applikationen

20 Eingebettetes Linux und Entwicklungsmethoden Malte S. Stretz 2008 20 Embedded Linux (Userspace) ● Alternativen zu Daemons ● udev ● Statische Device Nodes ● HAL ● Statische Device Informationen ● NetworkManager ● Semistatische Netzwerkkonfiguration ● Apache ● lighttpd, thttpd, fnord, mini_httpd,... ● OpenSSH ● Dropbear Userspace High-Level APIs libc Devices Userland X Server Daemons WM Bibliotheken Applikationen

21 Eingebettetes Linux und Entwicklungsmethoden Malte S. Stretz 2008 21 Embedded Linux (Userspace) ● Alternative X Server ● KDrive ● TinyX ● SmallX ● NanoX ● XDirectFB ●... ● Alternativen zu X ● DirectFB ● SDL ● GtkFB ● Qtopia/Qt Extended ●... Userspace High-Level APIs libc Devices Userland X Server Daemons WM Bibliotheken Applikationen

22 Eingebettetes Linux und Entwicklungsmethoden Malte S. Stretz 2008 22 Embedded Linux (Userspace) ● Der Vollständigkeit halber ● Angepasste Applikationen ● Angepasste Bibliotheken Userspace High-Level APIs libc Devices Userland X Server Daemons WM Bibliotheken Applikationen

23 Eingebettetes Linux und Entwicklungsmethoden Malte S. Stretz 2008 23 Embedded Linux ● Minimalanforderungen ● 4 MiB ROM ● 8 MiB RAM ● Minimalstanforderungen ● ca. die Hälfte Userspace Kernelspace High-Level APIs libc Devices UserlandDaemons Hardware

24 Eingebettetes Linux und Entwicklungsmethoden Malte S. Stretz 2008 24 Vorteile

25 Eingebettetes Linux und Entwicklungsmethoden Malte S. Stretz 2008 25 Vorteile ● Fast alle Features bereits vorhanden ● IP-Stack, USB, Bluetooth, iSCSI, I²C, HIDs, GUI- Frameworks... ● Embedded Distributionen ● Open Source-Lizenz ● Quellcode verfügbar ● Keine Lizenzgebühren ● Unabhängig von anderen Firmen ● Standardisiert... quasi ● POSIX, SUS, LSB, FHS ● Verschiedene Gremien ● Entwickler ● Kein Spezialwissen ● Kernel: C ● Userspace: ● C, C++ ● Perl, Python ● Packaging ● Frontend: ● PHP ● C, C++ ● Support ● Kostenlos (Community) ● Kostenpflichtig

26 Eingebettetes Linux und Entwicklungsmethoden Malte S. Stretz 2008 26 Nachteile ● Open Source (GPLv2) ● Lizenzbestimmungen müssen eingehalten werden! ● Aber: Die GPL hört sich schlimmer an als sie ist ● Kein stabiles Kernel-ABI ● Keine stabile interne API ● Entwickler ● Arbeitsweise anpassen ● Evtl. Neue Entwicklungsumgebungen ● Manager ●...

27 Eingebettetes Linux und Entwicklungsmethoden Malte S. Stretz 2008 27 Embedded Development ● Architekturen stimmen nicht überein ● Binaries sind Architektur-spezifisch Host x86 Target ARM

28 Eingebettetes Linux und Entwicklungsmethoden Malte S. Stretz 2008 28 Embedded Development ● Architekturen stimmen nicht überein ● Lösung 1: Entwickeln und Debuggen auf dem Host ● Problem: Keine Realumgebung Host x86 Target ARM

29 Eingebettetes Linux und Entwicklungsmethoden Malte S. Stretz 2008 29 Embedded Development ● Architekturen stimmen nicht überein ● Lösung 2: Entwickeln und Debuggen remote auf dem Target ● SSH über USB-Netzwerk ● Problem: Compiler sehr langsam ● Problem: Evtl. nicht genug Hardware Host x86 Target ARM

30 Eingebettetes Linux und Entwicklungsmethoden Malte S. Stretz 2008 30 Embedded Development ● Architekturen stimmen nicht überein ● Lösung 3: Entwickeln auf dem Host, debuggen remote auf dem Target ● Problem: Compiler erstellt falsche Binaries ● Lösung: Cross-compiling Host x86 Target ARM

31 Eingebettetes Linux und Entwicklungsmethoden Malte S. Stretz 2008 31 Embedded Development ● Architekturen stimmen nicht überein ● Lösung 4: Entwickeln in einer virtuellen Maschine auf dem Host

32 Eingebettetes Linux und Entwicklungsmethoden Malte S. Stretz 2008 32 Tipps zu Open Source ● Lizenzen beachten ● www.gpl-violations.org www.gpl-violations.org ● Forks considered harmful ● Der Wartungsaufwand kann immens werden ● Treiber im Kernel werden an API-Änderungen angepasst ● Coding Style einhalten ● Macht das spätere Einreichen von Patches einfacher ● Arbeitsweise anpassen ● Open Source-Projekte ticken anders ● Ein dickes Fell hilft ● Nicht immer ist jede Mail so gemeint wie sie klingt

33 Ende Danke für die Aufmerksamkeit


Herunterladen ppt "Eingebettetes Linux und Entwicklungsmethoden Informatik-Seminar Prof. Dr. Ulrich Hoffmann Prof. Dr. Uwe Schmidt Wintersemester 2008"

Ähnliche Präsentationen


Google-Anzeigen