标签:
第7章 LED将为我闪烁:控制发光二极管
实现原理:linux驱动与本机的I/O内存进行交互,连接到主机的硬件在主机内存的映射
1编写LED驱动
1.1创建LED驱动的设备文件
使用cdev_init函数初始化cdev
Cdev 结构体
struct cdev {
Struct konject kobj;
Struct module *owner;
Const struct file_operation *ops;
Strust list_head list;
Dev_t dev;
Unsigned int count;
}
指定设备号
使用cdev_add函数将字符设备添加到内核中的字符设备数组中
使用class_create宏创建struct class
使用device_create函数创建设备文件
卸载LED驱动
2设置寄存器与初始化LED驱动
设置不同寄存器的值,可以设置LED引脚的状态
LED有两个引脚GPB1和GPB0
控制LED需要通过3个寄存器来完成GPMCON、GPMDAT、GPMCON
每个寄存器可以使用4个字节(int)
控制LED状态
通过字符串控制LED
通过I/o命令控制LED
LED驱动的移植
测试LED驱动程序
编写测试程序为每一个测试程序
Abd shell ‘/data/local/ioctl/ /dev/s3c6420_lkeds 1 2’
本节完成了LED驱动的开发,一个硬件驱动主要有内部处理和硬件交互两部分组成。其中,内部处理是指linux驱动的装载、卸载,与设备文件相关的动作处理(读写设备文件、向设备发送I/O命令等动作)以及业务逻辑等。与硬件交互是指通过iowriter32,ioread32等函数等函数与硬件中的寄存器进行数据交互。
标签:
原文地址:http://www.cnblogs.com/Wqian/p/5560655.html