android深度探索 HAL及驱动开发 第七章

第七章 LED灯将为我闪烁:控制发光二极管

尽管linux驱动直接与硬件打交道,但并不是linux驱动直接向硬件中的内存写数据,而是与本机的I/O内存进行交互。每一个连接linux的硬件在I/O内存中都会有映射首地址。在使用ioread32、iowreat32等函数读写I/O内存时需要制定这些首地址,开发板上的LED也有其映射首地址。

创建LED驱动的设备文件:

1、使用cdev_init函数初始化cdev。

2、指定设备号,linux设备文件的设备号分为主设备号和次设备号。用1个int类型表示。其中前12位表示主设备号,后20位表示次设备号。

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

4、使用class_creaate宏创建struct class,其中包含了一些与设备文件有关的变量以及一些回调函数指针变量。

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

测试led驱动方法:

1、编写测试I/O控制命令的通用程序,led驱动与设备文件交互有两种方式,直接写入字符串数据和I/O控制命令,直接向设备文件写入数据可以使用命令行方式来完成,也可以通过write函数来完成。

2、使用NDK测试led驱动,NDk程序测试和 可执行程序测试差不多,只不过NDK

 library可以被java程序调用,而在安卓系统中的可执行程序在非root状态下无法被调用。3、使用java测试led驱动。

我的博客地址:http://home.cnblogs.com/u/haihaizhazha/

原文地址:https://www.cnblogs.com/haihaizhazha/p/5626982.html