最近在写AM335x平台的串口测试工具,最开始的时候写的第一版本,测试一直很ok,但是存在一些缺陷,于是就想改进一下,没想到后面在新的板子测试,竟然发现了以个很致命的问题,在旧系统旧内核测试一切正常,在新系统的情况下,系统16路串口测试,am335x自带的4路总是出现丢包的问题,其他扩展出来的16路没有任何问题,于是折腾了好久。
总算搞定。
我的板子系统自带4路,经过spi扩展出来12路,总的16路,首先是串口配置,一般有两种情况下的配置,一种是使用默认的参数直接配置即可,一种就是根据自己的需要重新配置。
首先定义termios结构体
static struct termios termold[17],termnew[17];
使用系统默认参数配置:
fd[i]=open(port[i],O_RDWR) ; //打开串口
tcgetattr(fd[i],&termold[i]); //获得默认串口配置参数
tcgetattr(fd[i],&termnew[i]);
cfmakeraw(&termnew[i]); //使用cfmakeraw 配置
cfsetspeed(&termnew[i],B115200); //{115200,460800,921600} //设置波特率