A10红外遥控驱动的问题
本帖最后由 Ray_ 于 2013-3-12 20:33 编辑因为需要,想用红外遥控器控制CB。
网上有贴提供了方法:
http://blog.csdn.net/a181622974/article/details/8017467
然而我用adb 连接 CB 后,使用getevent命令是可以看到红外设备的(也就是说驱动实际已经加载了),却无法像上面那个帖子一样获取消息。
我用示波器看过红外遥控发出来的波形,应该没问题。于是怀疑驱动可能有问题。
一边看代码一边翻A10的手册,最后发现,代码里面有一句是这么写的 len += val & 0x7f;
driver/input/sun4i-ir.c 364行,文件中还有其他三个地方也这么写的。
A10 手册上有写,红外遥控接收使用了 RLC编码 ,也就是一字节的最高位代表电平高低,余下7位代表该电平持续的采样周期数,如果周期数超过了128,那么用下一个字节接着表示。
而驱动里面那句话的本意用来统计连续电平的采样周期数之和,但是这句话实际的含义是 len = len + val & 0x7f;+号优先级较高,所以没法正确统计。应该改成 len += (val & 0x7f); 也就是 len = len + (val + 0x7f);
修改完重新编译后可以收到遥控器的消息了。
后记:以上说法不正确,后来我又尝试了一下,之前那个写法是对的!+= 是一个整体,不能像我那么简单的分开看。
本帖最后由 Ray_ 于 2013-3-12 20:34 编辑
结贴!:L 楼主c语言不过关。。。 :L:L:L:L:L 最后到底是什么原因导致的?重新编译一个就好了?? 最终是怎么解决问题的呢?我也遇到了同样问题。
照论坛帖子方法 不行啊.... qiuqiuwang99 发表于 2013-4-25 20:54 static/image/common/back.gif
最终是怎么解决问题的呢?我也遇到了同样问题。
照论坛帖子方法 不行啊.... ...
首先你要将你的内核中的有关的sun4i-ir的红外配置选择M模块编译,然后再你的init.XXX.rc文件中on boot关键字下将你的sun4i-ir.ko驱动加载
然后,烧录固件
c> adb shell
#getevent
将你的红外遥控器对照你的板子进行按键,如果有内容显示说明你的驱动加载成功了,你将对应的按键的16进制的数据记录下来,然后按照bbs.A10.com上面有关A10的配置
进行操作!就行了!:)
页:
[1]