Embedded Linux mit Raspberry Pi und Co
Embedded-Linux-Kernel erzeugen Treiber und Kernelmodule entwickeln Praxisbeispiele mit LED-Matrix und LC-Displays Raspberry Pi, BeagleBone Black, CubieBoard und Co. haben dazu beigetragen, das Interesse an Embedded Linux sowie dessen Programmierung und Nutzung für alltägliche Dinge zu wecken. Es wir...
Otros Autores: | |
---|---|
Formato: | Libro electrónico |
Idioma: | Alemán |
Publicado: |
[Place of publication not identified] :
mitp
2016.
|
Edición: | 1. auflage |
Colección: | mitp Professional
|
Materias: | |
Ver en Biblioteca Universitat Ramon Llull: | https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009631599606719 |
Tabla de Contenidos:
- Cover
- Impressum
- Inhaltsverzeichnis
- Einleitung
- Teil I: Einführung und Einrichtung einer Entwicklungsumgebung
- Kapitel 1: Embedded Linux
- 1.1 Desktop-Betriebssysteme
- 1.2 Bare-Metal vs. Betriebssystem
- 1.2.1 Mikroprozessoren vs. Mikrocontroller
- 1.3 Embedded Betriebssysteme
- 1.4 Die Architektur von Linux
- 1.4.1 Erläuterungen
- 1.5 Beliebte Linux-Distributionen
- 1.6 Linux installieren
- 1.6.1 Parallele Installation von Linux Mint zum vorhandenen Betriebssystem
- 1.6.2 Installation von Linux Mint in VirtualBox
- 1.7 Erfahrungen Linux Mint + VirtualBox
- 1.7.1 Größe der virtuellen Festplatte ändern
- 1.7.2 Zielpartition für VirtualBox festlegen
- 1.7.3 Umziehen der virtuellen Maschine
- 1.7.4 Nicht genügend Arbeitsspeicher
- 1.8 Weiterführende Literatur
- Kapitel 2: Netzwerkanbindung
- 2.1 Datenaustausch zwischen Host und Embedded System
- 2.1.1 Samba
- 2.1.2 FileZilla
- 2.1.3 Daten austauschen mit scp
- 2.2 Verzeichnisstruktur von Linux/Raspbian
- 2.2.1 /bin
- 2.2.2 /boot
- 2.2.3 /dev
- 2.2.4 /etc
- 2.2.5 /home
- 2.2.6 /lib
- 2.2.7 /lost+found
- 2.2.8 /media
- 2.2.9 /mnt
- 2.2.10 /opt
- 2.2.11 /proc
- 2.2.12 /root
- 2.2.13 /run
- 2.2.14 /sbin
- 2.2.15 /selinux
- 2.2.16 /srv
- 2.2.17 /sys
- 2.2.18 /tmp
- 2.2.19 /usr
- 2.2.20 /var
- 2.3 Neue Benutzer und Gruppen einrichten
- 2.3.1 Einen User hinzufügen bzw. entfernen
- 2.3.2 Gruppen hinzufügen bzw. entfernen
- 2.4 Weiterführende Literatur
- Kapitel 3: Shell-Programmierung
- 3.1 Erste Schritte
- 3.1.1 Die Kommandos »man« und »info«
- 3.2 Geschichte der Shells
- 3.3 Die Bourne-again-Shell - bash
- 3.3.1 Ein- und Ausgabeumleitung
- 3.3.2 Shell-Variablen
- 3.3.3 Kommentare
- 3.3.4 Systemkommandos in Shellscripts
- 3.3.5 Mehrere Kommandos in einer Zeile
- 3.3.6 Bedingungen/Vergleiche
- 3.3.7 Funktionen in Shellscripts.
- 3.3.8 Schleifen
- 3.3.9 Professionelle Übergabe von Argumenten
- 3.3.10 Einschränkungen bei Shellscripts
- 3.4 Weiterführende Literatur
- Kapitel 4: Cross-Toolchains
- 4.1 Cross-Toolchains für Raspberry Pi B+
- 4.1.1 Toolchain und IDE für Windows
- 4.1.2 Toolchain und IDE für Linux (Mint)
- 4.1.3 Toolchain und IDE für Mac OS X
- 4.2 Die Bibliothek wiringPi
- 4.2.1 Herunterladen von wiringPi
- 4.2.2 wiringPi »bauen«
- 4.2.3 Funktionen in wiringPi
- 4.2.4 Weitere Informationen zu wiringPi
- 4.2.5 Anschlussbelegung des Raspberry Pi B+
- 4.3 Konfiguration von Code::Blocks
- 4.3.1 Auswahl des Compilers
- 4.3.2 Einstellen der Compiler-Optionen
- 4.3.3 Bibliothek(en) hinzufügen
- 4.3.4 Erweitern des Suchpfades
- 4.3.5 Toolchain executables
- 4.3.6 Testen der Toolchain
- 4.4 crosstool-ng
- 4.4.1 Vorarbeiten
- 4.4.2 Erstellen und installieren von crosstool-ng
- 4.4.3 Toolchain konfigurieren
- 4.5 Weiterführende Literatur
- Teil II: Techniken zur Programmierung von Kernel und rootfs
- Kapitel 5: Raspbian - der Kernel
- 5.1 Überblick
- 5.1.1 Einmalig durchzuführende Schritte
- 5.1.2 Zu wiederholende Schritte
- 5.2 Kernel erzeugen - detaillierte Anleitung
- 5.2.1 Einmalig durchzuführende Schritte - Details
- 5.2.2 Zu wiederholende Schritte
- 5.3 Das Shellscript mkrpi
- 5.3.1 mkrpi - das Listing zum Shellscript
- 5.3.2 Funktion und Anwendung von mkrpi
- 5.4 Weiterführende Literatur
- Kapitel 6: Das root-Dateisystem - rootfs
- 6.1 rootfs erzeugen
- 6.1.1 Benötigte Software
- 6.1.2 Die nächsten Schritte
- 6.1.3 Imagedatei erzeugen
- 6.1.4 Schreiben der Boot-Partition
- 6.1.5 Schreiben des root-Dateisystems
- 6.1.6 Das Ende naht ...
- 6.2 Alternative Methode
- 6.2.1 Beschaffung und Anwendung von Buildroot
- 6.3 Weiterführende Literatur
- Kapitel 7: Der Bootprozess
- 7.1 Bare-Metal-Systeme.
- 7.2 Geräte mit Betriebssystem
- 7.2.1 Der Bootprozess des Raspberry Pi
- 7.2.2 Der Bootprozess beim BeagleBone Black BBB
- 7.2.3 Der Bootprozess beim Cubieboard
- 7.3 Allgemeine Beschreibung des Bootvorgangs
- 7.3.1 Bootloader
- 7.3.2 Die Aufgabe von Bootloadern
- 7.4 Das U-Boot und der Raspberry Pi
- 7.4.1 Sourcecode von »Das U-Boot«
- 7.5 Weiterführende Literatur
- Teil III: Grundlagen der Treiberentwicklung
- Kapitel 8: Treiber und Module I
- 8.1 Auffrischung
- 8.2 »Normale« Dateien und Gerätedateien
- 8.2.1 Schnittstellen zwischen User Space und Kernel
- 8.2.2 Schnittstellen zwischen Kernel und Hardware
- 8.2.3 Wichtige Programme im User Space
- 8.3 Weitere Voraussetzungen
- 8.4 Das erste Kernelmodul
- 8.4.1 Quelltext des Moduls und Makefile
- 8.4.2 Kompilieren des Moduls
- 8.4.3 Modul testen
- 8.4.4 Details zu nix.c/nix.ko
- 8.4.5 kbuild
- 8.5 Ein weiteres einfaches Kernelmodul
- 8.5.1 Der Sourcecode
- 8.5.2 Log-Level
- 8.5.3 Kernelmodul ausprobieren
- 8.6 Moderne Variante von hellodriver
- 8.6.1 Moderne Variante des hellodriver-Moduls
- 8.7 Ende der Einführung
- 8.8 Weiterführende Literatur
- Kapitel 9: Treiber und Module II
- 9.1 Auf dem Weg zu einem richtigen Gerät
- 9.1.1 Funktionen, Makros, Datentypen
- 9.1.2 Der Sourcecode
- 9.2 Weiterführende Literatur
- Kapitel 10: Treiber und Module III
- 10.1 Checkliste für die Treiberentwicklung
- 10.1.1 Headerdateien
- 10.1.2 Die Struktur file_operations
- 10.1.3 Initialisierung eines Treibers/Moduls
- 10.1.4 Entfernen von Treibern/Modulen
- 10.1.5 Funktion mydevice_open
- 10.1.6 Funktion mydevice_close
- 10.1.7 Schreiben und Lesen
- 10.1.8 The End
- 10.1.9 Generelle Erklärung einiger Funktionen
- 10.2 Ansteuerung »echter« Hardware
- 10.2.1 GPIO-Funktionen
- 10.2.2 GPIOs anwenden
- 10.2.3 (Mögliche) Erweiterung des Treibers.
- 10.3 Weiterführende Literatur
- Teil IV: Treiberentwicklung in der Praxis
- Kapitel 11: Praxis I
- 11.1 Das serielle Schieberegister SN74HC595
- Kapitel 12: Praxis II
- 12.1 Der Baustein Maxim 7219
- 12.1.1 Beschreibung des Maxim 7219
- 12.1.2 Zeitverhalten bei der Ansteuerung
- 12.1.3 Kaskadieren mehrerer Maxim 7219/7221
- 12.2 Ansteuerung einer 8 x 8-LED-Matrix
- 12.2.1 Der Schaltplan
- 12.3 Die Treibersoftware
- 12.3.1 Das Makefile
- 12.3.2 Die Headerdatei max7219.h
- 12.3.3 Der C-Sourcecode max7219imp.c
- 12.3.4 Das Testprogramm für den Treiber
- 12.3.5 Verbesserungsvorschläge
- 12.4 Ansteuerung von 7-Segment-Anzeigen
- Kapitel 13: Praxis III
- 13.1 Der HD44780 - Aus dem Datenblatt
- 13.2 Die Hardware
- 13.3 Die Headerdatei hd44780.h
- 13.3.1 Einige Erläuterungen
- 13.4 Der Treiber hd44780.c
- 13.4.1 Erläuterung des Programms
- 13.5 Das Testprogramm im User Space
- 13.6 Weiterführende Literatur
- Anhang A: Literaturverzeichnis
- A.1 Embedded Systeme, Architektur etc.
- A.2 VirtualBox
- A.3 Samba
- A.4 Shell-Programmierung
- A.5 Toolchains und Bibliotheken
- A.6 Bootstrapping, Buildroot etc.
- A.7 Der Bootprozess
- A.8 Pointer und Strukturen in C
- A.9 Das Kernel-Buildsystem und Treiber
- A.10 Bücher
- Anhang B: Belegung der GPIO-Ports
- B.1 GPIO-Belegung gemäß wiringPi
- B.2 GPIO-Belegung gemäß Broadcom
- Anhang C: Safety und Security
- C.1 Security
- C.2 Safety
- C.2.1 Maßnahmen in der Automobilindustrie
- C.2.2 Umsetzung in der Programmierung
- C.3 Ergänzende Literatur
- Anhang D: Kopieren mit scp
- Anhang E: Code::Blocks
- E.1 Projekteinstellungen
- E.1.1 Properties
- E.1.2 Build options ...
- Stichwortverzeichnis.