(1)驅動開發工程師;
(2)核心維護者;
(1)介面標準化;
(2)核心開發者應該盡量降低驅動開發者難度;
(1)驅動框架
(2)核心維護者在核心中設計了一些(統一管控系統資源的)體系
(3)一些特定的介面函式、一些特定的資料結構,這些是驅動框架的直接表現。
(1)drivers/leds目錄
(2)drivers/leds目錄下有led-class.c和led-core.c
(3)此目錄下有leds-***x.c
(1)核心開發者對驅動框架進行開發和維護、公升級,對應led-class.c和led-core.c;
(2)soc廠商的驅動工程師對裝置驅動原始碼進行編寫、除錯,提供參考版本,對應leds-s3c24xx.c;
(3)做產品的廠商的驅動工程師以soc廠商提供的驅動原始碼為基礎,來做移植和除錯;
當前核心中沒有led驅動框架,要去新增它。(/sys/class目錄下沒有此類,因此要去新增此類)
配置核心,make menuconfig
device drivers --->
[*] led support --->
led class support
int led_classdev_register(struct device *parent, struct led_classdev *led_cdev)
完整的led驅動看一下led_classdev中的主要成員
struct led_classdev ;
安裝好led驅動之後,進入/sys/class/leds/led#include #include #include static struct led_classdev mydev;
/* led設定介面 */
static void s5pv210_led_set(struct led_classdev *led_cdev, enum led_brightness value)
static int __init s5pv210_led_init(void)
return 0;
}static void __exit s5pv210_led_exit(void)
module_init(s5pv210_led_init);
module_exit(s5pv210_led_exit);
// module_***這種巨集作用是用來新增模組描述資訊
module_license("gpl"); // 描述模組的許可證
module_author("lsm"); // 描述模組的作者
module_description("s5pv210 led driver"); // 描述模組的介紹資訊
module_alias("s5pv210_led"); // 描述模組的別名資訊
列印出s5pv210_led_set,表示使用led框架成功。
linux驅動之 led驅動
練手,第乙個字元驅動.用模組載入方法 華清遠見 嵌入式linux裝置驅動開發詳解 的 拿來改的.編譯過程發現很多錯誤.最後發現 這本書帶的驅動 都是基於linux2.4的.目前我用的linux2.6,部分需要做修改.我的板子是 友善之臂的 2410.vmware ubuntu nfs交叉編譯 首先 ...
Linux核心中LED驅動框架
朱有鵬老師驅動開發學習筆記 1 讀寫led裝置屬性檔案 led裝置屬性的show和store方法 led裝置驅動程式 操作led硬體裝置 2 led classdev結構體定義 struct led classdev 3 編寫led驅動程式其實就是填充led classdev結構體內的成員,並在模組...
基於led框架的驅動分析
本文的led驅動使用了核心提供的led框架介面,這種驅動實現與普通字元裝置驅動有著本質的區別。此外還融合了platform和gpiolib,需要結合這兩者來分析本驅動。該驅動本質是 通過讀寫 sys class leds 內的檔案,觸發led classdev 裝置體 內的函式,從而實現操作硬體。整...