HD-AM335X-IOT评估板采用TI AM3352处理器,800MHz主频,集成6通道UART(提供RS-485驱动),支持GPS、GPRS、传感器、采集模块等功能扩展。 2路CAN总线接口可实现车辆和工业现场控制数据的可靠传输。 1个100M网络接口和1个千兆网络接口,满足电网、军工等特殊环境下内外网隔离、双网冗余的应用需求。同时可以通过光纤交换机实现高速数据上传。
AM335x串口技术
AM335x 共有6 个本机串口。所有本机串口的相关信息如表1.1所示。
表1.1 串口系统信息
表1.1 串口系统信息
/proc/tty/driver/目录下的每个文件都是Linux系统记录串口各种事件的接口文件。它内部记录了驱动程序的基本信息,如中断号、发送的字节数、接收的字节数、异常状态触发的次数等。根据这些信息,用户可以逆向分析异常的原因,以确认问题的解决思路。文件内容如图1.1所示。
图1.1 OMAP_SERIAL文件内容
所谓的Linux驱动实际上是封装了硬件寄存器的读写操作,将难以理解的硬件操作封装成易于管理的统一接口函数。 AM335x的串口状态寄存器如下。
AM335x串口状态
RXFIFOSTS:接收缓冲区状态位;
TXSRE:记录发送保持寄存器和移位寄存器是否为空;
TXFIFOE:记录发送保持寄存器是否为空;
RXBI:记录接收缓冲区是否有Break触发;
RXFE:记录接收缓冲区是否有帧错误;
RXPE:记录接收缓冲区是否有奇偶校验错误;
RXOE:记录接收缓冲区是否有溢出错误;
RXFIFOE:记录接收缓冲区是否有数据;
AM335x 的原生串口驱动程序为kernel-source/drivers/tty/serial/omap-serial.c。驱动代码中,通过查找UART模块的LSR(Uart Line Status)寄存器,将所有状态信息记录在up-port.icount中。如图1.2所示。例如,rx记录接收的字节数,tx记录发送的字节数,break记录UART_LSR_BI位触发的次数,parity记录奇偶校验错误,frame记录帧错误触发的次数,overrun记录缓冲区溢出错误等。然后系统将这些错误计数反馈给相应硬件平台的/proc/tty/driver/目录下相应的驱动文件。
图1.2 串口状态记录界面图1.2 串口状态记录界面
在现场使用环境中,当出现串口报文异常时,有经验的工程师可以通过该文件直接分析出各种错误。常见错误关系及解决方法如下。
串口状态记录界面常见错误