码迷,mamicode.com
首页 > 其他好文 > 详细

控制发光二极管

时间:2016-06-02 00:50:50      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:

裸机下控制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设备

控制发光二极管

标签:

原文地址:http://www.cnblogs.com/jingjing521/p/5551448.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!