读书笔记第七章

第七章
尽管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驱动。

原文地址:https://www.cnblogs.com/spurlash/p/5560602.html