MX6ULL学习笔记(十二)Linux 自带的 LED 灯

  前言

         前面我们都是自己编写 LED 灯驱动,其实像 LED 灯这样非常基础的设备驱动,Linux 内 核已经集成了。Linux 内核的 LED 灯驱动采用 platform 框架,因此我们只需要按照要求在设备 树文件中添加相应的 LED 节点即可,本章我们就来学习如何使用 Linux 内核自带的 LED 驱动。


一、Linux 内核自带 LED 驱动使能。

要使用 Linux 内核自带的 LED 灯驱动首先得先配置 Linux 内核,使能自带的 LED 灯驱 动,输入如下命令打开 Linux 配置菜单:

make menuconfig 

按照如下路径打开 LED 驱动配置项:  

按照上述路径,选择“LED Support for GPIO connected LEDs”,将其编译进 Linux 内核,也 即是在此选项上按下“Y”键,使此选项前面变为“”,如图

 

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

二、设备树节点编写

        打开文档 Documentation/devicetree/bindings/leds/leds-gpio.txt,此文档详细的讲解了 Linux 自 带驱动对应的设备树节点该如何编写,我们在编写设备节点的时候要注意以下几点:

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

②、dtsleds 节点的 compatible 属性值一定要为“gpio-leds”。

③、设置 label 属性,此属性为可选,每个子节点都有一个 label 属性,label 属性一般表示

LED 灯的名字,比如以颜色区分的话就是 red、green 等等。

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

⑤、可以设置“linux,default-trigger”属性值,也就是设置 LED 灯的默认功能,可以查阅

Documentation/devicetree/bindings/leds/common.txt 这个文档来查看可选功能,比如:

backlight:LED 灯作为背光。

default-on:LED 灯打开

heartbeat:LED 灯作为心跳指示灯,可以作为系统运行提示灯。

ide-disk:LED 灯作为硬盘活动指示灯。

timer:LED 灯周期性闪烁,由定时器驱动,闪烁频率可以修改

⑥、可以设置“default-state”属性值,可以设置为 on、off 或 keep,为 on 的时候 LED 灯默 认打开,为 off 的话 LED 灯默认关闭,为 keep 的话 LED 灯保持当前模式。

根据上述几条要求在设备树中添加如下所示 LED 灯设备节点:

dtsleds { 
     compatible = "gpio-leds"; 

     led0 { 
         label = "red"; 
         gpios = <&gpio1 3 GPIO_ACTIVE_LOW>; 
         default-state = "on"; 
     }; 
 }; 

修改完成以后保存并重新编译设备树,然后用新的设备树 启动开发板。

三、运行测试

        用 新 的 zImage 和 新的设备树启动开发板 ,启动以后查 看/sys/bus/platform/devices/dtsleds 这个目录是否存在,如果存在的话就如到此目录中,如图 所示:

进入到 leds 目录中,此目录中的内容如图所示:

        我们的设置究竟有没有用,最终是要通过测试才能知道的,首先查看一下系统中有没有 “sys/class/leds/red/brightness”这个文件,如果有的话就输入如下命令打开 RED 这个 LED 灯:

echo 1 > /sys/class/leds/red/brightness //打开 LED0

关闭 RED 这个 LED 灯的命令如下:

echo 0 > /sys/class/leds/red/brightness //关闭 LED0

 在之前的设备树节点下加一句

linux,default-trigger = "heartbeat";

这样开机就会进入心跳灯模式。

最近更新

  1. TCP协议是安全的吗?

    2023-12-18 11:24:02       17 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-18 11:24:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-18 11:24:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-18 11:24:02       18 阅读

热门阅读

  1. js数组方法笔记

    2023-12-18 11:24:02       36 阅读
  2. Spring 依赖查找知识点总结

    2023-12-18 11:24:02       37 阅读
  3. C语言中的结构体成员赋值与访问详解

    2023-12-18 11:24:02       44 阅读
  4. unity中实现Edge浏览器鼠标手势的功能

    2023-12-18 11:24:02       46 阅读
  5. Android Studio导出Excel的一些感悟

    2023-12-18 11:24:02       33 阅读
  6. 什么是计算机网络?计算机网络基础知识

    2023-12-18 11:24:02       39 阅读
  7. LeetCode第376场周赛

    2023-12-18 11:24:02       40 阅读
  8. 技术面试斗智斗勇II

    2023-12-18 11:24:02       44 阅读