概述
這篇文章是呼應使用QXDM收集高通modem日志里邊提到的一個想法
通過分析QXDM的原理可以知道 他其實是和手機做了串口連接(不知道這么描述是不是準確),用usb模擬了串口,然后通過串口協議拿到了手機的modem日志流。知道了這個就可以考慮如果Android可以自己直接訪問這個串口那么是不是我們就可以在手機里邊拿到這個日志流了?
不會講到具體的Android 串口通信,并且沒啥干貨只是講了兩個學習調研方向,就是這么水。
虛擬串口通信
虛擬串口通信描述的可能不太準確,最準確的說法應該是Android設備自身模擬外部設備給Android的某個串口發送信息。也就是上邊說的手機自己獲取modem日志流的一個思路。Android自身模擬PC端的軟件給Android串口發送數據。
這篇博客會簡單的描述一個思路,因為代碼我也沒跑通。網上相關的資料不多,很多資料深入到硬件領域,閱讀起來比較困難。當然也可能是由于硬件領域了解過少,沒有找到合適的資料搜索方向。
其實這篇文章規劃的是去年寫的,就是因為當時一點頭緒都沒有拖到了現在。直到前兩天在github上看到一個項目,是手機客戶端收集高通Modem日志的腳本:
mount -t vfat -o rw /dev/block/sda1 /sdcard/udisk2
chmod 777 /dev/ttyUSB*
echo -e "AT+QCFG="dbgctl",0\r\n " > /dev/ttyUSB4
sleep 1s
QAndroidLog -p ttyUSB2 -b 115200 -s /storage/udisk2/qxdmlog -f /sdcard/default.cfg &
根據項目描述,這就是打開手機收集Modem日志的關鍵腳本。
分析腳本內容,其實就是使用echo命令把AT指令發到Android的串口。這也應該是QXDM收集日志的串口通信內容,但是在我的手機上并沒有生效,估計是串口掛載不成功或者指令和我的手機不適配。上邊的命令行可能只能適配一些具體的手機型號。
雖然這次沒有成功的達到目的,不過除了驗證了我之前的思路是正確的,還提供了兩個具體的思路:
Android給自身串口發送消息的方式:使用echo命令給相應的設備文件發送信息。
QXDM控制CPU使用的指令集:AT指令(高通CPU)。
如果還有小伙伴有這個需求,可以從這兩個角度去探索。我最近一段時間在這個方向應該不會有進一步的學習調研了,(總感覺這個更適合搞硬件的攻城獅同學搞??????)如果以后工作或者學習過程中在這方面有更進一步的會隨緣更新這篇博客。