USB TO UART 调试串口的一种新测试方案

旧方案

之前在做专用 ATS 测试底板时,应用了一个与普通调试串口进行对接的方案(https://blog.csdn.net/engrossment/article/details/103064310),这个方案适用于定制底板,因为他不经过串口转 USB 芯片 CH340,在待测底板上这就属于漏测了。

方案一

采用一个现成的串口转 USB 独立模块,接入待测板的 Micro USB 口,转为串口后再与其他普通串口对接,进行数据收发测试。但实测时才注意到,板卡和模块上的两个 CH340 对接,根本互不认识,无法通信。

方案不可行。

方案二

从方案一的实测结果分析,注意到,对接的系统必须能够识别CH340,才有可能进行数据通信测试。于是想到,通过 Micro USB 线接回去板卡自身的 USB Host 如何?对比考虑 USB 调试串口接入电脑时,需要 Windows 提供对应的驱动。专门安装其芯片驱动或者使用通用驱动(win10)。那么我们在板卡的 Linux 里也是需要有驱动才能识别 CH340,生成设备节点进行串口通信。

经驱动同事验证,我们当前版本的内核就已经集成了 CH340 的驱动,只要在 menuconfig 配置上再编译出来就可以了。

实测证明,添加驱动后,通过 USB 调试串口线把 USB TO UART 调试串口与 USB HOST 相连,设备节点就新增了 /dev/ttyUSB0,这个节点就可以与原来调试串口的 /dev/ttyS2 进行通信了。

还剩一个问题

内核占用了 /dev/ttyS2。发给他的数据,内核都会进行回显,然后尝试解析执行,并会出反馈。这无法以一般串口通信的方式进行数据收发测试。上文提到的之前的方案给出了一个特殊的数据收发方法,利用了内核的回显功能。我们这里为了提高稳定性,干脆就直接把内核的调试串口配置修改了,不再以 /dev/ttyS2 作为调试串口。这里采用在 Ubuntu 生成 scr 文件的方法,好处有两个。一是一次换文件就可以,不用每次配置;二是不受 uboot 默认变量与存储与 Flash、eMMC 的变量的影响。

#boot.cmd 文件内容
setenv console 'ttyS2,115200n8'
mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "Beagleboard boot script" -d ./boot.cmd ./boot.scr
#sudo apt-get install u-boot-tools(mkimage 可用该命令安装)

当然了,这么配置之后,这个系统就只能用于测试,无法使用调试串口了。为了便于排查问题,可以多提供一个车 scr 文件,重新配置 uboot 的 console 变量。

该方案在广州创龙的 570x 板卡验证通过。

2020年7月27日

你可能感兴趣的:(嵌入式硬件测试)