新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 通用可靠的串口/以太網網關設計

        通用可靠的串口/以太網網關設計

        作者: 時間:2012-07-18 來源:網絡 收藏

        2. 1. 1 RT-Thread實時操作系統
        為實現,選用了實時操作系統RT-Thread。RT-Thread是一款國內的開源實時操作系統,并且商業許可證非常寬松,由國內一些專業開發人員開發、維護。RT-Thrcad不僅是一款高效、穩定的實時核心,也是一套面向嵌入式系統的軟件平臺,覆蓋了全搶占的實時操作系統內核小巧的文件系統、輕型的TCP/IP協議棧以及輕型的圖形用戶界面。

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

        h.JPG


        圖5是RT-Thread及外圍組件的基本框架圖。RT-Thread的使用范圍極為靈活,可以從資源極度緊張的小型系統到帶內存管理單元、網絡功能的基本計算單元。RT-Thread有著高度可配置、易裁減、可擴展性好和性高等特點,適用于嵌入式實時系統。
        2. 1.2 Mini2440開發板
        硬件平臺使用了Mini2440開發板,Mini2440是一款ARM9開發板,微處理器采用三星公司的S3C2440芯片,具有64 MB SDRAM、128 MB/256 MB/1 GB大小可選的NAND F1ash和2 MB NOR Flash,外設包括1個100MRJ-45口(采用DM9000網卡)和3個等。
        2.2 實現
        2. 2.1 軟件相關
        如圖2所示,系統使用了3個線程:接收線程、Socket發送線程和Socket接收線程,下面對這3個線程作具體介紹:
        接收線程。以阻塞的方式接收“UART_RX_IRQ_EVENT”事件,接收到此事件后,從串口環形接收緩沖中解析串口幀,當有數據幀需要向發送時,便將該數據幀的首地址以郵件的方式給Socket發送線程。而在RT_Thread中,郵件的存儲方式本質是雙向循環隊列。
        ②Socket發送線程。以阻塞的方式接收來自串口接收線程的指針郵件,接收到此類郵件后,Socket發送線程將指針指向的數據封裝成Socket幀發送。
        ③Socket接收線程。用于從接收數據,并緩存解析數據幀,調用串口發送接口函數,將收到的數據幀封裝成串口幀并插入串口發送隊列。
        串口收/發工作于中斷方式,可以連續發送串口發送隊列中緩存的待發送幀和從串口接收字節數據并寫入串口的環形接收緩存。在接收到等于EFD的字節時,向串口接收線程發送一個“UART_RX_IRQ_EVENT”事件,通知串口接收線程環形緩存中可能存在一個完整的幀。
        串口幀發送完畢后等待確認幀的時間計時使用了RT-Thrcad提供的定時器,并且在定時器的超時函數中處理幀重發問題。
        在軟件實現過程中遇到了一個問題:在RT-Thread操作系統的中斷程序中不能申請和釋放動態內存,而串口中斷發送程序往發送完一個幀后,如果該幀是確認幀或非確認幀但達到了最大發送次數,那么需要從待發送隊列刪除該幀并釋放對應的動態內存。這就存在矛盾,系統小能提供中斷程序釋放內存的功能,但實際應用又需要此功能。
        為此,程序中專門設置了一個刪除隊列,當中斷程序需要釋放發送幀時,將對應幀插入刪除隊列,并向串口接收線程發送一個刪除事件“UART_TX_DEL_EVENT”,在串口接收線程中接收到此事件后再來釋放隊列中的幀,這就避免了在串口發送中斷程序中直接釋放動態內存。
        2.2.2 硬件相關
        在硬件方面,為提高串口通信的性,也做了相應處理。
        S3C2440微處理器的串口具有兩種工作模式:非FIFO模式和FIFO模式。在FIFO模式中,串口發送和接收分別具有64字節的硬件FIFO緩沖,使用硬件緩沖,能顯著地減少串口發送和接收中斷產生的次數,進而減小止常程序被中斷的頻率,提高系統性能。并且使用接收FIFO后,在處理器不能及時跳轉到串口接收中斷程序的情況下,由于硬件FIFO的存在,使得串口數據丟失的可能性減小。所以,中S3C2440微處理器的串口使用了FIFO模式。
        另外,S3C2440微處理器的串口還具有硬件自動流控制功能,當與網關相連的串口設備也具有硬件自動流控制功能時,開啟此功能。在開啟此功能的情況下,當通信的某一端不能及時讀取接收緩沖中的數據時,硬件自動流控制能自動暫停另一端串口的數據發送,以防止數據的丟失。
        在網關的軟件實現中,確認機制的開關、確認超時時間、重發次數、隊列容量、緩沖的大小、串口的FIFO設置和硬件流控制的開關等都是可配置的,針塒不同的應用可以非常容易地做出合適的裁剪和設置。

        結語
        目前該網關被用于一個無線體溫監測項目,以連接本地無線傳感網絡和遠程數據庫服務器,實現本地設備對遠程數據庫服務器的訪問,通過實際運行實驗,網關能很好地實現本文講述的功能。當然,網關仍然有不盡完善之處,比如對有些公共資源的訪問沒有提供競爭保護機制,可能會影響網關運行的穩定性和性,有待今后進一步完善。

        tcp/ip相關文章:tcp/ip是什么



        上一頁 1 2 3 4 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 济宁市| 牟定县| 河曲县| 东乡| 峨眉山市| 哈尔滨市| 昂仁县| 裕民县| 明光市| 思茅市| 玉溪市| 巫山县| 延长县| 科尔| 柞水县| 东乡族自治县| 潮州市| 邵阳市| 南靖县| 北宁市| 南皮县| 民乐县| 长武县| 兴化市| 延长县| 北宁市| 平利县| 噶尔县| 高淳县| 嵩明县| 化隆| 杭锦后旗| 会泽县| 和政县| 泗阳县| 鸡东县| 综艺| 临汾市| 左云县| 讷河市| 中阳县|