
Linux-Treiber entwickeln
Description
Alles über E-Books | Antworten auf Fragen rund um E-Books, Kopierschutz und Dateiformate finden Sie in unserem Info- & Hilfebereich.
More details
Other editions
Additional editions

Person
Content
- Intro
- Inhaltsverzeichnis
- Vorwort zur 5. Auflage
- 1 Einleitung
- 2 Theorie ist notwendig
- 2.1 Betriebssystemarchitektur
- 2.1.1 Komponenten des Kernels
- 2.1.2 Sonstige Betriebssystemkomponenten
- 2.2 Abarbeitungskontext und Unterbrechungsmodell
- 2.3 Quellensuche
- 3 Kernelcode-Entwicklung in der Praxis
- 3.1 Auf der Kommandoebene entwickeln
- 3.2 Fehler finden
- 3.3 Techniken der Kernelprogrammierung
- 3.3.1 Coding Style: Kernelcode lesen und Kernelcode schreiben
- 3.3.2 Kernelcode kodieren
- 3.3.3 Objektbasierte Programmierung und Entwurfsmuster im Kernel
- 3.3.4 Hilfsfunktionen
- 3.4 Cross-Development
- 3.5 Nicht vergessen: Auswahl einer geeigneten Lizenz
- 4 Treiber aus Sicht der Applikation
- 4.1 Die Programmierschnittstelle der Applikation
- 4.2 Zugriffsmodi
- 5 Einfache Treiber
- 5.1 Bevor es losgeht
- 5.2 Cross-Kompilierung
- 5.3 Den Kernel erweitern
- 5.4 Die Treibereinsprungspunkte
- 5.5 Zugriff über IO-Vektoren
- 5.6 Daten zwischen Kernel- und User-Space transferieren
- 5.7 Hardware anbinden
- 5.8 PCI
- 5.9 Device Tree
- 5.10 Treiberinstanzen
- 5.11 Treibertemplate: Basis für Eigenentwicklungen
- 6 Fortgeschrittene Kernelcode- Entwicklung
- 6.1 Zunächst die Übersicht
- 6.2 Interrupts
- 6.2.1 Interrupt-Verarbeitung klassisch
- 6.2.2 Threaded Interrupts
- 6.2.3 Interrupts, testen mit dem Raspberry Pi
- 6.3 Softirqs
- 6.3.1 Tasklets
- 6.3.2 Timer-Funktionen
- 6.3.3 High-Resolution Timer
- 6.4 Kernel-Threads
- 6.4.1 kthread-Daemon
- 6.4.2 Workqueues
- 6.4.3 Event-Workqueue
- 6.5 Kritische Abschnitte sichern
- 6.5.1 Atomare Operationen
- 6.5.2 Mutex und Semaphor
- 6.5.3 Spinlocks
- 6.5.4 Sequencelocks
- 6.5.5 Interrupt-Sperre und Kernel-Lock
- 6.5.6 Synchronisiert schlafen
- 6.5.7 Memory Barriers
- 6.5.8 Per-CPU-Variablen
- 6.5.9 Fallstricke
- 6.6 Vom Umgang mit Zeiten
- 6.6.1 Relativ- und Absolutzeiten
- 6.6.2 Zeitverzögerungen
- 6.7 Dynamischen Speicher effizient verwalten
- 6.7.1 Buddy-System
- 6.7.2 Objekt-Caching
- 6.7.3 Große Speicherbereiche reservieren
- 6.7.4 Speicher pro Prozessorkern
- 7 Systemaspekte
- 7.1 Proc-Filesystem
- 7.1.1 Schreibzugriffe unterstützen
- 7.1.2 Sequencefiles
- 7.2 Das Gerätemodell
- 7.2.1 Implementierungstechnische Grundlagen
- 7.2.2 Gerätedateien automatisiert anlegen lassen
- 7.2.3 Den Treiber als solches anmelden
- 7.2.4 Geräte anmelden
- 7.2.5 Attributdateien erstellen
- 7.2.6 Eigene Geräteklassen erstellen
- 7.2.7 Neue Bussysteme anlegen
- 7.3 Green Computing
- 7.3.1 Runtime-PM
- 7.3.2 System-PM
- 7.3.3 Leistungsbündelung
- 7.4 Firmware-Interface
- 7.5 Module parametrieren
- 7.6 Systemintegration
- 7.6.1 Modutils
- 7.6.2 Hotplug
- 7.6.3 Module beim Booten laden
- 7.7 Kernel Build System
- 7.7.1 Treiberquellen als integrative Erweiterung der Kernel- Quellen
- 7.7.2 Modultreiber außerhalb der Kernel-Quellen
- 7.8 Module automatisiert generieren (DKMS)
- 7.9 Intermodul-Kommunikation
- 7.10 Realzeitaspekte
- 8 Sonstige Treibersubsysteme
- 8.1 GPIO-Subsystem
- 8.2 I2C-Subsystem
- 8.3 Serial Peripheral Interface (SPI)
- 8.4 USB-Subsystem
- 8.4.1 USB programmtechnisch betrachtet
- 8.4.2 Den Treiber beim USB-Subsystem registrieren
- 8.4.3 Die Geräteinitialisierung und die -deinitialisierung
- 8.4.4 Auf das USB-Gerät zugreifen
- 8.5 Netzwerk-Subsystem
- 8.5.1 Datenaustausch zur Kommunikation
- 8.5.2 Netzwerktreiber initialisieren
- 8.5.3 Netzwerktreiber deinitialisieren
- 8.5.4 Start und Stopp des Treibers
- 8.5.5 Senden und Empfangen
- 8.6 Blockorientierte Gerätetreiber
- 8.6.1 Grundlegendes zu BIO-Blöcken
- 8.6.2 Grundlegende Blockgerätetreiber-Architektur
- 8.6.3 Daten kerneloptimiert transferieren
- 8.6.4 Treiberoptimierter Datentransfer
- 8.7 Crypto-Subsystem
- 8.7.1 Kleines Einmaleins der Kryptografie
- 8.7.2 Dienste in der Übersicht
- 8.7.3 Crypto-API-Architektur
- 8.7.4 Eigene Algorithmen einbinden
- 8.8 Industrial I/O
- 8.8.1 Subsystem-Architektur
- 8.8.2 Zugriff aus dem Userland
- 8.8.3 Treiber für das IIO-Subsystem
- 8.9 Watchdog-Subsystem
- 8.9.1 Applikationsseitiger Zugriff
- 8.9.2 Treiberschnittstelle
- 9 Über das Schreiben eines guten, performanten Treibers
- 9.1 Konzeption
- 9.1.1 Keine halben Sachen
- 9.1.2 Intuitive Nutzung durch Struktur
- 9.1.3 Sicher muss es sein
- 9.1.4 Funktional muss es sein
- 9.2 Realisierung
- 9.2.1 Sicherheitsgerichtetes Programmieren
- 9.2.2 Mit Stil programmieren
- 9.3 32 Bit und mehr: portierbarer Code
- 9.4 Zeitverhalten
- 10 Kernel generieren und installieren
- 10.1 Nativ kompilieren: PC-Plattform
- 10.2 Nativ kompilieren: Raspberry Pi
- 10.3 Cross-Kompilieren: PC als Host, Raspberry Pi als Target
- Literaturverzeichnis
- Index
System requirements
File format: PDF
Copy protection: Watermark-DRM (Digital Rights Management)
System requirements:
- Computer (Windows; MacOS X; Linux): Use the free software Adobe Reader, Adobe Digital Editions, or any other PDF viewer of your choice (see eBook Help).
- Tablet/Smartphone (Android; iOS): Install the free app Adobe Digital Editions or another reading app for eBooks, e.g., PocketBook (see eBook Help).
- E-reader: Bookeen, Kobo, Pocketbook, Sony, Tolino and many more (only limited: Kindle).
The file format PDF always displays a book page identically on any hardware. This makes PDF suitable for complex layouts such as those used in textbooks and reference books (images, tables, columns, footnotes). Unfortunately, on the small screens of e-readers or smartphones, PDFs are rather annoying, requiring too much scrolling.
This eBook uses Watermark-DRM, a „soft” copy protection. This means that there are no technical restrictions to prevent illegal distribution. However, there is a personalised watermark embedded in the eBook that can be used to identify the purchaser of the eBook in the event of misuse and to provide evidence for legal purposes.
For more information, see our eBook Help page.