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

控制发光二极管

时间:2016-06-06 10:36:52      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:

控制发光二极管

一.   创建LED驱动的设备文件

1.使用cdev_init函数初始化cdev

struct cdev{

struct kobject kobj;

struct module *owner;

const struct file_operations *ops;

struct list_head list;

dev_t dev;

unsigned int count;

}

2.指定设备号

直接在代码中指定或者动态分配

3.使用cdev_add函数将字符设备添加到内核中的字符设备数组中

4.使用class_create宏创建struct class

5.使用device_create函数创建设备文件

二.卸载LED驱动的设备文件

需要一次调用device_destroy、class_destroy和unregister_chrdev_region方法

三.   设计寄存器与初始化LED驱动

LED有两个引脚:GPB0和GPB1,控制LED需要通过三个寄存器来完成,三个寄存器分别是GPMCON、GPMDAT和GPMPUD。

每一个寄存器可以使用4个字节,相当于int类型数据占用的空间。

四.   控制LED

通过字符串控制LED:使用命令行方式或通过write函数

  通过I/O命令控制LED:通过ioctl函数发出

五.   LED驱动的模块参数

通过module_param_array宏的第三个参数指定数组长度时要使用指针类型的数据;

如果linux驱动含有多个模块参数,参数要用单引号或双引号括起来;

     指定数组类型的参数值时,逗号前后不能有空格

 

六.   LED驱动的完整代码

测试LED驱动

  1. 编写测试I/O控制命令的通用程序
  2. 使用NDK测试LED驱动
  3. 使用Java测试LED驱动

LED驱动的驱动移植

 

 

控制发光二极管

标签:

原文地址:http://www.cnblogs.com/levity/p/5562861.html

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