STM32移植LWIP


在上篇文章《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網絡開發


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM