驅動框架7 使用gpiolib完成led驅動

2021-09-30 14:25:36 字數 2609 閱讀 1730

(1)第1步:使用gpio_request申請要使用的乙個gpio;

(2)第2步:gpio_direction_input/gpio_direction_output 設定輸入/輸出模式;

(3)第3步:設定輸出值gpio_set_value  獲取io口值gpio_get_value。

(1)在led1上編寫**測試通過;

(2)擴充套件支援led2和led3、led4,可以分開註冊,也可以使用gpio_request_array去一次註冊;

(3)學習linux中檢視gpio使用情況的方法

(4)**(驅動申請led1資源而已)

#include // module_init  module_exit

#include // __init __exit

#include #include #include #include #include #include #include #define gpio_led1 s5pv210_gpj0(3)

#define gpio_led2 s5pv210_gpj0(4)

#define gpio_led3 s5pv210_gpj0(5)

#define x210_led_off 1 // x210中led是正極接電源,負極節gpio

#define x210_led_on 0 // 所以1是滅,0是亮

static struct led_classdev mydev1; // 定義結構體變數

static struct led_classdev mydev2; // 定義結構體變數

static struct led_classdev mydev3; // 定義結構體變數

// 這個函式就是要去完成具體的硬體讀寫任務的

static void s5pv210_led1_set(struct led_classdev *led_cdev,enum led_brightness value)

else }

static void s5pv210_led2_set(struct led_classdev *led_cdev,

enum led_brightness value)

else }

static void s5pv210_led3_set(struct led_classdev *led_cdev,

enum led_brightness value)

else }

static int __init s5pv210_led_init(void)

else //申請成功後

// led1

mydev1.name = "led1";

mydev1.brightness = 0;

mydev1.brightness_set = s5pv210_led1_set;

ret = led_classdev_register(null, &mydev1);

if (ret < 0)

// led2

mydev2.name = "led2";

mydev2.brightness = 0;

mydev2.brightness_set = s5pv210_led2_set;

ret = led_classdev_register(null, &mydev2);

if (ret < 0)

// led3

mydev3.name = "led3";

mydev3.brightness = 0;

mydev3.brightness_set = s5pv210_led3_set;

ret = led_classdev_register(null, &mydev3);

if (ret < 0)

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("aston <[email protected]>"); // 描述模組的作者

module_description("s5pv210 led driver"); // 描述模組的介紹資訊

module_alias("s5pv210_led"); // 描述模組的別名資訊

Linux驅動開發7 gpiolib驅動led

學習記錄 1 為什麼需要gpiolib 1 乙個事實 很多硬體都要用到gpio gpio會復用 2 如果同乙個gpio被2個驅動同時控制了,就會出現bug 3 核心提供gpiolib來統一管理系統中所有gpio 4 gpiolib本身屬於驅動框架的一部分 2 演示 include module in...

驅動框架6 linux核心的gpiolib學習

1 主線一 gpiolib的建立過程 2 主線二 gpiolib的使用方法 申請 使用 釋放 3 主線三 gpiolib的架構 涉及哪些目錄的哪些檔案 1 以一條主線進去,堅持主線 2 中途遇到雜碎知識,徹底搞定之,然後繼續主線 3 隨時做筆記以加深理解和記憶 4 學習途中注意架構思想,提公升自己大...

資料驅動測試框架DDT的使用

資料驅動測試框架ddt的使用 ddt全程為data driver test資料驅動測試,是由測試資料驅動測試用例的執行,加入ddt框架,可以實現用例的重複執行以及 的重複使用,減少工作量。資料 分離為主流設計思路,在常見的測試體系中可以使用xml檔案 excel檔案 json檔案來管理測試資料,通過...