Linux Hardware Hacks (eBook)
467 Seiten
Carl Hanser Fachbuchverlag
978-3-446-41362-7 (ISBN)
Jürgen Plate
Linux Hardware Hackz
Messen, Steuern und Sensorik mit Linux
LINUX GUT (EIN)GEBETTET
- Verschaffen Sie sich einen umfassenden Überblick über die Entwicklung von Embedded Systemen auf der Basis von Linux.
- Lassen Sie sich von den zahlreichen Praxisbeispielen inspirieren.
- Nutzen Sie die vielen Listings und Schaltungen für Ihre Projekte
Linux ist ein Multitalent. Es leistet nicht nur als Server-Betriebssystem hervorragende Dienste, sondern kann seine Stärken auch als Betriebssystem für eingebettete Systeme ausspielen. Zum Beispiel in einer Anwendung, mit der alle Getränkeautomaten auf dem Firmengelände selbstständig kontrollieren, wie gut sie gefüllt sind und dem Getränkelieferanten über eine Internetverbindung direkt mitteilen können, wann sie nachgefüllt werden müssen.
Wie Sie solche und ähnliche Mess-, Steuerungs- und Regelungsanwendungen konkret realisieren können, zeigt dieses Buch. Sie erfahren, wie Sie das Betriebssystem Linux für diese Zwecke verwenden, wie Betriebssystem-Kern und PC-Schnittstellen miteinander kommunizieren und wie man über digitale und analoge Aktoren und Sensoren die Brücke zur Außenwelt schlägt.
Die zahlreichen Praxisbeispiele, entweder mit industriellen Fertigkomponenten oder mit Schaltplänen (oft auch mit Platinenlayout) und dazugehörigen Programmen lassen sich unmittelbar in die Praxis umsetzen.
Über den Autor
Prof. Jürgen Plate unterrichtet am Fachbereich Elektrotechnik und Informationstechnik der FH München. Seine Fachgebiete umfassen neben anderem die Netzwerk-Technik und Internet-Technologie.
Er ist begeisterter Linux-User...
Die Inhalte der CD-ROM können nach Kauf und Download dieses eBooks auf Anfrage zur Verfügung gestellt werden.
Inhaltsverzeichnis 10
Vorwort 18
Prolog 22
Spannungsversorgung der Schaltungen 24
Sicherheitshinweise 26
Embedded Systems 28
1.1 Einführung 28
1.1.1 Design von Embedded Systems 30
1.1.2 Hardware für Embedded Systems 31
1.2 Embedded Linux 33
1.3 Was man fur¨ Embedded Linux benötigt 35
1.4 Linux booten 40
1.4.1 Den Kernel booten 41
1.4.2 System V-Init 43
1.5 Entwicklungsumgebung 45
1.6 Hardwarezugriffe 47
1.7 Grafikausgabe 48
1.8 Linux ganz klein 52
Die eigene Linux-Distribution 58
2.1 Einführung 58
2.2 Das Root-Dateisystem bauen 60
2.2.1 Konfiguration des Kernels 61
2.2.2 Kompilation des Kernels 62
2.2.3 Installation des Kernels 62
2.2.4 Root-Dateibaum erstellen 64
2.2.5 Aufbau des Verzeichnisbaums 66
2.2.6 CD-ROM brennen 73
2.2.7 Inhalt von ISO-Dateien ändern 78
2.2.8 Live-CD auf die Schnelle 79
2.3 Weitere Wege zur eigenen Distribution 80
E/A-Programmierung 82
3.1 Compiler und Bibliotheken 83
3.2 Prozesse und Signale 85
3.2.1 Prozesse 86
3.2.2 Signale 93
3.2.3 Prozesskommunikation mit Pipes 101
3.2.4 Programme schlafen legen 105
3.3 User-Mode-Programmierung 106
3.3.1 Programme mit Root-Rechten ausstatten 106
3.3.2 UID und GID 107
3.3.3 Zugriff auf E/A-Ports im User-Space 109
3.4 Device-Treiber 112
3.4.1 Das Device-Konzept 112
3.4.2 Konzept der Gerätetreiber 115
3.4.3 Kernel-Module 117
3.4.4 Portbereiche reservieren 120
3.4.5 Dateifunktionen implementieren 121
3.4.6 Daten von Treiberinstanzen 130
3.4.7 IO-Control 131
Standard-PC-Schnittstellen 134
4.1 PC-Schnittstellen 134
4.2 Die serielle Schnittstelle 135
4.2.1 Die serielle PC-Schnittstelle 136
4.2.2 Die RS232C-Schnittstelle (V.24) 140
4.2.3 Die RS422-Schnittstelle 142
4.2.4 Die RS485-Schnittstelle 143
4.2.5 Die Stromschnittstelle(TTY) 145
4.2.6 Programmierung mit C 147
4.2.7 Programmierung mit Perl 158
4.3 Die parallele Schnittstelle 159
4.3.1 Hardware der parallelen Schnittstelle 160
4.3.2 Port-Typen 166
4.3.3 Programmierung der parallelen Schnittstelle 168
4.3.4 Die Parapin-Bibliothek 171
4.3.5 Ansprechen der Schnittstelle in Perl 174
4.4 Der Joystick-Port 175
4.5 Der interne Lautsprecher 179
4.6 Die Tastaturschnittstelle 182
4.7 Die USB-Schnittstelle 184
4.7.1 USB-Hardware 185
4.7.2 USB-Geräte für Linux 188
Chip-Schnittstellen 192
5.1 Die SPI-Schnittstelle 192
5.2 Der I2C-Bus 194
5.3 Der 1-Wire-Bus 195
Digitale Ein- und Ausgabe 198
6.1 TTL und CMOS koppeln 198
6.2 Eingangs-Interface-Schaltungen 199
6.3 Taster und Schalter 200
6.3.1 Kontaktprellen 200
6.3.2 Tastatur-Interfaces 201
6.3.3 Reed-Kontakte und Hall-Schalter 203
6.3.4 Optokoppler 206
6.4 Ausgangs-Interface-Schaltungen 207
6.4.1 Verstärker-ICs 208
6.4.2 Feldeffekt-Transistoren 210
6.4.3 IGBTs 212
6.4.4 Optokoppler 213
6.4.5 Ansteuerung von Wechselspannungsverbrauchern 213
6.4.6 Halbleiter-Relais 215
6.4.7 Relais 217
6.4.8 Jogdial einmal anders 228
Motorsteuerung 230
7.1 Einführung 230
7.2 Entstörung 231
7.3 Motoren steuern mit einer H-Brücke 232
7.3.1 H-Brücke (H-Bridge) mit diskreten Bauteilen 232
7.3.2 H-Brücke mit integrierten Schaltungen 235
7.4 Drehzahlsteuerung mittels PWM 239
7.5 Servosteuerung 242
7.5.1 Der FT 639 244
7.5.2 Der MIC 800 250
7.6 Schrittmotoren 252
7.6.1 Arbeitsprinzip von Schrittmotoren 253
7.6.2 Ansteuerung eines Schrittmotors 254
7.6.3 Kenngrößen eines Schrittmotors 257
7.6.4 Schrittmotor-Interface 258
7.6.5 Beschleunigung und Verzögerung 262
Anzeigen und Displays 266
8.1 LED-Anzeigen 266
8.2 Displays 272
8.2.1 LCD- und OLED-Grundlagen 273
8.2.2 Displaytypen 275
8.2.3 Zeichenadressierung 276
8.2.4 Anschluss des LC-Displays 277
8.2.5 Ansteuerung von LCDs 280
8.2.6 Eigene Zeichen definieren 284
8.2.7 Initialisierung des Displays 286
8.2.8 Display-Software 287
8.3 LCD für Warmduscher 290
8.4 Grafikdisplays 291
Fernschalten 296
9.1 Infrarot-Fernsteuerung 296
9.2 Funk-Fernsteuerung 300
9.3 Fernsteuerung per Mobiltelefon 305
Digitale Fotosensoren 310
10.1 Fotohalbleiter 311
10.1.1 Fotoelemente und Fotodioden 311
10.1.2 PIN-Dioden 312
10.1.3 Fototransistoren 312
10.1.4 Fotowiderstände 313
10.2 Lichtschranken 313
10.2.1 Exkurs: Timerbaustein NE555 314
10.2.2 Lichtschranken mit Gleichlicht 316
10.2.3 Lichtschranken mit Wechsellicht 319
10.3 Optische Abstands-Sensoren 323
10.3.1 Abstandssensor IS471F 323
10.3.2 Abstände per Infrarot messen 324
Die analoge Welt 328
11.1 Analogschaltungen 328
11.1.1 Kondensatoren 329
11.1.2 Festwiderstände 330
11.2 Operationsverstärker-Grundlagen 330
11.2.1 Operationsverstärker-Grundschaltungen 331
11.2.2 Operationsverstärker-Kenngrößen 333
11.2.3 Differenzverstärker 335
11.3 Die Digital-Analog-Wandlung 338
11.3.1 Digital-Analog-Wandler 338
11.3.2 Realisierung von D/A-Wandlern 340
11.4 Die Analog-Digital-Wandlung 344
11.4.1 Das Abtasttheorem 344
11.4.2 Analog/Digital-Wandler 346
11.4.3 Sample-and-Hold-Schaltung 348
11.4.4 Konversionsfehler 348
11.4.5 Realisierung von A/D-Wandlern 349
Messung von Spannung, Strom und Widerstand 356
12.1 Präzisions-Widerstands-Vorteiler 357
12.2 Widerstandsmessung 361
12.3 Messbrücke 362
Sensoren 366
13.1 Potentiometer als Weg- oder Winkelsensoren 367
13.2 Temperatursensoren 367
13.2.1 Heißleiter 367
13.2.2 Kaltleiter 368
13.2.3 Platin-Temperaturmesswiderstand 370
13.2.4 Halbleiter-Temperatursensoren 371
13.2.5 Temperaturmessung mit Thermoelementen 377
13.2.6 Temperaturmessung mit Quarzen 380
13.3 Druck- und Kraftsensoren 380
13.3.1 Dehnungsmessstreifen 381
13.3.2 Folien-Kraftsensoren 383
13.3.3 Drucksensoren 384
13.4 Beschleunigungs-Sensoren 390
13.5 Kompass-Sensoren 392
13.6 Kapazitive Sensoren (Feuchtesensoren) 395
13.7 Schallsensoren 400
13.8 Gassensoren 410
13.9 Messung von Radioaktivität 419
13.9.1 Der Geigerzähler 420
13.9.2 Geigerzähler-Schaltungstechnik 422
13.9.3 Software zum Zählen der Impulse 425
13.10 Spezielle Fotosensoren 426
13.10.1 Licht-Spannungs-Wandler 426
13.10.2 Farbsensoren 426
13.11 Bewegungsmelder 429
13.11.1 Infrarot-Bewegungsmelder 429
13.11.2 Radar-Bewegungsmelder 430
13.12 Kameraüberwachung 432
Datenauswertung 434
14.1 Messfehler 434
14.2 Filterung von Messwerten 435
14.3 Statistische Verarbeitung von Messwerten 437
14.3.1 Tabellarische und graphische Darstellung 437
14.3.2 Mittelwert, Varianz, Standardabweichung, Standardfehler 440
14.3.3 Minimum, Maximum, Median, Modalwert 442
14.3.4 Aufrufbeispiel 443
14.3.5 Lineare Regression 443
14.4 Grafik-Tools für die Messwert-Darstellung 446
14.4.1 Gnuplot 448
14.4.2 LabPlot 450
14.4.3 Datendarstellung mit MRTG 451
Anhang 454
A.1 Literatur 454
A.2 Links 456
A.3 Bezugsquellen 458
Stichwortverzeichnis 460
3 E/A-Programmierung
Wie schon im ersten Kapitel angedroht, geht es nun um das Ansprechen von Hardware per Programm. Dort wurde auch schon gesagt, dass es zwei Möglichkeiten gibt, E/E-Schnittstellen anzusprechen: Treiber oder direkter Portzugriff, der unter dem Begriff User-Mode-Programm läuft.
Kernel-Treiber sind, wie der Name schon sagt, Bestandteil des Kernels. Sobald sie eingebunden sind, können sie von allen Programmen gleichermaßen und ohne besondere Privilegien genutzt werden. Sie werden aus anderen Programmen angesprochen über
Einträge im /dev-Verzeichnis,
das /proc-Verzeichnis oder
ioctl()-Aufrufe.
Damit folgen die Treiber auch dem UNIX/Linux-Grundsatz " Alles ist Datei". Dieser Vorteil wird durch eine komplexere Programmierung erkauft. So ist z. B. der Zugriff auf Bibliotheksfunktionen eingeschränkt. Die Alternative besteht in User-Mode-Programmen, die direkt auf E/A-Ports zugreifen und damit auch immer nur mit Root-Privilegien starten müssen (nach erfolgreicher Missetat kann man auf normale User-Privilegien umschalten). Verwendet man dagegen ein User-Mode-Programm für Hardwarezugriffe, gilt:
die C Library kann benutzt werden,
Debugging ist einfacher und
Paging ist möglich.
Die Programmierung ist somit viel einfacher. Aber es gibt auch Nachteile gegen über einem Treiber:
Interrupts lassen sich nicht verwenden,
Performance ist nicht so gut wie bei Kernel-Treibern,
Verzögerungen entstehen durch den Scheduler und
Root-Rechte sind für den Zugriff erforderlich.
Bei Embedded Systems, wo nur wenige Prozesse laufen und ein User-Login meist gar nicht möglich ist,überwiegt oft der Vorteil der einfachen Programmierung. Der Abschnittüber Treiber und auch die entsprechenden Abschnitte in anderen Kapiteln müssen zwangsläufig rudimentär sein, sonst wäre dieses Buch mindestens 500 Seiten dicker geworden. Alle, die mehr wissen wollen, seien auf das Buch von Quade und Kunst bzw. dessenWebseite http://ezs.kr.hsnr.de/TreiberBuch/ verwiesen. Deshalb wird nach einem kurzen Ausflug zum Compiler zuerst die User-Mode- Programmierung behandelt, anschließend gibt es einen kleinen Ausflug in die Treiberentwicklung.
3.1 Compiler und Bibliotheken
Wenn Sie mit gängigen Distributionen arbeiten, installieren Sie zumeist nur fertig kompilierte Programme (sogenannte Binärpakete). Für unsere Anwendungen müssen Sie in der Regel den Quellcode herunterladen oder selbst verfassen und dann das Programm selbst kompilieren. Deshalb gebe ich Ihnen dazu einige einführende Tipps.
Praktisch alle Linux-Programme verwenden dieselben Standardfunktionen, beispielsweise zum Zugriff auf Dateien, zur Ausgabe am Bildschirm, zur Unterst ützung von X etc. Es wäre sinnlos, wenn jedes noch so kleine Programm all diese Funktionen unmittelbar imCode enthaltenwürde – riesige Programmdateien wären die Folge. Stattdessen bauen die meisten Linux-Programme auf sogenannten shared libraries auf: Bei der Ausführung eines Programms werden automatisch auch die erforderlichen Libraries (Bibliotheken) geladen. Der Vorteil:Wenn mehrere Programme Funktionen derselben Library nutzen, muss diese nur einmal geladen werden.
Bibliotheken spielen eine zentrale Rolle dabei, ob und welche Programme auf Ihrem Rechner ausgeführt werden können. Fehlt auch nur eine einzige Bibliothek (bzw. steht sie in einer zu alten Version zur Verfügung), kommt es beim Programmstart sofort zu einer Fehlermeldung.
Kompilierte Programme können nur dann ausgeführt werden, wenn die dazu passenden Bibliotheken installiert sind und auch gefunden werden. Mit dem Kommando ldd kann man feststellen, welche Bibliotheken von einem Programm benötigt werden. ldd wird als Parameter der vollständige Dateiname des Programms übergeben. Als Reaktion listet ldd alle Libraries auf, die das Programm benötigt. Außerdem wird angegeben, wo sich eine passende Library befindet und welche Libraries fehlen bzw. nur in einer veralteten Version zur Verfügung stehen. Wenn ldd das Ergebnis not a dynamic executable liefert, handelt es sich um ein Programm, das alle erforderlichen Bibliotheken bereits enthält (ein statisch gelinktes Programm).
Erscheint lt. Verlag | 1.1.2007 |
---|---|
Sprache | deutsch |
Themenwelt | Informatik ► Betriebssysteme / Server ► Unix / Linux |
ISBN-10 | 3-446-41362-6 / 3446413626 |
ISBN-13 | 978-3-446-41362-7 / 9783446413627 |
Haben Sie eine Frage zum Produkt? |
Größe: 10,8 MB
DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasserzeichen und ist damit für Sie personalisiert. Bei einer missbräuchlichen Weitergabe des eBooks an Dritte ist eine Rückverfolgung an die Quelle möglich.
Dateiformat: PDF (Portable Document Format)
Mit einem festen Seitenlayout eignet sich die PDF besonders für Fachbücher mit Spalten, Tabellen und Abbildungen. Eine PDF kann auf fast allen Geräten angezeigt werden, ist aber für kleine Displays (Smartphone, eReader) nur eingeschränkt geeignet.
Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür einen PDF-Viewer - z.B. den Adobe Reader oder Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür einen PDF-Viewer - z.B. die kostenlose Adobe Digital Editions-App.
Zusätzliches Feature: Online Lesen
Dieses eBook können Sie zusätzlich zum Download auch online im Webbrowser lesen.
Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.
aus dem Bereich