控制发光二极管
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了控制发光二极管相关的知识,希望对你有一定的参考价值。
裸机下控制LED灯非常方便,只需要配置好GPIO引脚功能,然后向GPIO引脚映射的内存地址处写入数据即可,但linux下驱动就不那么简单了,需要结合字符设备驱动的架构,然后将功能实现添加进去,笔者参考linux设备驱动程序(第三版)中介绍的新的接口来实现驱动。友善之臂官网提供的源码是基于miscdevice的驱动,而且接口似乎有点老,比如在linux设备驱动程序(第三版)中强调需要使用新的内存I/O接口来访问映射内存,建议使用ioread32,iowrite32等,但是它依然使用writel,readl等函数。另外笔者使用了两种方法:一种是修改友善之臂的驱动;另一种是使用标准的字符设备驱动
第一种方法实现:
混杂设备驱动中需要实现的是填充file_operations结构,然后设置miscdevices的各个字段值,然后注册到内核即可。详细流程如下:
1.编写ioctl接口函数
2.填充file_operations结构,主要是将ioctl函数注册进去
3.填充miscdevice结构,主要是次设备号、fops和设备名称。
4.编写要提供给module_init宏使用的初始化代码,设置LED端口为输出,注册到内核
5.编写要提供给module_exit宏使用的注销代码,主要是注销掉初始化中注册到内核的miscdevice设备
以上是关于控制发光二极管的主要内容,如果未能解决你的问题,请参考以下文章