led驱动框架

驱动本质是:通过读写/sys/class/leds/xxx内的文件,触发led_classdev(设备体)内的函数,从而实现操作硬件。

  1. /sys/class/leds/xxx内的文件创建过程
    led_classdev_register这个函数其实就是去创建一个属于leds这个类的一个设备。

  2. 首先填充设备体,这个设备体就是我们定义的一个led_classdev类型结构体,它里面集成了所有的操作和参数,其实就相当普通字符设备驱动中的cdev及其内部的file_operations。只不过led_classdev针对的是属于“leds”类的设备,而cdev针对的是普通字符设备。由于 led_classdev_register内部并不会对这个结构体指针实例化,所以我们定义的时候还是定义结构体比较好

     static struct led_classdev mydev;
    
  3. 然后利用led_classdev_register注册这个设备体。led_classdev_register 就是框架给我们提供的接口,其第一个参数是父设备,第二个参数是指向led_classdev类型结构体的指针。经过了这一步 在/sys/class/leds/ 下就会自动出现一个目录,这个目录就是我们的设备文件目录。 对于我们这,/sys/class/leds/ 下就会出现特定led名字的目录,进入这个目录就会发现里面有各种文件、文件夹,下图就是leds属性
    在这里插入图片描述

抽空继续总结。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值