您的位置:首页 > 移动开发 > Android开发

MTK Android Driver:UART测试

2016-03-30 18:07 429 查看
转载请注明出处: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,低延迟,高带宽。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: