linuxled驱动开发 子系统介绍

描述

1、前言

什么叫做驱动框架?

内核中驱动维护者针对每种驱动设计一套【成熟的、标准的、典型的】驱动实现,并把不同厂家的同类硬件驱动中相同的部分抽出来实现好,再把不同部分留出接口给具体的驱动工程师来实现,这就叫驱动框架。

2、概述

led 子系统驱动框架:

led

所有 led 共性:

  1. 有和用户通信的设备节点
  2. 亮和灭

不同点:

  1. 有的 led 可能是接在 gpio 管脚上,不同的 led 有不同的 gpio 来控制
  2. 有的 led 可能由其他的芯片来控制(节约 cpu 的 pin,或者为了控制 led 的电流等)
  3. 可以设置亮度
  4. 可以闪烁

所以 Linux led 子系统把所有 led 的共性给实现了,把不同的地方留给驱动工程师去做。

led 子系统核心文件:

driver/leds/led-class.c
driver/leds/led-core.c
driver/leds/led-triggers.c
include/linux/leds.h

其他文件(按需)

driver/leds/led-gpio.c
driver/leds/wm8350.c
driver/leds/led-xxx.c
driver/leds/trigger/ledtrig-backlight.c
driver/leds/trigger/ledtrig-camera.c
driver/leds/trigger/ledtrig-cpu.c
driver/leds/trigger/ledtrig-default-on.c
driver/leds/trigger/ledtrig-gpio.c
driver/leds/trigger/ledtrig-heartbeat.c
driver/leds/trigger/ledtrig-ide-disk.c
driver/leds/trigger/ledtrig-multi-control.c
driver/leds/trigger/ledtrig-oneshot.c
driver/leds/trigger/ledtrig-timer.c
driver/leds/trigger/ledtrig-transient.c

led 子系统相关描述可在内核源码 Documentation/leds/leds-class.txt 了解。

led 子系统是一个简单的 Linux 子系统 ,在目录 /sys/class/leds 下展示该子系统设备,每个设备都有自己的属性:

led

brightness:设置 LED 亮度,范围 0 ~ max_brightness
max_brightness:最大亮度(255 或其他数字)
trigger:触发方式,如 heartbeat、mmc0、backlight、gpio

delay_off、delay_on:trigger为timer时,LED亮灭的时间,单位ms

kernel/include/linux/leds.h

enum led_brightness {
 LED_OFF  = 0,    //全暗
 LED_HALF = 127,  //一半亮度
 LED_FULL = 255,  //最大亮度
};
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分