led驱动的实现原理尽管 Linux 驱动直接与硬件打交道,但并不是 Linux 驱动直接向硬件中的内存写数据 而是与本机的 ν0 内存( νO Memory ,位于内核空间〉进行交互。所谓 1/0 内存是通过各种接口( PC I 、USB 、蓝牙、以太网口 等〉连接到主机( PC 、手机〉的硬件〈网卡、声卡、摄像头等〉在主机内存中的映射。

 

编写LED驱动

第一步:使用 cdev_init 函数初始化cdev

 

第二步:指定设备号

  1. 直接在代码中指定(硬编码〉
  2. 动态分配

第三步:使用 cdev_add 函数将字符设备添加到内核中的字符设备数组中

第四步:使用 clas at 宏创建 struct class

第五步:使用 ev ce ::.. crea 函数创建设备文件

 

为linux驱动指定一个模块参数需要使用 module _param C name, type, perm )宏。其中 name示参数名, type 表示参数类型, perm 表示读/写权限。

使用 module param arra nam , type, nump, perm )宏可以为 Linux 驱动指定数组形式的模块参数,其中oam~ 表示参数名, type 表示数组 素的数据类型, OWUJ) 表示存储数组长度的变茧的指钟, nn 参数文件的访问权限。 下面为 LED 驱动增加 个数组类型的模块参数。

LED 驱动有两种与设备文件交互的方式 直接写入字符串数据和 νo 控制命令.直接向设备文写入数据可以使用命令行方式来完成,也 以通过 write 函数来完成。但 I/0 控制命令只能通过iocll 函数发出。为了以后测试方便,本节编写了 个通用的发送 命令的程序.

NDK 程序测试和可执行程序测试差不多。只不过 ND Library 可以被 Java 程序调用,而Android 系统中的可执行程序在非 root 状态下是无法直接被调用的。所以如果想在 Android 应用程序中测试 inux 最直接的方法就是使用 NDK.

LED驱动移植

如果需要将 LED 驱动安装到 Linux 3. x内核的系统上( Android 4.x 及以上版本的系统〉,首先要获取linux 3.x 内核的源代码〈至少是 inux 内核的头文件〉,然后在新内核下重新编译即可。如果需要将 LED 驱动安装到 Linux 3. 内核的系统上( Android 4.x 及以上版本的系统〉,首先要获取 linux 3.x 内核的源代码〈至少是 inux 内核的头文件〉,然后在新内核下重新编译即可。

posted on 2016-05-30 20:49  2101648015piO  阅读(122)  评论(0编辑  收藏  举报