資源描述:
《lwip1.4.0移植筆記》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、(原創(chuàng)作品,轉(zhuǎn)載請(qǐng)說(shuō)明出處:http://blog.sina.com.cn/zhongwuq)在網(wǎng)上搜索了半天沒(méi)有關(guān)于lwip移植的相關(guān)教程,有的都是些零零碎碎的東西,后來(lái)通過(guò)自己的努力終于把lwip調(diào)通了,在此特地做成詳細(xì)的教程,供大家參考,只要按著我教程中描述的步驟走完,你也肯定會(huì)成功的!不要浮躁,靜下心來(lái),肯定能調(diào)出來(lái)的,大家還有什么問(wèn)題的話,可以在博客里面給我留言,我們一起討論。首先準(zhǔn)備兩個(gè)文件一個(gè)是ST官網(wǎng)提供的lwip1.3.1的例程,解壓出來(lái)的文件名是“STM32F107_ETH_LwIP_V1.0.
2、0”http://www.st.com/internet/com/SOFTWARE_RESOURCES/SW_COMPONENT/FIRMWARE/an3102.zip第二個(gè)是去lwip官網(wǎng)下載lwip1.4.0協(xié)議棧,解壓出來(lái)的文件名是“l(fā)wip‐1.4.0”http://mirror.yongbok.net/nongnu/lwip/lwip‐1.4.0.zip(以太網(wǎng)調(diào)試的時(shí)候會(huì)用到一個(gè)TCP&UDP調(diào)試工具,是周立功出的,當(dāng)然你也可以自己編個(gè)上位機(jī),在.NET下調(diào)用socket也是很簡(jiǎn)單的)移植的硬件平臺(tái)是金
3、牛開發(fā)板STM32F107VC。直接用官網(wǎng)下的lwip1.3.1的例程,是通不上的,得做一下改動(dòng):第一步關(guān)閉DHCP功能,在lwipopts.h文件中第108行#defineLWIP_DHCP1改為#defineLWIP_DHCP0第二步數(shù)據(jù)連接模式改為MII,在stm32f107.c文件中第30、31行修改//#defineMII_MODE/*MIImodeforSTM3210C‐EVALBoard(MB784)(checkjumperssetting)*/#defineRMII_MODE/*RMIImodefo
4、rSTM3210C‐EVALBoard(MB784)(checkjumperssetting)*/改為#defineMII_MODE/*MIImodeforSTM3210C‐EVALBoard(MB784)(checkjumperssetting)*///#defineRMII_MODE/*RMIImodeforSTM3210C‐EVALBoard(MB784)(checkjumperssetting)*/最后將你電腦上本地連接的IP地址和netconf.c文件中第119到121行的IP在同一網(wǎng)段就可以了。在調(diào)試工
5、具中建立客戶端連接IP:192.168.0.8端口號(hào):23然后點(diǎn)連接,如果連接成功的話,在數(shù)據(jù)接收窗口可以看到“Hello.Whatisyourname?”,恭喜你已經(jīng)修改成功了。^_^接下來(lái)移植最新版本的lwip1.4.0首先打開已經(jīng)解壓的lwip1.4.0文件夾,可以看到有三個(gè)子文件夾,第一個(gè)是說(shuō)明文檔doc,第二個(gè)是我們需要使用的內(nèi)核src,第三個(gè)是lwip官方提供的測(cè)試程序。這里我們只用到了src中的內(nèi)容。下面我們開始移植啦!?。〉谝徊?,建立工程所需的文件目錄,我們先參照ST官網(wǎng)提供的lwip1.3.1的例
6、程中的文件目錄結(jié)構(gòu),來(lái)建立我們的工程目錄,把ST提供的lwip1.3.1目錄下的port文件拷到lwip1.4.0目錄下,port里面包含了各種TCP/IP應(yīng)用層的設(shè)計(jì),我們可以直接拿來(lái)用咯,^_^。建好的工程目錄結(jié)構(gòu)如下圖所示,其實(shí)大部分是從ST的例程那里拷來(lái)的,^_^。第二步,建立工程,工程命名的時(shí)候要注意了不要在名字中包含“.”,否者你編譯好的axf,通過(guò)jlink在下載到芯片的時(shí)候會(huì)提示你出錯(cuò)的,當(dāng)初我就是把工程命名為lwip1.4.0,結(jié)果就出問(wèn)題了,還查了半天呢。。。把工程保存到RVMDK目錄下。把Ob
7、ject和List指向到指定文件這樣編譯完的時(shí)候不會(huì)顯得文件亂亂的。第三步,添加工程目錄樹形結(jié)構(gòu)。點(diǎn)擊綠紅白三個(gè)小方塊組成的按鈕,參照ST官網(wǎng)的例程添加相應(yīng)的目錄,如下圖所示ST官網(wǎng)的例程,在各個(gè)目錄中添加相應(yīng)的.c文件。添加User注意:User里面添加的內(nèi)容除了Projectsrc目錄中的所有內(nèi)容,其余的在port文件中,這里簡(jiǎn)單起見我只加了“helloworld.c”。在User里面還需要添加兩個(gè)特別的文件lwip‐1.4.0port下的ethernetif.clwip‐1.4.0srceti
8、f下的etharp.c添加STM32F10x_StdPeriph_Driver添加STM32_ETH_Driver添加LwIPlwip‐1.4.0srccore目錄下所有.c,lwip‐1.4.0srccoreipv4目錄下所有.c其它目錄下的先不要添加添加CMSIS添加RVMDK最后STM32_EVAL、efsl這兩個(gè)就不添加了這里我們不用那