新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于ARM7的串口服務器的實現

        基于ARM7的串口服務器的實現

        作者: 時間:2011-08-29 來源:網絡 收藏
        發送主線首先是以太網初始化函數( 1)開始,調用鏈路層發送函數(2)并增加各層協議頭, 再調用RTL8019發送函數(9)發送數據。

        本文引用地址:http://www.104case.com/article/150276.htm

          接收主線除初始化以太網外, 需調用鏈路層初始化函數(3) , ( 3)中調用( 4)初始化RTL8019。

          收到的數據先經過函數(8) , 然后通過信號量傳送到函數(6) , 由( 6)調用( 7)得到數據個數, 最后由(5)根據以太網幀頭攜帶的上層協議類型判斷是交給IP協議還是ARP協議處理。

          移植完畢, 進行數據收發實驗驗證。使用TCP傳輸協議, 由網口虛擬軟件VSPM通過調試工具收發數據, 圖4是以10 ms的發送速度在自發自收程序中收發數據的截圖。

          

        圖4 TCP協議數據傳輸界面

          圖4 TCP協議數據傳輸界面

          由于COM1和COM2被PC機占用, 故由網口虛擬出來的是COM3, 由圖4可看出在面向連接的TCP協議下, 高速收發數據不會丟包。

          2.2 實時多任務方案的設計

          16個串口分別與網絡端口組成16 個雙向通道。為使代碼靈活、透明, 程序不使用LW IP提供的SOCKET AP I。應用程序把每個雙向通道分為發送, 接收, 串口3個任務, 加上LW IP本身需占用一個任務, 共需建立49個任務。μC /OS - Ⅱ最多能建立64 個任務, 其中8 個操作系統本身占用,剩56個能滿足要求。由VSPM軟件把網口模擬成16個串口, 串口偵聽的16 個端口分別是1 000~1 015, 如圖5所示。

          

        圖5 網口虛擬擴展16個串口界面

          圖5 網口虛擬擴展16個串口界面

          網絡端和串口端的數據接收會觸發相應的中斷。每個雙向通道的3個任務各司其職, 網口端接收數據中斷后在傳輸層協議判斷信源的端口號,交給相應的接收任務, 處理完后交給串口任務把數據從相應串口發送; 串口接收數據后在中斷程序中判斷信源的通道號, 把數據交給串口任務,處理完后由發送任務通過網口把數據發送出去。

          支持TCP /UDP兩種傳輸協議, 下面給出一個通道的TCP傳輸流程圖, UDP部分代碼只需在相應任務中調用LW IP給的UDP函數。TCP模式下串口工作在Server模式, PC機工作在Client模式, 流程圖, 如圖6所示。

          

        圖6串口服務器單通道程序流程圖

          圖6串口服務器單通道程序流程圖

          3.結論

          文中本服務器是以性能不及ARM9且不能使用L inux的為主控芯片, 但兩種開源代碼μC /OS - Ⅱ實時操作系統和LW IP協議棧的有效結合避免了高額的軟件費用, 而且能滿足通信要求。實驗證明, LW IP和μC /OS - Ⅱ的串口服務器不僅能雙向通信,而且傳輸數據實時、準確, 符合工業應用的要求。

          


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 保亭| 舒城县| 郧西县| 凭祥市| 乌拉特后旗| 和田县| 无锡市| 休宁县| 珲春市| 大石桥市| 西乌珠穆沁旗| 新宁县| 通城县| 香河县| 天峻县| 江山市| 台北市| 苍山县| 左权县| 九龙坡区| 赤壁市| 大名县| 海口市| 乌恰县| 闽清县| 韶山市| 斗六市| 宁晋县| 灵璧县| 威海市| 鹤峰县| 阳朔县| 林芝县| 奈曼旗| 宁海县| 南平市| 德清县| 石林| 吴忠市| 县级市| 重庆市|