LWIP总结
介紹
????Lwip,light weight IP;是由Adam Dunkels 開發(fā)的一個(gè)小型開源的TCP/IP協(xié)議棧;目前已經(jīng)為全球共同開發(fā)的開源協(xié)議;支持TCPIP協(xié)議族的核心協(xié)議;包括:ARP/ICMP/TCP/UDP/IPV4/IPV6/DHCP等;其核心特點(diǎn)是:功能齊全、運(yùn)行需求的RAM和ROM少;
編程模型
????所有的功能和性能都可進(jìn)行裁剪和配置;相關(guān)文件為:lwipopts.h
????內(nèi)部實(shí)現(xiàn)支持帶操作系統(tǒng)和不帶操作系統(tǒng);核心框架是:外部單線程驅(qū)動(dòng)協(xié)議棧狀態(tài)機(jī);底層使用中斷進(jìn)行數(shù)據(jù)的接收;
????其提供三種API :1)RAW API 2)lwip API 3)BSD API。其中BSD API就是大家最熟悉的socket API了。Linux和Windows平臺(tái)中的socket接口都與此大同小異;
移植
將lwip移植到不同的平臺(tái)主要包括兩個(gè)部分工作:
平臺(tái)
????硬件:STM32F107 PHY芯片:DM9161AEP
????軟件:UCOS-ii????
移植核心點(diǎn)
????ST公司針對(duì)STM32F107 不帶操作系統(tǒng)版本的LWIP移植版本,文件名為STM32F107_ETH_LwIP,版本為V1.0.0;由于其版本不再更新且與本軟件平臺(tái)不一致,所以不做參考;
????由于STM32F1 STM32F2 STM32F4的以太網(wǎng)驅(qū)動(dòng)都是一致的。所以到ST官網(wǎng)下載stm32cubdf2。其中有LWIP針對(duì)FREERTOS的移植;而FREERTOS與UCOS大同小異;所以只要針對(duì)其修改應(yīng)用層框架移植的實(shí)現(xiàn)即可;相關(guān)代碼位于:stm32cubef2\STM32Cube_FW_F2_V1.1.0\Projects\STM322xG_EVAL\Applications\LwIP\LwIP_UDPTCP_Echo_Server_Netconn_RTOS;
????LWIP的代碼使用1.4.1版本,可到LWIP官網(wǎng)上下載;也包含在stm32cubef2中;
????移植的理論基礎(chǔ)來(lái)源于lwip 1.4.1源碼包中doc文件夾中的文件;同時(shí)官方也有移植到各個(gè)平臺(tái)中的示例,文件為:contrib-1.4.1.zip,到官網(wǎng)上下載即可;
? ? ? ? ? ? ? ? ? ? ? ? 需要修改的文件為:
? ? ? ? ? ?app_ethernet.c/h
? ? ? ? ? ?ethernetif.c/h
? ? ? ? ? ?同時(shí)需要將stm32cubef2驅(qū)動(dòng)庫(kù)中的stm32f2xx_hal_eth.c/h拷貝過(guò)來(lái);
? ? ? ? ? ?以上文件只需要配置好,保證編譯沒問(wèn)題,則MAC+PHY層移植完成;
? ? ? ?2. 應(yīng)用層框架移植:
? ? ? ? ? ? ? ? ? ? ? 修改1個(gè)文件sys_arch.c,位于stm32cubef2\STM32Cube_FW_F2_V1.1.0\Middlewares\Third_Party\LwIP\system;
????所有的移植即完成;
注意點(diǎn)
????STM32Cube_FW_F2_V1.1.0此版本中關(guān)于lwip的驅(qū)動(dòng)MAC代碼是有bug的,具體表現(xiàn)在當(dāng)以太網(wǎng)包數(shù)量加大時(shí),會(huì)出現(xiàn)底層收數(shù)據(jù)很慢的情況;使用PING命令經(jīng)常出現(xiàn)TIMEOUT;
此bug在STM32cubeF4中得到解決;相關(guān)問(wèn)題原因描述見參考資料;
?
參考資料
http://www.stmcu.org/module/forum/thread-588339-1-1.html
? ? ? ? ?<<lwIP?TCP/IP?stack?demonstration for?STM32F107xx?connectivity?line?microcontrollers >> By ST
? ? ?3. ?lwip官方網(wǎng)站https://savannah.nongnu.org/projects/lwip/
轉(zhuǎn)載于:https://www.cnblogs.com/wilyas/p/5303019.html
總結(jié)
- 上一篇: p中div -- a中a
- 下一篇: C_C++指针指针应用详解