驅動框架之LED

2021-09-09 06:30:06 字數 1609 閱讀 9326

(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_classdev中的主要成員

struct led_classdev ;

完整的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"); // 描述模組的別名資訊

安裝好led驅動之後,進入/sys/class/leds/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 裝置體 內的函式,從而實現操作硬體。整...