MTK6572 android4.4上串口模块的调试

年前调试了一下用mtk的uart1口来外接外部模块,拓展为2个com口。写此文的目前主要是整理一下思路。

拓展ic的型号是WK2114:

WK2114 原理框图

MTK6572 android4.4上串口模块的调试_第1张图片

由上图可以看到首先得把主接口测试ok。

mtk6572的uart1默认是用来打log用的,所以要修改权限    

    chmod 0660 /dev/ttyMT0
    chown system system /dev/ttyMT0

修改过后可以用在手机上装一个com口apk连接电脑测试,看看是否正常。一般这步是没问题的。

另外有可能会碰到不稳定的情况,这是要把默认的uart1的log功能关掉。

这两步完成保证主接口的功能正常,然后添加wk2114的驱动代码进行调试,原厂给过来的是在三星上面适配的驱动,在mtk上还要做简单的修改。

修改前首先看一下WK2114 引脚描述:

MTK6572 android4.4上串口模块的调试_第2张图片


看到上面的图给人的感觉就是太简单了,只需要修改reset和eint就行了,其他的几个量一下就ok,确实是这样。但目前被几个问题挡住了:

1、电压方面由于mtk6572满足不了要求的vcc,所以有外接升IC,飞线那叫一个乱。量出来也能满足要求,但是有没有隐患我不好说。

2、工具方面,没示波器。

3、测试方法 。

现在需要重点解决的问题就是这个问题:

我在wk2114.c的源码中看到以下内容:

static struct uart_driver wk2xxx_uart_driver = {

        owner:                  THIS_MODULE,
        major:         SERIAL_WK2XXX_MAJOR,
#ifdef CONFIG_DEVFS_FS
        driver_name:            "ttySWK",
        dev_name:               "ttysWK",
#else
        driver_name:            "ttySWK",
        dev_name:               "ttysWK",
#endif
        minor:                  MINOR_START,
        nr:                     NR_PORTS,
        cons:                   NULL//WK2Xxx_CONSOLE,
};

后来查找资料,cons:NULL代表不能像前面那样用控制台来测试了。不知这里是否理解有误?肯请大师们指点。

另外还有一个问题:如果拓展模块上没有接终端设备,是否看不到完整的log。也就是说uart_ops->startup没有跑起来。


总之,目前找不到好的调试方法。


参考外部资料:

http://wenku.baidu.com/link?url=ZU2HGsUO6OokIvgeJ_AIICHCIOGz0vvt3swB4fxQoMmHhSq_qtw1pHe7tXHr2XpoxwSkagei4T7QdiBALfKjQzhL0YPhf3vnz3Q9wMXDaMG

linux设备驱动程序第三版 最后一章   tty驱动



端口启动函数startup()的原型为: 

int  (*startup)(struct uart_port *); 该函数申请所有中断资源,初始化底层驱动状态,并开启端口为可接收数据的状态。


UART,串口信息的查看(linux):

每个UART控制器包含一个波特率发生器,发送器,接收器和控制单元,发送和接收器包括FIFO和数据移位器,首先数据被写到FIFO中,然后复制到发送移位器中准备发送,最后数据被发送数据管脚移位发出。数据接收过程是:首先从接收管脚上面的到数据,然后将数据从移位器中复制到FIFO 中。

rs232串口通信接口:当通信距离较近时(<12m),可以使用电缆线直接连接,若距离较远,需附加调制解调器。

9个脚针的定义:

CDC数据载波检测,RXD接收数据,TXD发送数据,DTR数据中断准备,GND信号地,DSR数据设备准备好,RTS请求发送,CTS清楚发送,DELL振铃指示。

 

linux下查看串口信息

查看串口是否可用,可以对串口发送数据比如对com1口,echo lyjie126 > /dev/ttyS0
查看串口名称使用 ls -l /dev/ttyS* 一般情况下串口的名称全部在dev下面,如果你没有外插串口卡的话默认是dev下的ttyS* ,一般ttyS0对应com1,ttyS1对应com2,当然也不一定是必然的;
查看串口驱动:cat /proc/tty/drivers/serial
查看串口设备:dmesg | grep ttyS*

 

例如,在终端输入:dmesg | grep ttyS*显示从系统启动到现在串口插入拔出的信息,让后我在电脑上插入一个usb转rs232线,再在终端输入:dmesg | grep ttyS* ,会显示:usb 2-2.1:pl2303 converter now attached to ttyUSB0;可以通过此法确定我新插入的串口线对应的串口号。


结论:最终这个问题由于时间上的原因没有继续这样做,客户通过pl2303的方案来实现。由于pl2303 在linux上有现成的驱动,这就简单了。

你可能感兴趣的:(MTK相关)