[FAQ03891] 如何在User版本開啟串列埠(Uart),抓取上層Log,開啟輸入控制檯
阿新 • • 發佈:2019-01-10
FAQ Content
[Description]如何在User版本開啟串列埠(Uart),開啟輸入控制檯,抓取上層Log
[Keyword]
User Uart Log Logcat 輸入 控制檯 串列埠
[Solution]
(1) 如何在User版本中使用串列埠(Uart)
*Android GB 2.3 GB.MP GB.TDD.MP GB2.MP GB2.TDD.MP
alps/mediatek/config/common/autoconfig/kconfig/USER
如果版本一致的話,應當是這個檔案的37行
CONFIG_COMLINE=”console=ttyMT3,921600n1 loglevel=0”
您把最後的loglevel = 8 即可
*Android GB3.MP GB3.TDD.MP
手法1:直接用ENG 版本的lk 替換掉user 版本的lk, 即重新download eng 版本的lk 即可。
手法2: alps/bootable/bootloader/lk/app/mt_boot/mt_boot.c 裡面的 178 行,找到printk.disable_uart=1 改成 printk.disable_uart=0
然後重新編譯lk, download lk 即可。
*Android ICS 4.0/JB 4.1
如果是必須開機即需要抓取User 版本的Uart log, 請提交eservice 申請預設開啟uart 的xlog 執行檔
否則可以直接在adb shell 中輸入aee -k 6, 後面的6即kernel printk 的Log等級,您可以選擇不同的等級
*Android JB 4.2 以及以後版本
手法1:直接用ENG 版本的lk 替換掉user 版本的lk, 即重新download eng 版本的lk 即可。
手法2: alps/bootable/bootloader/lk/app/mt_boot/mt_boot.c 裡面的 178 行,找到printk.disable_uart=1 改成 printk.disable_uart=0
然後重新編譯lk, download lk 即可。
手法3: 如果只是臨時將uart log 開啟用於測試,請到我司DMS 上查詢文件: Enable UART Log in user build.pptx
* 注意事項: 由於uart log 的列印對系統的效能造成嚴重影響, 在JB9.MP 以及以後版本, 在開機完成後預設關閉了uart log, 以提高系統性能. 從uart log 中可以看到如:
抓UART Log的時候會看到類似下面的Log。
[ 25.986567].(1)[324:Binder_1][usktrk] socket close[10422]
[ 25.987748].(1)[324:Binder_1]BOOTPROF: 25987.740155:BOOT_Animation:END
[ 25.988616].(1)[324:Binder_1]<< printk console disable >>
要關閉此功能,可以進行如下操作:
有三種種方法可以重新開啟UART log:
1. 在超級終端視窗按下鍵盤的任何一個按鍵就可以讓UART log繼續吐。此種方式需要UART的TX和RX都要連線好。
2. 通過修改proc引數的方式: adb shell echo 1 > /proc/mtprintk
3. 通過設定system property:
使用: UART:command: setprop persist.uartconsole.enable 1
ADB Shell: adb shell setprop persist.uartconsole.enable 1
(2) 如何開啟Uart 的控制檯(console/sh)
Uart 控制檯的開啟,決定於System property ro.debuggable,預設如果ro.debuggable=1 則開啟(Eng 版本),User 版本ro.debuggable=0 則關閉。
想在User 版本中開啟,需要更新alps/mediatek/config/mt65xx/init.rc, 在init.rc 的觸發器程式碼:
on property:ro.debuggable=1
start console
後面增加:
on property:ro.debuggable=0
start console
然後重新編譯bootimage 即可, ./mk [project_name] new bootimage
(3) 如何在Uart 上抓取上層LOG
Uart 上進行輸入,實際就是開啟了一個sh 對接起來,所以絕對不能在uart 上輸入一個長命令(不可中斷),否則uart 將被卡住,不能再輸入。
抓取上層log, 我們通常需要call logcat, 但logcat 是不可中斷的,將導致uart 不能再輸入。
處理的方法即將logcat 轉入後臺執行,如下操作即可:
Main log: logcat -v time &
Radio log: logcat -v time -b radio &
Event log: logcat -v time -b events &
如果想關閉上層log, 直接ps 查閱前面開啟的logcat process pid, 然後kill -9 pid 殺掉即可。
注意一定要帶“&”,否則將block 住uart輸入