笔记:linux中LED驱动设备树配置和用法

这篇具有很好参考价值的文章主要介绍了笔记:linux中LED驱动设备树配置和用法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

设备树中节点配置

设备树中的LED驱动一般是这样写,LED驱动可以控制GPIO的电平变化,生成文件节点很方便

leds: leds {
		compatible = "gpio-leds";
		gpio_demo: gpio_demo {
			label = "gpio_demo";
			gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "default-off";
			default-state = "on";
		};
}

字段解释

compatible = "gpio-leds";

对应了驱动中 drivers/leds/leds-gpio.c这个驱动文件

label = "gpio_demo";

这个名字会在文件系统中生成对应的设备节点

/sys/class/leds/gpio_demo

linux,default-trigger = "default-off";

指的是led的触发方式  default-off是默认none作为普通的功能来使用

gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_HIGH>;

前面两个参数是设置哪个GPIO

后面一个参数是指的高低电平有效

default-state = "on";

默认状态 on或者off

设置方式和电平的关系

设置方式

默认电平

brightness=0

brightness>0

gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_HIGH>;

linux,default-trigger = "default-off";  

default-state = "on"

    高     

gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_HIGH>;

linux,default-trigger = "default-off";

default-state = "off"

gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_LOW>;

linux,default-trigger = "default-off";

default-state = "on"

gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_LOW>;

linux,default-trigger = "default-off";

default-state = "off"

触发方式

触发方式linux,default-trigger = "default-off";

触发方式类型可以参考使用内核里面的支持项,源码在drivers\leds\trigger下面

drivers/leds/trigger/ledtrig-activity.c

drivers/leds/trigger/ledtrig-audio.c

drivers/leds/trigger/ledtrig-backlight.c

drivers/leds/trigger/ledtrig-camera.c

drivers/leds/trigger/ledtrig-cpu.c

drivers/leds/trigger/ledtrig-default-on.c

drivers/leds/trigger/ledtrig-disk.c

drivers/leds/trigger/ledtrig-gpio.c

drivers/leds/trigger/ledtrig-heartbeat.c

drivers/leds/trigger/ledtrig-mtd.c

drivers/leds/trigger/ledtrig-multi-control.c

drivers/leds/trigger/ledtrig-netdev.c

drivers/leds/trigger/ledtrig-oneshot.c

drivers/leds/trigger/ledtrig-panic.c

drivers/leds/trigger/ledtrig-pattern.c

drivers/leds/trigger/ledtrig-timer.c

drivers/leds/trigger/ledtrig-transient.c

常用的有timer heartbeat oneshot

使用的时候需要检测内核config中是否有开启,使用哪个就开启哪个

CONFIG_LEDS_TRIGGER_TIMER=y

CONFIG_LEDS_TRIGGER_HEARTBEAT=y

CONFIG_LEDS_TRIGGER_BACKLIGHT=y

CONFIG_LEDS_TRIGGER_DEFAULT_ON=y

CONFIG_LEDS_TRIGGER_ONESHOT=y


 

以timer和oneshot举例

timer

leds: leds {

        compatible = "gpio-leds";

        gpio_demo: gpio_demo {

            label = "gpio_demo";

            gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_HIGH>;

            linux,default-trigger = "timer";

            default-state = "on";

        };

}

echo 500 > /sys/class/leds/gpio_demo/delay_on

echo 500 > /sys/class/leds/gpio_demo/delay_off

这样操作后GPIO电平就会高500ms低500ms


 

oneshot

leds: leds {

        compatible = "gpio-leds";

        gpio_demo: gpio_demo {

            label = "gpio_demo";

            gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_HIGH>;

            linux,default-trigger = "oneshot";

            default-state = "on";

        };

}

echo 1000 > /sys/class/leds/gpio_demo/delay_on

echo 1 > /sys/class/leds/gpio_demo/short

这样就会让电平变高1秒后变低

如果invert设置1后那么就是变低1秒后变高文章来源地址https://www.toymoban.com/news/detail-689352.html

到了这里,关于笔记:linux中LED驱动设备树配置和用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux驱动开发笔记(四):设备驱动介绍、熟悉杂项设备驱动和ubuntu开发杂项设备Demo

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/134533533 红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中… 上一篇:《Linux驱动开发笔记(三

    2024年02月05日
    浏览(53)
  • 基于设备树的platform驱动之LED(平台设备驱动)

    platform 设备驱动是在驱动的分离与分层这样的软件思路下诞生的。   platform 驱动框架分为总线、设备和驱动。 总线 :是 Linux 内核提供的,不需要我们这些驱动程序员去管理。我们在编写驱动的时候只要关注于设备和驱动的具体实现即可。 设备、驱动 :在没有设备树的

    2023年04月26日
    浏览(39)
  • LDD学习笔记 -- Linux字符设备驱动

    字符驱动程序用于与Linux内核中的设备进行交互; 字符设备指的是像内存区域这样的硬件组件,通常称为伪设备; 用户空间应用程序通常使用 open read write 等系统调用与这些设备通信; 把用户空间的系统调用连接到设备驱动的系统调用实现方法上。 内核的虚拟文件系统 vir

    2024年02月02日
    浏览(45)
  • Linux设备驱动开发学习笔记(等待队列,锁,字符驱动程序,设备树,i2C...)

    container_of函数可以通过结构体的成员变量检索出整个结构体 函数原型: 内核开发者只实现了循环双链表,因为这个结构能够实现FIFO和LIFO,并且内核开发者要保持最少代码。 为了支持链表,代码中要添加的头文件是linux/list.h。内核中链表实现核心部分的数据结构 是struct li

    2024年01月22日
    浏览(55)
  • 驱动开发 字符设备驱动分部注册实现LED灯

    head.h 驱动文件 应用文件 现象实现

    2024年02月19日
    浏览(38)
  • 驱动开发 day8 (设备树驱动,按键中断实现led亮灭)

    //编译驱动  (注意Makefile的编译到移植到开发板的内核)         make arch=arm //清除编译生成文件         make clean ****************************************** //安装驱动         insmod mycdev.ko //卸载驱动         rmmod mycdev   需要在内核路径/arch/arm/boot/dts/  修改 stm32mp157a-fsmp1a-dts 文件 *

    2024年02月14日
    浏览(42)
  • QEMU学习(二):LED设备仿真及驱动开发

    在仿真led之前,先来了解一下QEMU源码结构及GPIO仿真原理。 QEMU源码目录 我们只罗列出涉及的少许文件,由此可以看出,我们要仿真的设备文件都放在hw目录下,一般来说一个.c 文件会有一个.h 文件,它们的目录类似。 比如 hw/gpio/imx_gpio.c 对应的头文件为 include/hw/gpio/imx_gpio.

    2024年02月09日
    浏览(55)
  • 【编写LED驱动,创建三个设备文件,每一个设备文件和一个LED灯绑定,当操作这个设备文件时只能控制对应的这盏灯】

    编写LED驱动,创建三个设备文件,每一个设备文件和一个LED灯绑定,当操作这个设备文件时只能控制对应的这盏灯。 1.将GPIO的相关寄存器封装成结构体 -------- head.h 2.LED相关驱动文件 -------- led.c led0 ------ LED1 led1 ------ LED2 led2 ------ LED3 3.应用层测试文件 -------- test.c 实验结果

    2024年02月12日
    浏览(47)
  • 驱动开发学习之字符设备同时点亮三盏LED灯

    head.h test.c mychrdev.c

    2024年02月16日
    浏览(42)
  • 【嵌入式Linux学习笔记】platform设备驱动和input子系统

    对于Linux这种庞大的操作系统,代码重用性非常重要,所以需要有相关的机制来提升效率,去除重复无意义的代码,尤其是对于驱动程序,所以就有了platform和INPUT子系统这两种工作机制。 学习视频地址:【正点原子】STM32MP157开发板 platform 驱动框架分为总线、设备和驱动。总

    2024年02月07日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包