アンドロイド:ハースプラットフォーム寄せ集め

午前をStartService -n com.xbh.distributor.menu/.app.TvMenuWindowManagerService -e com.xbh.distributor.menu.commmand com.xbh.distributor.menu.commmand.factory_menu \ nは

図9C:F6:DD:B1:71:8C

ソースカスタマー/ build.sh顧客/顧客/ lango / LANGO_001_XMH811B_4096M_32G.cus
-c 'Gitのブランチ-v' forallをレポ


XBHV811:/#エコー> / PROC / MSP / GPIO 5 3読み取る
[610.180579]の値を[5] [3]低=
XBHV811を:/#エコーは、5 2>の/ proc / MSP / GPIOを読み取る
[611.331131]の値[5] [ 2] =高いです

 

] [RTC駆動アダプタ
(1)カーネルコンフィグレーションファイルを変更し、RTCコンパイルされたモジュール(RTC-hym8563)駆動
Zが:\ワークスペース\ XBHV811 \顧客\が\ボード\ XMH811Bをチェーン\ hi3751v810_arm64_android_defconfig
#CONFIG_RTC_DRV_HYM8563を変更しない設定されている:CONFIG_RTC_DRV_HYM8563 = M

(2)追加のI2Cバスドライバ
Z:\ワークスペース\ XBHV811 \デバイス \ hisilicon \ bigfish \ SDK \ソースの\ MSP \ DRV \ I2Cバス
および修飾Z:\ワークスペース\ XBHV811 \デバイス \ hisilicon \ bigfish \ SDK \ソース\のMSP \ DRVの\のMakefileを:オブジェクト+ = I2Cバス


(3)プラットフォームに対応するデバイス情報を増加させる、DTSIを変更:Z:\ワークスペース\ XBHV811の\デバイス\ hisilicon \ bigfish \ SDK \ソース\カーネル\ Linuxベース4.9.yの\アーチ\のarm64の\ブート\ DTS \ hisilicon \ hi3751v81x.dtsi
I2Cポートを増やします----------------------------------------------- -------------
gerhard.lao XBHパッチによって//スタート
I2C0:@ f8b10000 {I2C
互換= "hisilicon、hisilicon-I2C";
bus_num = <0>、
ステータス= "オーケー"。
}。

I2C1:I2Cする@ f8b11000 {
互換= "hisilicon、hisilicon-I2C"。
bus_num = <1>。
ステータス=「大丈夫」。
}。

I2C2:I2Cする@ f8b12000 {
互換= "hisilicon、hisilicon-I2C"。
bus_num = <2>。
ステータス=「大丈夫」。
}。

i2c3:I2Cする@ f8b13000 {
互換= "hisilicon、hisilicon-I2C"。
bus_num = <3>。
ステータス=「大丈夫」。
}。

i2c4:I2Cする@ f8b1d000 {
互換= "hisilicon、hisilicon-I2C"。
bus_num = <4>。
ステータス=「大丈夫」。

hym8563:hym8563する@ A3 {
互換= "haoyu、hym8563"。
REG = <0xA3の>。
}。
}。
// XBHパッチ端

(4)
./Customer/compile.shカーネル(建议先RM -rfアウト/標的/製品/ Hi3751V811 / OBJ / KERNEL_OBJ /)、生成のkernel.img和DTB在Z:\ワークスペース\ XBHV811 \アウト\ターゲット\製品\ Hi3751V811 \のeMMC目录下、烧录指令如下:
DD =を/ mnt / media_rw / SDA4 /のkernel.img =は/ dev /ブロック/プラットフォーム/ SOC / f9830000.emmc /バイ名/カーネルの場合
DDの場合=を/ mnt / media_rw / SDA4 / Hi3751V811.dtb =は/ dev /ブロック/プラットフォーム/ SOC / f9830000.emmc /バイ名/ DTBの


します。https://blog.csdn.net/zhangweihui123/article/details/78581847を参照してください。

デバッグコマンド:
logcat -v -bタイムカーネル| -すなわちHYM8563以下-ie hisilicon_i2c_probe以下のgrep
logcat -v時間| grepを以下-ie AlarmManager

adbのシェル"-r busyboxののhwclockの"
adbのシェル"insmodのの/vendor/lib64/modules/rtc-hym8563.ko"

APP->カーネルのコールフロー:

アプリ方法:AlarmManagerアム=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE)。
Z:\ワークスペース\ XBHV811 \枠組み\ベース\コア\のJava \アンドロイド\アプリ\ AlarmManager.java
---「公共のボイドのsetTime(長いミリ)
Z:\ワークスペース\ XBHV811 \枠組み\ベース\サービス\コア\のJava \ comのアンドロイド\サーバー\のAlarmManagerService.javaの\
Z:\ワークスペース\ XBHV811 \枠組み\ベース\サービス\コア\ JNI \ com_android_server_AlarmManagerService.cpp
---「android_server_AlarmManagerService_setKernelTime
--- "int型AlarmImpl ::のsetTime(構造体体timeval *テレビ)
- - 「RES = IOCTL(FD、RTC_SET_TIME、&RTC)。
Z:\ワークスペース\ XBHV811 \デバイス\ hisilicon \ bigfish \ SDK \ソース\カーネル\にlinux-4.9.y \ドライバーは、RTC \ RTC-dev.cを\ --- "unsigned int型CMD rtc_dev_ioctl(構造体ファイル*ファイル、符号なしの長い引数)
Z:\ワークスペース\ XBHV811 \デバイス\ hisilicon \ bigfish \ SDK \ソース\カーネル\にlinux-4.9.y \ドライバーは、RTC \ RTC-hym8563.cを\します


服务启动过程:
Z:\ワークスペース\ XBHV811 \枠組み\ベース\サービス\ javaの\ COMアンドロイド\サーバー\のSystemServer.java \
--- "mSystemServiceManager.startService(AlarmManagerService.class)。
Z:\ワークスペース\ XBHV811 \枠組み\ベース\サービス\コア\のJava \ COMアンドロイド\サーバー\ AlarmManagerService.java \
--- "ONSTART()
---"のinit()
Z:\ワークスペース\ XBHV811 \枠組み\拠点\サービス\コア\ JNI \ com_android_server_AlarmManagerService.cpp
--- "
静的定数JNINativeMethod sMethods [] = {
/ *名、署名、funcPtr * /
{ "INIT"、 "()J"、(ボイド*)android_server_AlarmManagerService_init}、
{ "閉じる"、 "(J)V"、(ボイド*)android_server_AlarmManagerService_close}、
{ "設定"、 "(JIJJ)V"、
{ "waitForAlarm"、 "(J)、I"、(ボイド*)android_server_AlarmManagerService_waitForAlarm}、
{ "setKernelTime"、 "(JJ)I"、(ボイド*)android_server_AlarmManagerService_setKernelTime}、
{ "setKernelTimezone"、 "(JI)I"、 (ボイド*)android_server_AlarmManagerService_setKernelTimezone}
}。

RTC関連インターフェース

HY8563 RTCモジュールは、
RTCの時間を読み取ります。
|| i2c_channel device_addr register_addr register_addr_len read_bytes_number

I2C_READ 0x04の0xA3の0x02では0x01 0x07の
データが読み:
0x10を0x51 0x04を0x14に0x12を0x06で0x48
秒:0x10の
分:0x51
時間:0x04の
日付:0x14の
週:0x12を&0x07の
月:0x06の
年:0x48 + 1970

RTCの時間を書く:
i2c_write 0xA3の0x04を0x02の0x01を0x07には0x10 0x51 0x04を0x14に0x12を0x06で0x48

RTCタイマースイッチを読む:
I2C_READは0x01 0x01の0x01を0x04の0xA3の
データ読み出しを:
0x02の
BIT1 1が0に近いために開始するように
書かれているRTCタイマースイッチ
i2c_write 0x04が0xA3のが0x01 0x01を0x01を0x00で

RTCタイマーの時間を書く
i2c_write 0x04が0xA3の0x09の0x01を0x04の0x51 0x04の 0x14の0x02の

テストRTCウェイクアップコマンド:
i2c_write 0x04が0xA3のは0x01 0x01を0x01の0x02の
i2c_write 0x04の0xA3の0x02の0x01を0x07に0x50を0x51 0x04を0x14に0x12を0x06で0x48
i2c_write 0x04が0xA3の0x09の0x01を0x04の0x52 0x04の0x14の0x02の
I2C_READ 0x04が0xA3の0x02の0x01を0x07の
IO割り込み表示RTC全くレベルが存在しません、 HY8563割込みピンがローレベルに設定する必要があります。


24Vオープン検出
i2c_writeは0x01 0x4C 0x80と0x01の0x04の0x03の0x23 0x01の0xA1の
24V検出オフ
i2c_writeは0x01 0x4C 0x80と0x01の0x04の0x03の0x23 0x00の0xA0を

検出されたすべての開き
i2c_writeは0x01 0x4C 0x80と0x01の0x04を0x03のは0xFF 0x01の0x7D
近くをすべて検出
i2c_writeは0x01 0x4C 0x80と0x01を0x04の0x03を0xFFでは0x00 0x7C

書き込み5 3 0>の/ proc / MSP / GPIOエコー
エコー/ GPIO 5 2 1> / PROC / MSPを書きます

書き込み5 3 0>の/ proc / MSP / GPIOエコー
エコー/ GPIO 5 2 0>の/ proc / MSPを書きます

おすすめ

転載: www.cnblogs.com/blogs-of-lxl/p/11588820.html