IMX6ULL驅動學習 Linux自帶LED驅動

2021-10-07 15:46:11 字數 1891 閱讀 1347

裝置操作

linux 核心整合了led驅動,採用platform框架,我們只需要在編譯核心時選擇led驅動,在裝置樹檔案中新增led節點即可。

$ make menuconfig
->device drivers

->led support(new_leds[=y])

->led support for gpio connected leds

按y使能。儲存退出,然後編譯核心。

在上面使能led驅動後,drivers/leds/leds-gpio.c就會被編譯。

leds-gpio.c中有裝置匹配表如下:

static const struct of_device_id of_gpio_leds_match = ,

,};......

static struct platform_driver gpio_led_driver = ,

};module_platform_driver(gpio_led_driver);

#define module_platform_driver(__platform_driver) \

module_driver(__platform_driver, platform_driver_register, \

platform_driver_unregister)

可以看出是乙個巨集,依賴於module_driver()module_driver()定義在include/linux/device.h中,如下:

#define module_driver(__driver, __register, __unregister, ...) \

static int __init __driver##_init(void) \

\module_init(__driver##_init); \

static void __exit __driver##_exit(void) \

\module_exit(__driver##_exit);

由此可知,將module_platform_driver(gpio_led_driver);展開後為:

static int __init gpio_led_driver_init(void)

module_init(gpio_led_driver_init);

static void __exit gpio_led_driver_exit(void)

module_exit(gpio_led_driver_exit);

即為platform驅動的註冊和刪除。

backlight	:	led作為背光 

default-on : led燈預設開啟

default-off : led燈預設關閉

heartbeat : led作為心跳燈,作為系統執行提示燈

ide-disk : led作硬碟活動指示燈

timer : led週期性閃爍,由定時器驅動,閃爍頻率可以修改。

新增dtsled節點如下:

dtsleds ;

};

編譯裝置樹,重啟。

echo 1 > /sys/class/leds/red/brightness //開啟 led0

echo 0 > /sys/class/leds/red/brightness //關閉 led0

IMX6ULL學習筆記(一)

imx6ull裸機開發學習 以下內容是我在學習正點原子imx6ull開發板alpha中記錄的筆記,部分摘錄自正點原子imx6ull開發手冊。bin檔案前面要新增頭部 ivt boot data dcd資料 由官方手冊可知要燒寫到sd卡中的load.imx檔案在sd卡中的起始位址是0x400,也就是1...

IMX6ULL學習筆記(三)

imx6ull裸機開發學習 以下內容是我在學習正點原子imx6ull開發板alpha中記錄的筆記,部分摘錄自正點原子imx6ull開發手冊。鏈結指令碼的例子 sections rodata align 4 data align 4 bss start bss align 4 bss end bss ...

IMX6ULL學習筆記(六)

imx6ull裸機開發學習 以下內容是我在學習正點原子imx6ull開發板alpha中記錄的筆記,部分摘錄自正點原子imx6ull開發手冊。首先使用預設配置檔案,編譯下測試linux能否在板子上執行。配置檔案所在路徑arch arm configs imx v7 mfg defconfig 通過修改...