全志A20[android教程]-红外遥控器调试


第1章 前言

      要在树莓派3 (A20)android系统上实现红外遥控器,因为super3上有红外接收头,所以可以直接支持红外遥控器,可以把树莓派3应用到家庭控制当中。当作网络机顶盒用
树莓派3的红外遥控器,还有鼠标功能,也就是它可以代替的部份的鼠标功能,因为在有些软件,不支持纯遥控支持,必须要鼠标箭头去它按钮的,就可以用到这个功能了

    只要轻轻按一下右下角这个“箭头”按钮,就可以用方向键来控制鼠标箭头了

 
遥控器的购买链接

http://item.taobao.com/item.htm?&id=37686098339


第2章 硬件相关

2.1电路原理图   
    树莓派3的红外接收头对应的IO口是PB4,如下图



 2.2      实物图
   板子上的红外接收头位置

遥控器外观和对应编码
注意,上面的客服码,ff是高8位,00是低8位,所以add_core=0xff00;

第3章软件修改
3.1  修改fex 配置文件(sys_config.fex)
  修改superoid\lichee\tools\pack\chips\sun7i\configs\android\smfy-super3\sys_config.fex
  如下项
[ir_para]
ir_used             = 1
ir_rx               = port:PB04<2>
配置PB04作为红外输放脚(匹配我们内部的驱动)。

3.2  修改kernel3.2.1   修改ADDR_CODE
    在文件lichee\linux-3.4\drivers\input\keyboard\ir-keymap.h中,根据自己的遥控器的地址码修改如下代码
#define IR_ADDR_CODE (0xff00)
譬如说,如果地址码为0x7f80,则修改成
#define IR_ADDR_CODE (0x7f80)
如果发现无效,则将两个字节的值交换一下位置,修改成
#define IR_ADDR_CODE (0x807f)
   本教程所针对的这个遥控器地址码是0xff00

3.2.2  修改sun7i-ir.c
修改lichee\linux-3.4\drivers\input\keyboard\sun7i-ir.c 文件

if(SCIRPT_ITEM_VALUE_TYPE_INT != script_get_item("ir_para", "ir_wakeup", &ir_wakeup))
{
                         pr_err("%s: ir_wakeup script_get_item error. \n",__func__ );
                        ir_wakeup = 0;
         }
         if(SCIRPT_ITEM_VALUE_TYPE_INT != script_get_item("ir_para", "power_key", &power_key)){
                         pr_err("%s: power_key script_get_item error. \n",__func__ );
                        power_key = 0x4d;
         }
         if(SCIRPT_ITEM_VALUE_TYPE_INT != script_get_item("ir_para", "ir_addr_code", &ir_addr_code))
{
                         pr_err("%s: ir_addr_code script_get_item error. \n",__func__ );
                        ir_addr_code = 0xff00;  //----这里重新指定了code,所以,修改了上面的 IR_ADDR_CODE,还要改这里才会生效 
         }

3.2.3   编译kernel
  lichee目录下执行
  #./build.sh–p sun7i_android
编译内核
  然后在android42目录下
#extract-bsp      
拷贝sun7i-ir.komodule目录

3.2.4   手动调试(新手可跳过)
Step1:
  树莓派3进入android系统,连接USB线到PC上,通过adb命令进到
PC# adb shell
Step2:
  adbshell里,
# rmmod  sun7i-ir.ko
卸载原来的驱动
Step3:
  拷贝新编译的sun7i-ir.kosuper3根目录
PC# adb pushC://sun7i-ir.ko  /
Step4:
  再次adbshell进到super3设备命令行,
#insmod sun7i-ir.ko
手动加载驱动模块
#getevent
然后对着super3按遥控器,
如果前面的地址码改对了,那这里就应该看得到按遥控会有key event打印出来,这就表示android底层已识别出了遥控器了,向上发了event了,此时可以放心地进行下一步

3.3    修改kl文件
3.3.1    修改sun7i-ir.kl 文件
superoid\android42\device\softwinner\smfy-super3\sun7i-ir.kl文件
针对前面2.3章里的 2.3 红外遥控器码表
key 64   BACK               WAKE_DROPPED
key 4    MENU               WAKE_DROPPED
key 85    DPAD_CENTER        WAKE_DROPPED
key 22   DPAD_DOWN          WAKE_DROPPED
key 70   DPAD_UP            WAKE_DROPPED
key 6   HOME               WAKE
key 71    DPAD_LEFT          WAKE_DROPPED
key 21   DPAD_RIGHT         WAKE_DROPPED
key 16   VOLUME_UP          WAKE
key 20   VOLUME_DOWN        WAKE
key 24   POWER              WAKE
key 12   0                  WAKE
key 84   1                  WAKE
key 72   2                  WAKE
key 7   3                  WAKE
key 80   4                  WAKE
key 18   5                  WAKE
key 17   6                  WAKE
key 76   7                  WAKE
key 14   8                  WAKE
key 13   9                  WAKE
key 8   MUTE               WAKE
key 86   PROG_RED           WAKE
key 91   PROG_BLUE          WAKE
key 87   PROG_GREEN         WAKE
key 31   PROG_YELLOW        WAKE
key 23   MOUSE              WAKE
key 75   DEL                WAKE

3.3.2   调试(新手可跳过)
  如果是android老手,这个时候,可以手动调试一下,以保证这个地址码是对的,可以立即看得到修改的效果
Step1:
  通过USB连接树莓派3,PC上cmd进命令行,
    PC# adb push C:// sun7i-ir.kl/system/usr/keylayout/
上面命令的前题:我们已把sun7i-ir.kl文件放在了PC的C盘根目录下
  如上命令是把sun7i-ir.kl文件拷贝到super3的/system/usr/keylayout/目录下替换原文件
  Step2:
  重启树莓派3,进入android系统
  此时应该遥控器已经可以用了,可以用上下左右键进行选择。

3.4 鼠标功能支持

   修改 build.prop文件
   进入 super3的终端命令行
修改如下项
ro.softmouse.left.code=71
ro.softmouse.right.code=21
ro.softmouse.top.code=70
ro.softmouse.bottom.code=22
ro.softmouse.leftbtn.code=85

第4章 编译打包

#make –j4  
编译到系统
#pack
打包img

大功告成了

全志A20[android教程]-红外遥控器调试_第1张图片
http://item.taobao.com/item.htm?&id=15301429836



你可能感兴趣的:(android)