在上篇文章《LWIP初體驗-修改ST官方demo》中我們已經在自己的開發板上實作了簡單的TCPsever和TCPclient功能,驗證完了硬體,接下來的作業就是優化代碼,添加應用程式,
有些同學想學習一下,如果下載LWIP的代碼,然后移植到自己的代碼中,下面我們聊聊移植問題,
我們需要的基礎工程是已經實作了10ms定時,led燈1s閃爍,實作了串口列印工程,還需要一份LWIP1.4.1的原始碼,需要STM32F2系列的以太網驅動,
移植前和移植后原始碼資料,還有LWIP的原始碼下載鏈接
鏈接:https://pan.baidu.com/s/1u-QZye_HB1PAiBOykFlNqQ
提取碼:4hiw
01、IAR工程移植
首先是IAR工程的移植操作,
添加以太網驅動庫,注意,以太網驅動庫并不在標準外設庫中,需要大家自行到網上或ST官網下載,

?
把以太網驅動庫添加進工程

?
增加新庫的頭檔案路徑

?
將LWIP原始碼放入目錄中,我的個人習慣放到了Third_Party檔案夾中,屬于第三方庫,以后用到其他類似FATFS這樣的第三方庫,都會放入次檔案夾內,

?
我們把stm32f2x7_eth_conf_template.h檔案剪切到檔案夾中,并重命名為stm32f2x7_eth_conf.h

?
修改檔案名稱

?
當然新加的頭檔案,要添加新的頭檔案路徑,

?
注意:這個檔案是只讀檔案,要把對勾去掉,不然的話在IDE中無法修改代碼,

?
添加以太網RTL8201EL的驅動程式
我們首先拷貝官方歷程驅動,這部分主要是硬體層的初始化,在《LWIP初體驗-修改ST官方demo》中,我們已經修改完代碼,直接拷貝過來就行,

?
放入對應的位置

?
然后把BSP硬體驅動添加進入工程

?
添加lwip源代碼,直接按照LWIP原始碼目錄結構添加即可,不用全部添加,按下圖所示介面

?
添加API相關檔案

?
添加Netif相關檔案

?
添加IPV4相關檔案

?
當然,還要添加頭檔案路徑,這是必不可少的

?
添加中間檔案

?
添加lwipopts.h

?
編譯出錯

?
這些檔案主要是官方開發板的lcd相關檔案,把他們屏蔽掉

?
再編譯,出新的錯誤,再次屏蔽這些現實部分的代碼,

?
修改之后,編譯沒有問題

?
復制驅動,直接使用官方demo的檔案,

?
拷貝ethernetif.c檔案

?
拷貝lwipopts.h檔案,

?
把原來的檔案洗掉掉

?
重新添加我們新添加的檔案(注意解除只讀屬性)
修改檔案

?
新建lwip_app.c和lwip_app.h檔案

?
添加LwIP_Init函式介面,

?
增加LwIP_Pkt_Handle函式,

?
定義一下宏

?
包頭檔案包含一下

?
修改函式

?
修改主函式

?
使用PC端ping一下開發板的IP

?
移植成功,可以正常回應ping,
這只是個簡單的移植,就是個流水賬,想看具體修改內容的,可以到文章開頭下載工程代碼,對比修改前和修改后的區別,網路部分有很多知識,想深入了解,還需要自己多看看代碼,
02、修改Keil工程
添加檔案,這些基本和IAR一樣,

?
添加頭檔案路徑

?
編譯代碼,有1個錯誤

?
在timers.c添加

?
代碼如下
#if defined (__CC_ARM) /*!< ARM Compiler */
u32_tsys_now(void){}
#endif
????編譯下載,發現ping會死機修改代碼優化等級就好了

?
測驗成功

?
總結:這是一篇流水賬的移植記錄,深入了解LWIP網路開發,還是要動手自己移植,多多研究原始碼,
點擊查看本文所在的專輯,STM32F207網路開發
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/279158.html
標籤:嵌入式
