[Android 6.0][RK 3399]IR(赤外線)移植手順


Platform:RK 3399 OS:Android 6.0 Kernel:Version:v 2017.04
  • 赤外線ガイド
  • 駆動移植と検証
  • dtsを修正してpwm
  • を開けます.
  • IRドライバをロードするかどうかを確認する
  • は、USERCODEとKEY値
  • を取得する.
  • dtsのir_を修正する.key map
  • 構成コンパイル駆動オプション
  • コンパイルし、ファームウェア
  • を記録する.
  • 認証結果
  • Androidキーの値マップ
  • この記事のアドレス:http://blog.csdn.net/dearsq/article/details/69267499 転載を歓迎します.有名な出所と作者Younix~ありがとうございます.
    一、赤外線の紹介
    IR(Infreard Radiation)既存の赤外リモコンは、PWM(パルス幅変調)とPPM(パルス位置変調)の2つの方法がある.対応する2つの符号化形式の代表は、NECとPHILPSのRC-5、RC-6、RC-7 Linuxカーネルであり、IRドライバはNEC符号化フォーマットのみをサポートする.
    二、駆動移植と検証
    1.dtsを修正してpwmを開く.
    ケネル/arch/arm 64/boot/dts/rockchip/rk 3399-sapphire-excavator-edtsは原理図によると
    赤外線部分はpwm 3を採用していることが見られます.したがって、dtsでは以下のような構成を行います.
    &pwm3 {
        status = "okay";
        interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH 0>;
        compatible = "rockchip,remotectl-pwm";
        remote_pwm_id = <3>;
        handle_cpu_id = <0>;
    
      ir_key1 {
        rockchip,usercode = <0xfb04>;
        rockchip,key_table =
          <0xa3 KEY_ENTER>,
          <0xe4 388>,
          <0xf5 KEY_BACK>,
          <0xbb KEY_UP>,
          <0xe2 KEY_DOWN>,
          <0xe3 KEY_LEFT>,
          <0xb7 KEY_RIGHT>,
          <0xe0 KEY_HOME>,
          <0xba KEY_VOLUMEUP>,
          <0xda KEY_VOLUMEUP>,
          <0xe6 KEY_VOLUMEDOWN>,
          <0xdb KEY_VOLUMEDOWN>,
          <0xbc KEY_SEARCH>, 
          <0xb2 KEY_POWER>,
          <0xe5 KEY_POWER>,
          <0xde KEY_POWER>,
          <0xdc KEY_MUTE>,
          <0xa2 KEY_MENU>,
          <0xec KEY_1>,
          <0xef KEY_2>,
          <0xee KEY_3>,
          <0xf0 KEY_4>,
          <0xf3 KEY_5>,
          <0xf2 KEY_6>,
          <0xf4 KEY_7>,
          <0xf7 KEY_8>,
          <0xf6 KEY_9>,
          <0xb8 KEY_0>;
      };
    };
    status = "okay";は、pwm 3を開くinterruptsが割り込み番号compatible = "rockchip,remotectl-pwm"; linuxプラットフォーム上でデフォルトのIR駆動がdrivers/input/remotectl/rockchip_であることを示している.pwm_remotectl.c,ここではdriverに対応します.remote_pwm_id = <3>; pwmは第三グループを採用しています.handle_cpu_id = <0>;アイルkey 1はキーの表で、第一列はキーの値で、第二列はレスポンスの押しボタンです.その中の値は最初に記入しなくてもいいです.後の3番目のセクションはリモコンによってボタンを確定してから修正します.
    2.IRドライバをロードするかどうかを確認する
    ドライブコードはdrivers/input/remotectl/rockchip_pwm_remotectl.cは、IRドライバが正常にローディングされていることを示すロゴが現れます.
    [    0.656437] .. rk pwm remotectl v1.1 init
    [    0.656672] input: ff420030.pwm as /devices/platform/ff420030.pwm/input/input0
    ロゴマークの中のF 420030によれば、私達の後ろ(第三節)にもsystem/usr/keyylout/f 420030_を見つけることができます.pwm.klファイルは、Linux層で取得したキー値をAndroidに対応するキー値にマッピングするためのファイルです.
    3.USERCODEとKEY値を取得する
    まず以下のコマンドでDBG_を使えるようにします.CODEプリント:
    echo 1 > /sys/module/rockchip_pwm_remotectl/parameters/code_print
    リモコンの任意のボタンを押すと、次のような情報が見られます.
    USERCODEというリモコンのusercodeは、リモコンの種類を識別するために使います.RMC_GETDATAはキーの値を表します.私のリモコンはこのようにして、左は私が順番にボタンを押してからロゴに基づいてリモコンの対応するキーを描きます.
    4.dtsのir_を修正する.key map
    以下の情報を追加します
      ir_key1 {
        rockchip,usercode = <0xfb04>;
        rockchip,key_table =
          <0xa3 KEY_ENTER>,
          <0xe4 388>,
          <0xf5 KEY_BACK>,
          <0xbb KEY_UP>,
          <0xe2 KEY_DOWN>,
          <0xe3 KEY_LEFT>,
          <0xb7 KEY_RIGHT>,
          <0xe0 KEY_HOME>,
          <0xba KEY_VOLUMEUP>,
          <0xda KEY_VOLUMEUP>,
          <0xe6 KEY_VOLUMEDOWN>,
          <0xdb KEY_VOLUMEDOWN>,
          <0xbc KEY_SEARCH>, 
          <0xb2 KEY_POWER>,
          <0xe5 KEY_POWER>,
          <0xde KEY_POWER>,
          <0xdc KEY_MUTE>,
          <0xa2 KEY_MENU>,
          <0xec KEY_1>,
          <0xef KEY_2>,
          <0xee KEY_3>,
          <0xf0 KEY_4>,
          <0xf3 KEY_5>,
          <0xf2 KEY_6>,
          <0xf4 KEY_7>,
          <0xf7 KEY_8>,
          <0xf6 KEY_9>,
          <0xb8 KEY_0>;
      };
    };
    5.コンパイル駆動オプションの設定
    RK 3399プラットフォームは、デフォルトでIR部分が配置されています.他のAndroidプラットフォームにはない追加が必要です.1.プロファイルdrivers/input/remotectl/Kconfig追加
    config ROCKCHIP_REMOTECTL_PWM
        bool "rockchip remoctrl pwm capture"
        default n
  • は、drivers/input/remotectlの経路下のMakefileを修正し、以下のようにコンパイルオプションを追加します.
    obj-$(CONFIG_ROCKCHIP_REMOTECTL_PWM)   += rockchip_pwm_remotectl.o
  • 、ケネルパスでmake menuconfigを追加し、IRドライバ
  • を追加します.
    Device Drivers
        -> Input device support
            ->[*]rockchip remotectl
                    [*]rockchip remoctrl pwm capture
    6.ファームウェアをコンパイルして焼く
    ケネルの下で
    make -j4 rk3399-sapphire-excavator-edp.img
    マジコンケネル.imgとresource.img
    7.検証結果
    DBG Logを3で開き、順次キーを押して、該当機能が実現できるかを確認します.問題があれば、印刷中のRMC_を確認してください.GETDATAの値はdtsに対応するかどうか.
    三、Androidキーのマッピング
    生成されたout/target/product/rk 3399/system/usr/keyylout/f 420030_pwm.klファイルはLinux層で取得したキー値をAndroid上の対応するキー値にマッピングするために使用されます.このファイルの内容を追加または変更して、異なるキーのマッピングを実現できます.adb pullを修正してからadb pushに入れば修正キーのマッピングが可能です.
    例えば、Androidの部分でキーボードマウスの切り替え機能を実現しました.じゃ、私はF 420030_にいます.pwm.klに追加
     key 388   TV_KEYMOUSE_MODE_SWITCH
    e 4ボタンをこの機能キーに設定したいです.dtsに追加できます.
          <0xe4 388>,
    この記事のアドレス:http://blog.csdn.net/dearsq/article/details/69267499 転載を歓迎します.有名な出所と作者Younix~ありがとうございます.