新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于單片機的嵌入式系統網絡設計方案

        基于單片機的嵌入式系統網絡設計方案

        作者: 時間:2013-01-22 來源:網絡 收藏

        系統主應用程序的實現

          系統初始化后,進入主程序循環的兩部分:一是對接收到的以太網數據幀進行解包,供應用程序使用,一是對發送的數據進行封裝并發送,使采用TCP/IP協議的以太網內的所有計算機都能收到此數據幀。圖2是系統的主應用程序的流程圖。

        系統的主應用程序的流程圖

          圖2 系統的主應用程序的流程圖

          實現TCP/IP協議的難點

          51的程序空間、可用的內存RAM、運算速度、指令集等原因,在UNIX或Windows上實現的TCP/IP協議的源代碼并不能夠直接移植到8位的上。在51單片機上編寫代碼會受許多限制,特別是實現TCP/IP協議這樣關系復雜的程序,我們必須根據實際情況盡可能挖掘51單片機的性能。綜合來說,單片機實現與UNIX實現TCP/IP有如下區別:

          (1)操作系統:Windows或UNIX都是多任務操作系統,這使得代碼編寫簡單化,在單片機只能是單任務系統,代碼結構為順序執行+硬件中斷的方式,無法并發執行。

         ?。?)內存分配:Windows或UNIX的內存分配是動態的。而一般單片機只有外接的一塊32K字節的RAM,并同時被各個協議使用。一個最大的以太網數據包有1.5K字節,分配一包的緩沖區就要1.5K字節。為此,我們分配一個256×6=1536個字節的固定的RAM來存放收到的以太網數據包。收到一包就處理一包。

         ?。?)指針:在PC里所有程序都必須先放在RAM里才能運行,所以它的指針都指向RAM.而單片機的結構和PC的結構有很大差別,指針類型很多,各指針運算的速度也不一樣,特別是“一般指針”運算很慢,還會占用很多程序空間。UNIX實現TCP/IP的源代碼中,用得最多的就是指針,而在單片機里一般要求少用指針,或使用特定類型的指針。對使用UNIX的源代碼需要作很多的改動。

         ?。?)參數傳遞:在UNIX實現的TCP/IP源代碼中,一般有很多的參數傳遞,而在單片機里允許傳遞的參數是有限的(因為受到內部RAM的限制),同時參數傳遞的過程要浪費程序代碼空間,也降低單片機執行速度。所以在單片機的實現里,一般不要做太多的參數傳遞,而多使用公共的全局變量來實現調用的過程。

          (5)硬件接口:在UNIX或Windows里,對網卡驅動無一例外都是采用中斷方式,因為PC的處理速度快,一次中斷的處理時間也很短,不會影響系統內的其它中斷。而在單片機的應用中,大部分的方案都是查詢式的。PC的NE2000的網卡,一般都是用16位DMA的方式,而在單片機里卻只能用8位DMA方式。這也使UNIX對網卡驅動的代碼不能直接移植。

          結語

          本文設計的嵌入式網絡接入方案,采用廉價的8位51單片機實現了簡化TCP協議和UDP協議,并支持主動和被動連接、跨越網關,實現互聯網接入,在被控設備與上位控制機之間提供了一條透明的傳輸通道,用戶不需對原有串口設備或其他數字設備做任何修改,就可享受到網絡的好處。目前,本文的系統已被成功使用在網絡化的數據采集器中。

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



        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 玉山县| 广平县| 定州市| 同德县| 石首市| 武强县| 阜新市| 肥东县| 友谊县| 怀远县| 津南区| 墨竹工卡县| 手游| 翁牛特旗| 天柱县| 内江市| 武安市| 峨眉山市| 资溪县| 基隆市| 乐安县| SHOW| 新巴尔虎右旗| 夏河县| 包头市| 大悟县| 册亨县| 大关县| 琼结县| 镶黄旗| 平定县| 阿拉善左旗| 灵璧县| 讷河市| 柳河县| 黔东| 璧山县| 潢川县| 台北市| 合川市| 安吉县|