裝置操作
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 通過修改...