Linux 内核已经集成了像 LED 灯这样非常基础的设备驱动。Linux 内核的 LED 灯驱动采用platform 框架,因此我们只需要按照要求在设备树文件中添加相应的 LED 节点即可。
一、Linux内核自带LED驱动使能
要使用 Linux 内核自带的 LED 灯驱动首先得先配置 Linux 内核,使能自带的 LED 灯驱动,输入如下命令打开 Linux 配置菜单:
make menuconfig
按照如下路径打开 LED 驱动配置项:
-> Device Drivers
-> LED Support (NEW_LEDS [=y])
->LED Support for GPIO connected LEDs
按照上述路径,选择“LED Support for GPIO connected LEDs”,将其编译进 Linux 内核,也即是在此选项上按下“Y”键,使此选项前面变为“<*>”,如图:
在“LED Support for GPIO connected LEDs”上按下‘?’ 可以打开此选项的帮助信息:
把 Linux 内 部 自 带 的 LED 灯 驱 动 编 译 进 内 核 以 后 ,CONFIG_LEDS_GPIO 就会等于‘y’, Linux 会根据 CONFIG_LEDS_GPIO 的值来选择如何编译LED 灯驱动,如果为‘y’就将其编译进 Linux 内核。
配置好 Linux 内核以后退出配置界面,打开.config 文件,会找到“CONFIG_LEDS_GPIO=y”这一行,如图所示:
重新编译 Linux 内核,然后使用新编译出来的 zImage 镜像启动开发板,开发板内就会LED灯驱动。
二、Linux内核自带LED驱动简介
1、LED灯驱动框架分析
LED 灯驱动文件为/drivers/leds/leds-gpio.c,可以打开/drivers/leds/Makefile 这个文件,找到如下所示内容:
# LED Core
obj-$(CONFIG_NEW_LEDS) += led-core.o
.....
obj-$(CONFIG_LEDS_GPIO_REGISTER) += leds-gpio-register.o
obj-$(CONFIG_LEDS_GPIO) += leds-gpio.o
2obj-$(CONFIG_LEDS_LP3944) += leds-lp3944.o
......
如果定义了 CONFIG_LEDS_GPIO 的话就会编译 leds-gpio.c 这个文件,选择将 LED 驱动编译进 Linux 内核,在.config 文件中就会有“CONFIG_LEDS_GPIO=y”这一行,因此 leds-gpio.c