基于A(yíng)RM9 的嵌入式多串口服務(wù)器設計

3.1 在Linux 系統中對串口的操作
UART 的操作主要有: 數據發(fā)送、數據接收、產(chǎn)生中斷、設置波特率、loopback 模式、紅外模式和硬/軟流控模式7 部分。在Linux 中,所有設備文件一般都位于“/dev”下,其中串口對應的設備為“/dev /ttySx”,在Linux 下對設備的操作方法與對文件的操作方法一樣。下面就是設計中串口應用的開(kāi)發(fā)步驟。
串口設置主要設置struct termios 結構體成員,具體的串口操作函數此處略去,串口操作流程如圖6 所示。

3.2 Linux 網(wǎng)絡(luò )套接字編程步驟
在Linux 中的網(wǎng)絡(luò )編程通過(guò)socket 接口進(jìn)行。socket 是一種特殊的IO 接口,也是一種文件描述符,它是一種常用的進(jìn)程之間的通信機制,通過(guò)它不僅能實(shí)現本地機器上進(jìn)程間的通信,而且通過(guò)網(wǎng)絡(luò )能夠在不同機器上的進(jìn)程間進(jìn)行通信。
嵌入式串口服務(wù)器系統網(wǎng)絡(luò )套接字編程步驟如圖7 所示。

系統上電后,嵌入式服務(wù)器進(jìn)入Linux 系統并自動(dòng)運行裝載在其內的server 程序。作為服務(wù)器, server 程序在開(kāi)始運行時(shí)就為每一個(gè)打開(kāi)的串口創(chuàng )建recvpcwritearm 和readarmsendpc 線(xiàn)程,并在網(wǎng)絡(luò )連接正常以及客戶(hù)端沒(méi)有執行關(guān)閉串口的操作時(shí),每一個(gè)已打開(kāi)串口對應的兩個(gè)線(xiàn)程將不會(huì )結束,這樣在系統滿(mǎn)負荷運行時(shí),系統將同時(shí)開(kāi)啟4 個(gè)線(xiàn)程。嵌入式串口服務(wù)器主程序流程如圖8 所示,主函數實(shí)現套接字的初始化工作,建立兩路監聽(tīng)套接字,分別初始化線(xiàn)程recvpcwritearmsocket[3000 + com]套接字和readarmsendpc socket[4000 + com]套接字com 為串行端口號。一旦接收到客戶(hù)端的連接請求,判斷客戶(hù)端請求的方式后,啟用相應的進(jìn)程函數進(jìn)行數據處理。

4 試驗
4.1 數據上行測試
數據上行測試指串口設備發(fā)送信息到嵌入式串口服務(wù)器,通過(guò)嵌入式串口服務(wù)器將數據從以太網(wǎng)口傳輸出去??紤]實(shí)際使用過(guò)程中上行數據量較大,為了模擬工業(yè)現場(chǎng)接收大量的數據,以“1234567890abcdefghijklmnopqrstuvwsyz”構成的數據包進(jìn)行模擬。
測試方法為每秒鐘連續不斷地發(fā)送“1234567890abcdefghijklmnopqrstuvwsyz”,使之構成100KByte 的數據包,觀(guān)察客戶(hù)端程序能否正常收到這個(gè)數據包。試驗測試結果如圖9 所示,當從“終端串口設備”向上位機發(fā)送100KByte 數據時(shí),在客戶(hù)端一側正常收到了這些數據,并且沒(méi)有丟失現象。

4.2 數據下行測試
數據下行測試指通過(guò)工控機上的以太網(wǎng)口發(fā)送數據給串口服務(wù)器,串口服務(wù)器接收以太網(wǎng)數據幀并進(jìn)行格式轉換,同時(shí)判斷發(fā)往指定的串口設備。在實(shí)際使用過(guò)程中,上位機發(fā)送到串行終端設備的數據量較小,這些數據一般都是由操作人員輸入的數據,因此可以用單個(gè)數據流“1234567890abcDefghijklmnopqrstuvwxyz”進(jìn)行測試。
測試方法是利用運行在PC 機上的客戶(hù)端程序每秒鐘發(fā)送連續數據流,觀(guān)察另一臺PC 機上串口調試助手是否正常接收到數據。試驗測試結果如圖10 所示,當客戶(hù)端程序發(fā)送數據時(shí),在終端串口設備上得到同樣的數據流。

5 結束語(yǔ)
筆者利用完全開(kāi)源的Linux 操作系統,將其移植、裁剪后設計嵌入式串口服務(wù)器系統,選用非常適用于通信產(chǎn)品中的ARM9 內核的S3C2440A 微處理器和DM9000AEP 芯片擴展了100MByte 自適應以太網(wǎng)口,完成了硬件平臺設計; 然后用多線(xiàn)程網(wǎng)絡(luò )套接字編寫(xiě)串口服務(wù)器程序,完成多串口服務(wù)器的軟件設計。最后用試驗證實(shí)了多串口服務(wù)器能夠很好地完成串口數據與以太網(wǎng)口數據的雙向傳輸,成功地將現有的串行通信設備接入以太網(wǎng),利用網(wǎng)絡(luò )實(shí)現數據的遠程傳輸與遠程監控功能,實(shí)時(shí)監控設備的運行狀態(tài)。降低了設備的維修費用,縮短了開(kāi)發(fā)周期。該產(chǎn)品基于開(kāi)放標準設計,易于升級與維護,具有廣闊的應用前景。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)linux相關(guān)文章:linux教程
tcp/ip相關(guān)文章:tcp/ip是什么
評論