第1章AM335x串口技術(shù)分析
1.1簡(jiǎn)介
HD-AM335X-IOT評(píng)估板采用TI AM3352處理器, 800MHz主頻,集成6路UART ( 提供RS-485驅(qū)動(dòng) ),支持GPS、GPRS、傳感器、采集模塊等功能擴(kuò)展。2路CAN總線接口,實(shí)現(xiàn)車輛、工業(yè)現(xiàn)場(chǎng)控制數(shù)據(jù)的可靠傳輸。1路百兆網(wǎng)接口、1路千兆網(wǎng)接口,滿足電網(wǎng)、軍工等特殊環(huán)境內(nèi)外網(wǎng)隔離與雙網(wǎng)冗余的應(yīng)用需求,同時(shí)可通過(guò)光纖交換機(jī)實(shí)現(xiàn)數(shù)據(jù)高速上傳。
1.2串口簡(jiǎn)介
AM335x共6路原生串口,所有原生串口的相關(guān)信息如表1.1所示。
表1.1 串口系統(tǒng)信息
/proc/tty/driver/目錄內(nèi)的各個(gè)文件是Linux系統(tǒng)記錄串口各類事件的接口文件,內(nèi)部記錄該驅(qū)動(dòng)的基本信息,如中斷號(hào)、發(fā)送字節(jié)數(shù)、接收字節(jié)數(shù)、異常狀態(tài)觸發(fā)次數(shù)等,用戶根據(jù)針對(duì)這些信息可反向分析異常原因,從而確認(rèn)問(wèn)題解決思路,文件內(nèi)容如圖1.1所示。
圖1.1 OMAP_SERIAL文件內(nèi)容
所謂Linux驅(qū)動(dòng),實(shí)際是對(duì)硬件寄存器的讀寫操作封裝,將難以理解的硬件操作封裝成統(tǒng)一的便于管理的接口函數(shù)。AM335x的串口狀態(tài)寄存器如下所示。
RXFIFOSTS:接收緩沖區(qū)狀態(tài)位;
TXSRE:記錄發(fā)送保持和移位寄存器是否為空;
TXFIFOE:記錄發(fā)送保持寄存器是否為空;
RXBI:記錄接收緩沖區(qū)是否有Break觸發(fā);
RXFE:記錄接收緩沖區(qū)是否有幀錯(cuò)誤;
RXPE:記錄接收緩沖區(qū)是否有奇偶校驗(yàn)錯(cuò)誤;
RXOE:記錄接收緩沖區(qū)是否有溢出錯(cuò)誤;
RXFIFOE:記錄接收緩沖區(qū)是否有數(shù)據(jù);
AM335x的原生串口驅(qū)動(dòng)為kernel-source/drivers/tty/serial/omap-serial.c,驅(qū)動(dòng)代碼內(nèi)通過(guò)查找UART模塊的LSR(Uart Line Status)寄存器,將所有狀態(tài)信息記錄在up->port.icount內(nèi),如圖 1.2所示。例如rx記錄接收字節(jié)數(shù),tx記錄發(fā)送字節(jié)數(shù),break記錄UART_LSR_BI位觸發(fā)次數(shù),parity記錄奇偶校驗(yàn)錯(cuò)誤,frame記錄幀錯(cuò)誤觸發(fā)次數(shù),overrun記錄緩沖區(qū)溢出錯(cuò)誤,等。然后系統(tǒng)把這些錯(cuò)誤計(jì)數(shù)反饋到對(duì)應(yīng)硬件平臺(tái)的/proc/tty/driver/目錄內(nèi)對(duì)應(yīng)的驅(qū)動(dòng)文件上。
圖 1.2 串口狀態(tài)記錄接口
在現(xiàn)場(chǎng)使用環(huán)境下,當(dāng)出現(xiàn)串口報(bào)文異常時(shí),有經(jīng)驗(yàn)的工程師可直接通過(guò)此文件分析各類錯(cuò)誤。常見(jiàn)的錯(cuò)誤關(guān)系與應(yīng)對(duì)方法如下所示。