今天移植全志提供的android6.0sdk到我们自己的平台上,在验证相关功能时发现串口6无法正常进行收发,排除本身测试代码问题后,排查sdk,发现其提供的sdk中对于串口6的配置有坑,记录下解决方法,希望帮助到其他人。
1、问题描述
sys_config.fex中配置了串口6,init.rc中增加其对应的读写权限,然后编写测试程序对串口进行,读写,发现无法收到测试程序写入的数据,接收估计可以但是没有继续验证,后面使用示波器测量发现串口6的tx上有一个持续的方波信号!频率大概32K,推测这个就是导致无法正常写数据的原因。
2、排查过程
(1)、首先确认sys_config.fex中配置是否冲突;这部分主要时确认其他驱动或代码是否也用了这个IO口。我这一步正常,不存在IO冲突;
(2)、确认IO的复用功能是否配置正确;这部分主要是因为有的IO口一般存在多种复用功能,比如我使用的串口6的tx管脚(GPIOI12),本身支持IO口(又包含输入和输出两种方式)、SPI0_MOSI、Uart6_Tx、CLK_OUT_A、EINT24等多种模式,这个可以从spec中查到,如果手上没有spec,可以从sdk的kernel相关pin源码中查到复用配置(可以查阅如下博客:http://blog.csdn.net/smilefyx/article/details/78860261)。我的这部分配置如下:
[uart6]
uart6_used &