背景
其實之前就轉載過別人針對Linux的設備驅動模型(Linux Device Driver Model,LDDM)的文章,但是受限於自身的能力,因此花了點時間重新學習了一下。
前人寫的文章很好,我很受用。因此,我也嘗試通過我自己的方式來整理了一下。
基於 Linux 內核 v3.14。
目錄
標題 | 說明 |
---|---|
1、sysfs與kobject基類 | 介紹了搭建設備驅動模型的基石,kobject這個基類與sysfs的關系。 |
2、driver-bus-device與probe | 介紹設備 --總線 --驅動 框架,以及probe流程。 |
3、class與device | 介紹設備類如何組織在sysfs中的device |
4、uevent與熱插拔 | 介紹probe時發送uevent到用戶空間,以及用戶空間是如何處理的 |
5、平台設備驅動 | 介紹platform設備框架,以加深對設備 --總線 --驅動 框架 |
6、設備資源管理 | 介紹內核如何解決設備驅動中的資源管理問題 |
附錄:Linux 內核:sysfs 有關的API | sysfs api |
首先對sysfs的核心數據kobject,kset等數據結構做出了分析,正是通過它們才能向用戶空間呈現出設備驅動模型。
接着,以/sys/bus目錄的建立為例,來說明如何通過kobject和kset來建立該bus目錄。隨后,介紹了驅動模型中表示總線,設備和驅動的三個數據結構。
然后,補充了uevent
的一些知識。
最后介紹了platform總線(bus/platform)的注冊,再介紹了虛擬的platform設備(devices/platform)的添加過程。