My Account Log in

1 option

Linux-Treiber entwickeln : Eine systematische Einführung in die Gerätetreiber- und Kernelprogrammierung / Jürgen Quade, Eva-Katharina Kunst.

O'Reilly Online Learning: Academic/Public Library Edition Available online

View online
Format:
Book
Author/Creator:
Quade, Jürgen, author.
Kunst, Eva-Katharina, author.
Language:
German
Subjects (All):
Programming languages (Electronic computers).
Linux.
Raspberry Pi (Computer).
Physical Description:
1 online resource (600 pages)
Edition:
3., aktualisierte und erweiterte Auflage.
Place of Publication:
Heidelberg : dpunkt.verlag, 2025.
Summary:
Hauptbeschreibung Hinweis: Dieses E-Book ist nicht mit interaktiven Elementen (aktives Inhaltsverzeichnis, Querverweise) ausgestattet! Wir bieten Ihnen das PDF daher zu einem günstigeren Preis an. Dieses Buch ermöglicht einen fundierten Einstieg in den Linux-Kernel mit einem Schwerpunkt auf der Entwicklung von Gerätetreibern. Für den ersten eigenen Kernelcode bietet es theoretische Grundlagen und wiederverwertbare Softwarebausteine. Dank der detaillierten Beschreibung von über 600 internen Systemfunktionen eignet sich das Buch als Nachschlagewerk. Die 3. Auflage wurde.
Contents:
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.
Notes:
Description based on publisher supplied metadata and other sources.
ISBN:
3-9889024-2-X
3-9889024-1-1
OCLC:
1547867482

The Penn Libraries is committed to describing library materials using current, accurate, and responsible language. If you discover outdated or inaccurate language, please fill out this feedback form to report it and suggest alternative language.

Find

Home Release notes

My Account

Shelf Request an item Bookmarks Fines and fees Settings

Guides

Using the Find catalog Using Articles+ Using your account