"Embedded Linux mit dem Raspberry Pi" zeigt den Einsatz von Linux auf der populären Hardware-Plattform Raspberry Pi. Der Untertitel für Ein- und Umsteiger soll gleichzeitig verdeutlichen, an wen als Leser mit diesem Buch primär gedacht ist.
Hier geht es nicht um Linux als alternatives Betriebssystem für den PC, sondern den Einsatz von Linux in einem Embedded System und um das Embedded System selbst.
Die Komplexität heutiger Anforderungen an Elektronikkomponenten ist an vielen Stellen mit den klassischen Konzepten um Mikrocontroller kaum umsetzbar. Hinzu kommt der Preiszerfall in diesem Sektor, der für den Einsatz leistungsfähiger 32-Bit-Mikrocontroller, wie ARM- oder Cortex-Derivate, spricht.
Während die leistungsschwächeren (8-Bit-) Mikrocontroller meist ohne Betriebssystem betrieben wurden, kommt man bei den 32-Bit-Mikrocontrollern kaum noch um den Einsatz eines Betriebssystems herum. Das Betriebssystem bietet Schnittstellentreiber, Dateisystem, Multi-Threading u.a. und übernimmt damit wiederkehrenden Aufgaben, für die stabile Softwarekomponenten zur Verfügung stehen. Leistungsfähige und schlanke Linux-Derivate können heute auch auf einfacheren Prozessoren eingesetzt werden und sind frei verfügbar.
Die verwendete Linux-Distribution Raspbian stellt einen grafischen Desktop zur Verfügung, der hier aber nicht von primärem Interesse ist. Unser primäres Userinterface hier ist klassisch die Kommandozeile, wie sie vielen Mikrocontroller-Programmierern aus deren Projekten als Terminal-Schnittstelle bekannt ist. Ein grafisches Userinterface ist für viele geschlossene Embedded Systems (deeply embedded) ohnehin nicht erforderlich, oder kann durch ein Web-Interface ersetzt werden.
Mit dem Einsatz von Linux in einem Embedded System kommt eine Reihe von neuen Ansätzen auf den Umsteiger aus der konventionellen Mikrocontrollerwelt zu, mit denen wir uns hier erst einmal auseinandersetzen werden.
Alle gelisteten Quelltexte und einige Erläuterungen sind unter SourceForge abgelegt (http://sourceforge.net/projects/raspberrypisnip/). Zum Buch existiert ausserdem eine Webseite http://www.ckuehnel.ch/Raspi-Buch.html.
Inhaltsverzeichnis
Inhalt
1. Raspberry Pi 11
2. Linux als Betriebssystem 12
3. Lizenzen 14
4. Linux-Features 17
4.1 User-Interface 17
4.2 Linux Architektur 19
4.3 Kernelspace vs. Userspace 20
4.4 Ein-/Ausgabe 21
4.5 Board Support Package (BSP) 22
4.6 Zugriffsrechte 22
4.7 Filesysteme 28
4.8 Filesystem Hierarchy Standard (FHS) 29
4.9 Shell 30
4.9.1 Shell Typen 30
4.9.2 Shell Scripts 31
4.10 Daemons 32
5. Linux-PC 33
6. Raspberry Pi Betriebssystem 41
6.1 Vorbereitung der SD-Card 42
6.2 Raspberry Pi Bootprozess 43
6.3 Konfigurationstool raspi-config 44
6.4 Update Upgrade 53
6.5 Raspberry Pi Applikationen 53
6.5.1 Installierte Applikationen 53
6.5.2 Installation & Deinstallation von Software-Paketen 53
6.6 Programmentwicklung auf dem Raspberry Pi 55
6.6.1 Editoren 55
6.6.2 Compilation und Debugging 61
6.6.3 Adafruit WebIDE 63
7. Entwicklungsumgebung für Embedded Linux 64
7.1 Raspberry Pi im Netzwerk 65
7.2 Zugriff von einem Netzwerk-PC 67
7.2.1 Zugriff über LAN 68
7.2.2 Zugriff über WLAN 70
7.3 Zugriff von einem Android Device 72
7.4 Zugriff über VNC 79
7.5 Web Interface 83
8. CPU Boards 87
8.1 Raspberry Pi 87
8.2 Alternative Linux Boards 92
9. Hinweise zur Inbetriebnahme 94
10. Anwendungen 98
10.1 [Shell] - BoardInfo 99
10.2 System Informationen 104
10.2.1 [Shell] - SysInfo 104
10.2.2 [Shell] - aktuelle CPU-Temperatur 105
10.2.3 [Lua] - aktuelle CPU-Temperatur 106
10.2.4 [Shell] - aktuelle CPU-Frequenz 106
10.3 [Shell] - Datum & Uhrzeit 108
10.4 [Shell] - Cron Jobs 109
10.5 Digitale Ein-/Ausgabe 111
10.5.1 [Shell] - Digitale Ein-/Ausgabe 112
10.5.2 [C] - Digitale Ein-/Ausgabe 114
10.5.3 [Python] - Digitale Ein-/Ausgabe 116
10.5.4 [Lua] - Digitale Ein-/Ausgabe 117
10.6 [Shell] - Ansteuerung RGB LED 119
10.7 SPI und I2C 124
10.7.1 [C] - SPI Test 127
10.7.2 [C] - AD-Umsetzer MCP3208 am SPI 134
10.7.3 [Shell] - I2C Test 141
10.7.4 [C] - AD/DA-Subsystem am I2C-Bus 142
10.7.5 [C] - ADC Pi 147
10.7.6 Comm Pi 153
10.7.7 [C] - RasPiComm 155
10.8 PiFace Digital 156
10.8.1 [C] - PiFace 158
10.8.2 [Python] - PiFace 160
10.9 Gertboard 161
10.9.1 [C] - GPIO 163
10.9.2 [Python] - GPIO 166
10.10 Arduino Bridge 167
10.10.1 [C] - Library arduPi 169
10.10.2 [C] - GPIO 171
10.10.3 [C] - SPI 174
10.10.4 [C] - I2C-Bus 178
10.10.5 [C] - AD-Converter 179
10.10.6 [C] - UART 184
10.11 GNUBLIN-Module 186
10.12 AlaMode 188
10.13 [Shell] - USB 189
10.14 [Shell] - GNU Plot 192
10.15 [Shell] - Integritätstest von Dateien 197
10.16 Webcam 199
10.16.1 USB Webcam 199
10.16.2 PiEye - Webcam Streaming 204
10.16.3 Raspberry Pi Camera 205
10.17 Android Apps 211
10.17.1 RasPi Check 211
10.17.2 Raspberry Control 212
10.18 Smart IO Expansion Card for Raspberry PI 214
11. Benchmarks 216
11.1 UNIX Bench 216
11.2 Cyclictest 219
11.3 CoreMark 222
11.4 Scimark2 223
12. Shell Kommandos 224
13. Referenzen & Links 226
14. Index 232
15. Abbildungsverzeichnis 238
16. Anhang 244
16.1 Weiterführende Informationen 244
16.2 TFT-LCD-Monitor an Composite RCA 246
16.3 Raspberry Pi vs. ROW 248
16.4 Raspbian - Installierte Pakete 251
Notizen 270