Linux之内核Platform LED

目录

一、内核图形化配置

 二、设备树修改


在Linux内核中已经集成了LED驱动设备。 Linux 内核的 LED 灯驱动采用 platform 框架,因此只需要按照要求在设备树文件中添加相应的 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”键,使此选项前面变为“<*>”

然后保存,退出即可。 

把 Linux 内 部 自 带 的 LED 灯 驱 动 编 译 进 内 核 以 后 ,CONFIG_LEDS_GPIO 就会等于‘y’, Linux 会根据 CONFIG_LEDS_GPIO 的值来选择如何编译LED 灯驱动,如果为‘y’就将其编译进 Linux 内核。

打开.config 文件,会找到“CONFIG_LEDS_GPIO=y”(vi中 /表示搜索)

 重新编译 Linux 内核,然后使用新编译出来的 zImage 镜像启动开发板。

 二、设备树修改

打开文档 Documentation/devicetree/bindings/leds/leds-gpio.txt,此文档详细的讲解了 Linux 自带驱动对应的设备树节点该如何编写

 ①创建一个节点表示LED灯设备,如果板子上有多个 LED 灯的话每个 LED灯都作为该节点的子节点

②节点的 compatible 属性值一定要为“gpio-leds”,与驱动文件相匹配的

③(可选)设置 label 属性,此属性为可选,每个子节点都有一个 label 属性, label 属性一般表示LED 灯的名字

④每个子节点必须要设置 gpios 属性值,表示此 LED 所使用的 GPIO 引脚

⑤(可选)设置linux,default-trigger属性值,设置 LED 灯的默认功能。

⑥(可选)设置default-state属性值,为on的时LED灯默认打开,为 off时LED 灯默认关闭,为 keep时 LED 灯保持当前模式。

对于⑤可以查阅Documentation/devicetree/bindings/leds/common.txt 这个文档来查看可选功能

backlight: LED 灯作为背光。
default-on: LED 灯打开
heartbeat LED 灯作为心跳指示灯,可以作为系统运行提示灯
ide-disk: LED 灯作为硬盘活动指示灯。
timer: LED 灯周期性闪烁,由定时器驱动,闪烁频率可以修改

 设置LED灯为心跳指示灯

dtsleds {
    compatible = "gpio-leds";

    led0 {
        label = "red";
        gpios = <&gpio1 3 GPIO_ACTIVE_LOW>;
        default-state = "on";
        linux,default-trigger = "heartbeat";

    };
};

修改完成以后保存并重新编译设备树,然后用新的设备树启动开发板。启动以后 LED0 就会闪烁,作为系统心跳指示灯,表示系统正在运行。

内核leds-gpio驱动文件的函数:

module_platform_driver(gpio_led_driver);//gpio_led_driver是platform_driver驱动结构体

展开后为:

static int __init gpio_led_driver_init(void)
{
        return platform_driver_register (&(gpio_led_driver));
}


static void __exit gpio_led_driver_exit(void)
{
        platform_driver_unregister (&(gpio_led_driver) );
}

module_init(gpio_led_driver_init);
module_exit(gpio_led_driver_exit);
 

module_platform_driver 函数的功能就是完成 platform 驱动的注册和删除完成module_init和module_exit以及驱动入口和出口函数。
 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Super.Bear

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值