(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檔案來管理測試資料,通過...