LED补光灯驱动和上层设计
1、在kernel的驱动目录drivers下面新建一个目录“Led”; 2、将本补丁的kernel/drivers/Led下面的文件Makefile和Led.c拷贝到drivers/Led目录下; 3、根据具体的平台修改Led.c文件中Gpio_init的端口初始化和CONFIG_LED_GPIO的端口定义; 其中: Gpio_init主要根据CONFIG_LED_GPIO的定义而初始化端口,方向为输出。 4、修改drivers/Makefile文件,加入一行"obj-y += Led/",以编译进kernel; 5、编译kernel 6、进入文件系统android目录,打开文件:"vender/infotm/wwwe10/init.rc"(根据实际平台的目录为准。),在文件中部加入一行“chmod 0666 /dev/leds” 7、打开本补丁的apk目录,根据例子函数onLed()和offLed()分别写和读取设备文件"/dev/leds" 原理: 内核为字符型设备,初始化时建立设备文件"/dev/leds",主设备号为252,次设备号为0(主次设备号可以更改) . 初始化之后初始化端口为输出状态; 字符设备的操作函数open控制端口的状态; 操作函数read向端口输出0 操作函数write向端口输出1 (由于write函数无法读取到java层实际的写入0或1,所以只能通过read和write区分0或1) 文件系统的init.rc给予/dev/leds的可读写权限 实例Test.apk的OnLed写设备文件“/dev/leds”,以触发设备驱动函数write,向端口输出1 实例Test.apk的OffLed读设备文件“/dev/leds”,以触发设备驱动函数read,向端口输出0 . 初始化之后初始化端口为输出状态; 字符设备的操作函数open控制端口的状态; 操作函数read向端口输出0 操作函数write向端口输出1 (由于write函数无法读取到java层实际的写入0或1,所以只能通过read和write区分0或1) 文件系统的init.rc给予/dev/leds的可读写权限 实例Test.apk的OnLed写设备文件“/dev/leds”,以触发设备驱动函数write,向端口输出1 实例Test.apk的OffLed读设备文件“/dev/leds”,以触发设备驱动函数read,向端口输出0
用户评论