[Android 6.0][RK 3399]IR(赤外線)移植手順
12177 ワード
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では以下のような構成を行います.
2.IRドライバをロードするかどうかを確認する
ドライブコードはdrivers/input/remotectl/rockchip_pwm_remotectl.cは、IRドライバが正常にローディングされていることを示すロゴが現れます.
3.USERCODEとKEY値を取得する
まず以下のコマンドでDBG_を使えるようにします.CODEプリント:
USERCODEというリモコンのusercodeは、リモコンの種類を識別するために使います.RMC_GETDATAはキーの値を表します.私のリモコンはこのようにして、左は私が順番にボタンを押してからロゴに基づいてリモコンの対応するキーを描きます.
4.dtsのir_を修正する.key map
以下の情報を追加します
RK 3399プラットフォームは、デフォルトでIR部分が配置されています.他のAndroidプラットフォームにはない追加が必要です.1.プロファイルdrivers/input/remotectl/Kconfig追加は、drivers/input/remotectlの経路下のMakefileを修正し、以下のようにコンパイルオプションを追加します. 、ケネルパスでmake menuconfigを追加し、IRドライバ を追加します.
ケネルの下で
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に追加
一、赤外線の紹介
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
obj-$(CONFIG_ROCKCHIP_REMOTECTL_PWM) += rockchip_pwm_remotectl.o
Device Drivers
-> Input device support
->[*]rockchip remotectl
[*]rockchip remoctrl pwm capture
6.ファームウェアをコンパイルして焼くケネルの下で
make -j4 rk3399-sapphire-excavator-edp.img
マジコンケネル.imgとresource.img7.検証結果
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~ありがとうございます.