概述
這篇文章是呼應(yīng)使用QXDM收集高通modem日志里邊提到的一個(gè)想法
通過(guò)分析QXDM的原理可以知道 他其實(shí)是和手機(jī)做了串口連接(不知道這么描述是不是準(zhǔn)確),用usb模擬了串口,然后通過(guò)串口協(xié)議拿到了手機(jī)的modem日志流。知道了這個(gè)就可以考慮如果Android可以自己直接訪問(wèn)這個(gè)串口那么是不是我們就可以在手機(jī)里邊拿到這個(gè)日志流了?
不會(huì)講到具體的Android 串口通信,并且沒(méi)啥干貨只是講了兩個(gè)學(xué)習(xí)調(diào)研方向,就是這么水。
虛擬串口通信
虛擬串口通信描述的可能不太準(zhǔn)確,最準(zhǔn)確的說(shuō)法應(yīng)該是Android設(shè)備自身模擬外部設(shè)備給Android的某個(gè)串口發(fā)送信息。也就是上邊說(shuō)的手機(jī)自己獲取modem日志流的一個(gè)思路。Android自身模擬PC端的軟件給Android串口發(fā)送數(shù)據(jù)。
這篇博客會(huì)簡(jiǎn)單的描述一個(gè)思路,因?yàn)榇a我也沒(méi)跑通。網(wǎng)上相關(guān)的資料不多,很多資料深入到硬件領(lǐng)域,閱讀起來(lái)比較困難。當(dāng)然也可能是由于硬件領(lǐng)域了解過(guò)少,沒(méi)有找到合適的資料搜索方向。
其實(shí)這篇文章規(guī)劃的是去年寫(xiě)的,就是因?yàn)楫?dāng)時(shí)一點(diǎn)頭緒都沒(méi)有拖到了現(xiàn)在。直到前兩天在github上看到一個(gè)項(xiàng)目,是手機(jī)客戶(hù)端收集高通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 &
根據(jù)項(xiàng)目描述,這就是打開(kāi)手機(jī)收集Modem日志的關(guān)鍵腳本。
分析腳本內(nèi)容,其實(shí)就是使用echo命令把AT指令發(fā)到Android的串口。這也應(yīng)該是QXDM收集日志的串口通信內(nèi)容,但是在我的手機(jī)上并沒(méi)有生效,估計(jì)是串口掛載不成功或者指令和我的手機(jī)不適配。上邊的命令行可能只能適配一些具體的手機(jī)型號(hào)。
雖然這次沒(méi)有成功的達(dá)到目的,不過(guò)除了驗(yàn)證了我之前的思路是正確的,還提供了兩個(gè)具體的思路:
Android給自身串口發(fā)送消息的方式:使用echo命令給相應(yīng)的設(shè)備文件發(fā)送信息。
QXDM控制CPU使用的指令集:AT指令(高通CPU)。
如果還有小伙伴有這個(gè)需求,可以從這兩個(gè)角度去探索。我最近一段時(shí)間在這個(gè)方向應(yīng)該不會(huì)有進(jìn)一步的學(xué)習(xí)調(diào)研了,(總感覺(jué)這個(gè)更適合搞硬件的攻城獅同學(xué)搞??????)如果以后工作或者學(xué)習(xí)過(guò)程中在這方面有更進(jìn)一步的會(huì)隨緣更新這篇博客。