新聞中心

        EEPW首頁 > 電源與新能源 > 設計應用 > STM32F207和DM9161A的以太網實現方案

        STM32F207和DM9161A的以太網實現方案

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


        2 軟件的實現
        此部分的主要工作是在硬件平臺的基礎上實現TCP/IP協議棧,由于TCP/IP協議棧較復雜,功能實現比較困難,一般選擇成熟的TCP/ IP協議棧進行移植,此次選擇開源并且較成熟的LwIP協議棧。
        LwIP(Light Weight IP)是瑞士計算機科學院開發的一套用于嵌入式系統的開放源代碼TCP/IP協議棧,可移植性強,對資源要求較低,在實現TCP/IP協議主要功能的基礎上減少對RAM的占用。一般它只需要幾百KB的RAM和40 KB左右的ROM就可以運行,這使得棧適合在低端的嵌入式系統中使用。
        移植工作在ST公司提供的STM32F207接口驅動的基礎上進行,針對DM9161A芯片更改部分底層驅動代碼,包括時鐘配置、端口配置及PHY地址配置等,移植工作一般需要幾個小時即可完成。
        LwIP提供了在TCP/IP協議棧中比較常用的TCP及UDP兩種功能。TCP是一種面向連接(連接導向)的、可靠的、基于字節流的運輸層(transp ort layer)通信協議;UDP是OSI參考模型中一種無連接的傳輸層協議,提供面向事務的簡單不可靠信息傳送服務。TCP一般用于對數據可靠性要求較高,但是數據傳輸速度較低的情況。而UDP的傳輸速度較快,但是可靠性較低,需要應用層保證數據到達的有效性,而在此應用中需要傳輸的數據量較小,但是對可靠性要求較高,因此選擇TCP通信模式。
        LwIP提供了兩套API:底層的基于回調(callback)的raw API和高層的順序模型的API(類似BSD Socket)。
        順序模型的API為普通的順序程序提供使用協議棧的API,和BSD風格的API很相似,也是基于阻塞的open-read-write-close模式。鑒于TCP/IP協議棧本身就基于時間,所以TCP/IP代碼和應用程序的代碼必須在不同的線程中,因此此種模式需要提供操作系統的支持。
        而raw API可以讓應用程序和TCP/IP協議棧代碼結合得更緊密。程序的執行也是基于事件的,使用回調函數的機制。這種方式TCP/IP代碼和應用代碼運行在同一個線程中,因此這種模式可以在沒有操作系統支持的情況下使用。
        實際上,順序模型的API也是基于raw API實現的。此次實現使用的是raw API,降低對硬件及軟件資源的需求,而raw API是基于事件驅動的,在數據的響應速度上也存在一定的優勢。
        raw API的操作方法與順序模型基本類似,只是程序的運行模式不一樣,需要采用回調式的編程思想?;緞幼靼ń⑦B接、發送數據、接收數據、關閉連接4類,每一類根據不同的需求提供了不同的接口函數。

        結語
        經過測試,在STM32F207處理器及DM9161A硬件平臺上移植棧可以實現TCP、UDP等功能并穩定地運行,為后續基于此平臺開發的通信網絡提供良好的基礎。

        本文引用地址:http://www.104case.com/article/175924.htm
        晶振相關文章:晶振原理

        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 恩施市| 青海省| 蒙山县| 班玛县| 通江县| 忻州市| 普宁市| 柳河县| 会同县| 碌曲县| 平安县| 达尔| 宝丰县| 奇台县| 鄯善县| 杭锦旗| 章丘市| 平舆县| 监利县| 安吉县| 义乌市| 晋州市| 通江县| 海宁市| 南和县| 张家口市| 蒙山县| 北安市| 清新县| 东乌珠穆沁旗| 淮阳县| 香港 | 延津县| 榕江县| 南丰县| 易门县| 巩留县| 曲麻莱县| 沈阳市| 绍兴县| 邳州市|