Linux-Treiber entwickeln - Eine systematische Einführung in die Gerätetreiber- und Kernelprogrammierung - jetzt auch für Raspberry Pi

Linux-Treiber entwickeln - Eine systematische Einführung in die Gerätetreiber- und Kernelprogrammierung - jetzt auch für Raspberry Pi

 

 

 

von: Jürgen Quade, Eva-Katharina Kunst

dpunkt, 2015

ISBN: 9783864917561

Sprache: Deutsch

688 Seiten, Download: 23210 KB

 
Format:  EPUB, PDF, auch als Online-Lesen

geeignet für: geeignet für alle DRM-fähigen eReader geeignet für alle DRM-fähigen eReader Apple iPad, Android Tablet PC's Apple iPod touch, iPhone und Android Smartphones Online-Lesen PC, MAC, Laptop
Typ: A (einfacher Zugriff)

 

eBook anfordern

Mehr zum Inhalt

Linux-Treiber entwickeln - Eine systematische Einführung in die Gerätetreiber- und Kernelprogrammierung - jetzt auch für Raspberry Pi



  Einleitung 11  
  Theorie ist notwendig 19  
     Betriebssystemarchitektur 19  
        Komponenten des Kernels 20  
        Sonstige Betriebssystemkomponenten 33  
     Abarbeitungskontext und Unterbrechungsmodell 34  
     Quellensuche 37  
  Kernelcode-Entwicklung in der Praxis 41  
     Auf der Kommandoebene entwickeln 42  
        Fehler finden 52  
     Techniken der Kernelprogrammierung 62  
        Coding Style: Kernelcode lesen und Kernelcodeschreiben 62  
        Kernelcode kodieren 64  
        Objektbasierte Programmierung und Entwurfsmuster im Kernel 66  
        Hilfsfunktionen 70  
     Cross-Development 72  
     Nicht vergessen: Auswahl einer geeigneten Lizenz 74  
        GPL und LGPL 75  
        MPL und BSD 76  
  Treiber aus Sicht der Applikation 79  
     Die Programmierschnittstelle der Applikation 79  
     Zugriffsmodi 84  
  Einfache Treiber 89  
     Bevor es losgeht … 90  
     Cross-Kompilierung 92  
     Den Kernel erweitern 93  
        Kernelmodule 93  
        Vom Modul zum Treiber 98  
        Einfaches Treibertemplate 101  
     Die Treibereinsprungspunkte 105  
        driver_open: die Zugriffskontrolle 108  
        Aufräumen in driver_close 111  
        Lesezugriffe im Treiber 111  
        Schreibzugriffe im Treiber 121  
        Die Universalschnittstelle IO-Control 123  
        Wenn Applikationen mehrere Ein-/Ausgabekanäleüberwachen 127  
     Daten zwischen Kernel- und Userspace transferieren 130  
     Hardware anbinden 134  
        Datentypen und Datenablage 135  
        Ressourcenmanagement 136  
        Direkter Hardwarezugriff 145  
        Hardware erkennen 150  
        Device Tree 154  
        PCI 160  
     Treiberinstanzen 173  
     Treibertemplate: Basis für Eigenentwicklungen 175  
  Fortgeschrittene Kernelcode-Entwicklung 181  
     Zunächst die Übersicht 182  
     Interrupts 183  
        Interruptverarbeitung klassisch 183  
        Threaded Interrupts 187  
        Interrupts, testen mit dem Raspberry Pi 191  
     Softirqs 199  
        Tasklets 200  
        Timer-Funktionen 203  
        High Resolution Timer 207  
        Tasklet auf Basis des High Resolution Timers 210  
     Kernel-Threads 211  
        kthread-Daemon 213  
        Workqueues 216  
        Event-Workqueue 221  
     Kritische Abschnitte sichern 222  
        Atomare Operationen 223  
        Mutex und Semaphor 229  
        Spinlocks 240  
        Sequencelocks 247  
        Interruptsperre und Kernel-Lock 250  
        Synchronisiert warten 251  
        Memory Barriers 254  
        Per-CPU-Variablen 256  
        Fallstricke 256  
     Vom Umgang mit Zeiten 258  
        Relativ- und Absolutzeiten 258  
        Zeitverzögerungen 264  
     Dynamischen Speicher effizient verwalten 267  
        Buddy-System 268  
        Objekt-Caching 270  
        Große Speicherbereiche reservieren 275  
        Speicher pro Prozessorkern 276  
  Systemaspekte 281  
     Proc-Filesystem 282  
        Schreibzugriffe unterstützen 287  
        Sequencefiles 290  
     Das Gerätemodell 295  
        Implementierungstechnische Grundlagen 299  
        Gerätedateien automatisiert anlegen lassen 300  
        Treiber anmelden 302  
        Geräte anmelden 304  
        Attributdateien erstellen 310  
        Eigene Geräteklassen erstellen 314  
        Neue Bussysteme anlegen 315  
     Green Computing 316  
     Firmware-Interface 328  
     Treiber parametrieren 334  
     Systemintegration 339  
        Modutils 341  
        Hotplug 344  
        Module beim Booten laden 345  
     Kernel Build System 345  
        Treiberquellen als integrative Erweiterung der Kernelquellen 346  
        Modultreiber außerhalb der Kernelquellen 350  
     Module automatisiert generieren (DKMS) 352  
     Intermodul-Kommunikation 357  
     Realzeitaspekte 362  
  Sonstige Treibersubsysteme 367  
     GPIO-Subsystem 367  
     I2C-Subsystem 372  
     Serial Peripheral Interface (SPI) 380  
     USB-Subsystem 388  
        USB programmtechnisch betrachtet 389  
        Den Treiber beim USB-Subsystem registrieren 393  
        Die Geräteinitialisierung und die -deinitialisierung 395  
        Auf das USB-Gerät zugreifen 397  
     Netzwerk-Subsystem 403  
        Datenaustausch zur Kommunikation 404  
        Netzwerktreiber initialisieren 406  
        Netzwerktreiber deinitialisieren 407  
        Start und Stopp des Treibers 407  
        Senden und Empfangen 408  
     Blockorientierte Gerätetreiber 413  
        Bevor es richtig losgeht … 416  
        Daten kerneloptimiert transferieren 418  
        Grundlegendes zu BIO-Blöcken 424  
        Treiberoptimierter Datentransfer 428  
     Crypto-Subsystem 430  
        Kleines Einmaleins der Kryptografie 430  
        Dienste in der Übersicht 433  
        Eigene Algorithmen einbinden 444  
  Über das Schreiben eines guten, performanten Treibers 451  
     Konzeption 451  
        Keine halben Sachen … 452  
        Intuitive Nutzung durch Struktur 453  
        Sicher muss es sein 454  
        Funktional muss es sein 455  
     Realisierung 455  
        Sicherheitsgerichtetes Programmieren 455  
        Mit Stil programmieren 456  
     32 Bit und mehr: Portierbarer Code 461  
     Zeitverhalten 466  
  Anhang 471  
     Kernel generieren und installieren 473  
        Nativ kompilieren: PC-Plattform 475  
        Nativ kompilieren: Raspberry Pi 479  
        Cross-Kompilieren: PC als Host, Raspberry Pi als Target 480  
     Makros und Funktionen des Kernels kurz gefasst 485  
     Literaturverzeichnis 669  
     Index 671  
  www.dpunkt.de 0  

Kategorien

Service

Info/Kontakt

  Info
Hier gelangen Sie wieder zum Online-Auftritt Ihrer Bibliothek