MTK Android Driver:UART,mtkandroid
轉載請註明出處:http://blog.csdn.net/cbk861110/article/details/42583469
1.uart口配置:將uart log和meta配置連接埠配置為其他連接埠,空出來的uart1專門用作此功能通訊調試。備忘:硬體主板上只有uart1口能夠飛線出來調試。修改方法:參考:[FAQ07420]如何設定吐uart log的uart口JB5.MP之前的版本:alps/medaitek/custom/[$project]/preloader/inc/cust_bldr.h#define CFG_UART_LOG (UART4) //(UART1) #define CFG_UART_META (UART4) //(UART1)JB5.MP之後的版本:alps\mediatek\custom\$project\preloader\cust_bldr.makCFG_UART_LOG :=UART4 #UART1CFG_UART_META :=UART4 #UART1
2.提升UART port的permission,同樣以UART1為例alps/medaitek/config/[$project]/init.project.rc中,添加:chmod 0666 /dev/ttyMT0chown system system /dev/ttyMT0
uart物理連接埠與系統裝置名稱對應關係:uart1--/dev/ttyMT0uart2--/dev/ttyMT1uart3--/dev/ttyMT2uart4--/dev/ttyMT3
3.平台相關serialport api代碼:上層api: alps\frameworks\base\core\java\android\hardware\SerialPort.javaJNI定義:alps\frameworks\base\core\jni\android_hardware_SerialPort.cpp系統demo apk:alps\frameworks\base\tests\SerialChat備忘1:此api目前驗證還不ok,還在持續確認中;
備忘2:驗證可以調試ok的api機制可以參考:android_serialport_api,這個架構被託管在: https://code.google.com/p/android-serialport-api/ Google的程式碼程式庫,無奈國內無法下載 https://github.com/cepr/android-serialport-api GITHUB的地址
4.測試方法:1.)確認串口號,傳輸速率,校正方式,停止位等所需的設定是否正確
2.)短接TX和RX看是否可以進行自發自收
3.)如果是串連電腦通過串口調試工具/超級終端調試,請確認串口線是否可以正常接收,發送資料。可以短接,看能不能自發自收。
5.硬體焊線硬體焊出TX RX GND三根線串連外圍通訊裝置,用以通訊調試。
6.串口log列印方法:1)插入UART線後,電腦會自動安裝對應驅動,我的電腦-右鍵-裝置管理員-連接埠:USB-to-Serial Comm Port(COM14),在此可以查詢到UART對應的電腦連接埠號碼;2) 串口列印工具a. 電腦內建的超級終端:使用方法:"開始"菜單-所有程式-附件-通訊-超級終端-彈出框中填寫 名稱&連接埠號碼,可以自動產生應用彈出介面,可以用來顯示列印UART串口資訊;b)“串口工具”:網上下載c) SecureCRT:網上下載,使用方法:connet->右鍵->properties 設定屬性:設定通訊類型為串口:Protocol:Serial 設定連接埠配置:Serial:(下列配置資料僅為參考)Port:COM14傳輸速率:9600校正:none停止位:1資料位元:8流量控制:NULL
7.andori uart log eng版本也無法吐出的分析ENG版本在開機到 Launcher之後自動關閉UART Log,從而使幾乎大部分的測試在eng版本和user版本上得到一致的測試結果。有兩種種方法可以在eng版本上臨時開啟UART log(重啟之後失效):在超級終端視窗按下鍵盤的任何一個按鍵就可以讓UART log繼續吐。此種方式需 要UART的TX和RX都要串連好。 通過修改proc參數的方式: adb shell echo 1 > /proc/mtprintk還有一種方法可以在eng版本上面永久性開啟UART Log (重啟之後繼續有效):通過修改Property的方式:adb shell setprop persist.uartconsole.enable 1 (通過getprop persist.uartconsole.enable可查詢屬性值)參考:[FAQ11402]JB9/KK1版本開機動畫完之後UART log停止輸出問題[FAQ10087]為什麼進入Launcher介面之後UART Log就不吐了
8.andori uart log user版本如何開啟參考:[FAQ02495]如何在Android user 版本下開啟UART log[FAQ03891]如何在User版本開啟串口(Uart),抓取 上層Log,開啟輸入控制台
9.android 串口通訊類型:中用與Android與串口裝置通訊的方案有四種: 第一種是直接用SDK的BluetoothSocket類來進行藍芽通訊,外部裝置再用藍芽轉串口進行控制。這種方式有較高延時,藍芽模組需要供電,低頻寬。 第二種是使用USB轉RS232方式(使用核心驅動和使用Android驅動兩種方式),這種方式不需要硬體改動,不需要另外的供電,延時很小且有較高頻寬。但是Android裝置需要硬體上支援USB Host介面(一般Android平板支援,Android手機一般是沒有的),另外可能需要root以改變/dev/ttyUSB0檔案許可權來載入一個核心模組。開發需要使用android_serialport_api。 第三種是最容易的方案,直接使用串口進行串連,但是這種方式相容性不好,只有少數裝置支援,而且串口不支援流量控制(由Android提供的USB Host API決定的)。使用時也用android_serialport_api。 第四種是將Android作為USB從機,外部裝置作為USB主機與之通訊,這種方式幾乎與所有Android裝置相容(一般都有USB從口),無需root,低延遲,高頻寬。