MTK Android Driver:UART

转载请注明出处: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.mak
CFG_UART_LOG :=UART4  #UART1
CFG_UART_META :=UART4 #UART1

2.提升UART port的permission,同样以UART1为例
alps/medaitek/config/[$project]/init.project.rc中,添加:
chmod 0666 /dev/ttyMT0
chown system system /dev/ttyMT0

uart物理端口与系统设备名称对应关系:
uart1--/dev/ttyMT0
uart2--/dev/ttyMT1
uart3--/dev/ttyMT2
uart4--/dev/ttyMT3

3.平台相关serialport api代码:
上层api: 
alps\frameworks\base\core\java\android\hardware\SerialPort.java
JNI定义:
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/  谷歌的代码库,无奈国内无法下载 
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,低延迟,高带宽。

你可能感兴趣的:(MTK Android Driver:UART)