【應用技術】AM335x串列埠技術分析

武漢永珍奧科發表於2021-11-09

        HD-AM335X-IOT評估板採用TI AM3352處理器, 800MHz主頻,整合6路UART ( 提供RS-485驅動 ),支援GPS、GPRS、感測器、採集模組等功能擴充套件。2路CAN匯流排介面,實現車輛、工業現場控制資料的可靠傳輸。1路百兆網介面、1路千兆網介面,滿足電網、軍工等特殊環境內外網隔離與雙網冗餘的應用需求,同時可透過光纖交換機實現資料高速上傳。

HD-AM335X-IOT評估板

        AM335x共6路原生串列埠,所有原生串列埠的相關資訊如表1.1所示。

1     串列埠系統資訊

串列埠系統資訊


        /proc/tty/driver/目錄內的各個檔案是Linux系統記錄串列埠各類事件的介面檔案,內部記錄該驅動的基本資訊,如中斷號、傳送位元組數、接收位元組數、異常狀態觸發次數等,使用者根據針對這些資訊可反向分析異常原因,從而確認問題解決思路,檔案內容如圖1.1所示。


Linux系統記錄串列埠


圖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/目錄內對應的驅動檔案上。



串列埠狀態記錄介面

2     串列埠狀態記錄介面


        在現場使用環境下,當出現串列埠報文異常時,有經驗的工程師可直接透過此檔案分析各類錯誤。常見的錯誤關係與應對方法如下所示。


串列埠記錄常見的錯誤



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70009145/viewspace-2841247/,如需轉載,請註明出處,否則將追究法律責任。

相關文章