基于A(yíng)RM7的串口服務(wù)器的實(shí)現
接收主線(xiàn)除初始化以太網(wǎng)外, 需調用鏈路層初始化函數(3) , ( 3)中調用( 4)初始化RTL8019。
收到的數據先經(jīng)過(guò)函數(8) , 然后通過(guò)信號量傳送到函數(6) , 由( 6)調用( 7)得到數據個(gè)數, 最后由(5)根據以太網(wǎng)幀頭攜帶的上層協(xié)議類(lèi)型判斷是交給IP協(xié)議還是ARP協(xié)議處理。
移植完畢, 進(jìn)行數據收發(fā)實(shí)驗驗證。使用TCP傳輸協(xié)議, 由網(wǎng)口虛擬串口軟件VSPM通過(guò)串口調試工具收發(fā)數據, 圖4是以10 ms的發(fā)送速度在自發(fā)自收程序中收發(fā)數據的截圖。

圖4 TCP協(xié)議數據傳輸界面
由于COM1和COM2被PC機占用, 故由網(wǎng)口虛擬出來(lái)的串口是COM3, 由圖4可看出在面向連接的TCP協(xié)議下, 高速收發(fā)數據不會(huì )丟包。
2.2 實(shí)時(shí)多任務(wù)方案的設計
16個(gè)串口分別與網(wǎng)絡(luò )端口組成16 個(gè)雙向通道。為使代碼靈活、透明, 程序不使用LW IP提供的SOCKET AP I。應用程序把每個(gè)雙向通道分為發(fā)送, 接收, 串口3個(gè)任務(wù), 加上LW IP本身需占用一個(gè)任務(wù), 共需建立49個(gè)任務(wù)。μC /OS - Ⅱ最多能建立64 個(gè)任務(wù), 其中8 個(gè)操作系統本身占用,剩56個(gè)能滿(mǎn)足要求。由VSPM軟件把網(wǎng)口模擬成16個(gè)串口, 串口服務(wù)器偵聽(tīng)的16 個(gè)端口分別是1 000~1 015, 如圖5所示。

圖5 網(wǎng)口虛擬擴展16個(gè)串口界面
網(wǎng)絡(luò )端和串口端的數據接收會(huì )觸發(fā)相應的中斷。每個(gè)雙向通道的3個(gè)任務(wù)各司其職, 網(wǎng)口端接收數據中斷后在傳輸層協(xié)議判斷信源的端口號,交給相應的接收任務(wù), 處理完后交給串口任務(wù)把數據從相應串口發(fā)送; 串口接收數據后在中斷程序中判斷信源的通道號, 把數據交給串口任務(wù),處理完后由發(fā)送任務(wù)通過(guò)網(wǎng)口把數據發(fā)送出去。
服務(wù)器支持TCP /UDP兩種傳輸協(xié)議, 下面給出一個(gè)通道的TCP傳輸流程圖, UDP部分代碼只需在相應任務(wù)中調用LW IP給的UDP函數。TCP模式下串口服務(wù)器工作在Server模式, PC機工作在Client模式, 流程圖, 如圖6所示。

圖6串口服務(wù)器單通道程序流程圖
3.結論
文中本服務(wù)器是以性能不及ARM9且不能使用L inux的ARM7為主控芯片, 但兩種開(kāi)源代碼μC /OS - Ⅱ實(shí)時(shí)操作系統和LW IP協(xié)議棧的有效結合避免了高額的軟件費用, 而且能滿(mǎn)足通信要求。實(shí)驗證明, 基于LW IP和μC /OS - Ⅱ的串口服務(wù)器不僅能實(shí)現雙向通信,而且傳輸數據實(shí)時(shí)、準確, 符合工業(yè)應用的要求。
評論