LED将为我闪烁:控制发光二极管
1.LED驱动的实现原理
Linux内核提供了多个与I/O内存交互的函数,如ioread16、ioread32、iowrite16、iowrite32等;Linux内核的内存管理模块负责同步I/O内存与硬件中的数据。
2.编写LED驱动
(1)创建LED驱动的设备文件
使用cdev_init、register_chrdev_region、cdev_add、class_create、device_create等函数
第一步:使用cdev_init函数初始化cdev
第二步:指定设备号
第三步:使用cdev_add函数将字符设备添加到内核中的自负设备数组中
第四步:使用class_create宏创建struct class
第五步:使用device_create函数创建设备文件
(2)卸载LED驱动的设备文件
依次调用device_destory、class_destory和unregister_chrdev_region方法。
(3)设置寄存器与初始化LED驱动
LED有两个引脚:GPB0和GPB1。
控制LED需要3个寄存器完成,分别是GPMCON、GPMDAT和GOMPUD。
每一个寄存器可以使用4个字节。
(4)控制LED
有两种方法,第一种是通过字符串控制LED,第二种是通过I/O命令控制LED。
(5)LED驱动的模块参数
为Linux驱动指定一个模块参数需要使用module_param宏,使用module_param宏指定模块参数时,会在/sys/module/s3c6410_leds/parameters。
3.测试LED驱动
(1)编写测试I/O控制命令的通用程序
(2)使用NDK测试LED驱动
(3)使用java测试LED驱动
4.LED驱动的移植
浙公网安备 33010602011771号