在上篇文章《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添加
代碼如下
編譯下載,發現ping會死機
修改代碼優化等級就好了
測試成功
總結:這是一篇流水賬的移植記錄,深入了解LWIP網絡開發,還是要動手自己移植,多多研究源碼。
點擊查看本文所在的專輯,STM32F207網絡開發