rt-thread stm32f407+lan8720 lwip應用

硬件資源:正點原子stm32f407 探索者開發板,板載Lan8720以太網芯片

操作系統:rt-thread 4.0.1

實驗目的:

1.實現ping功能,能夠ping通外網

2.實現Telnet功能,能夠使用類似於CRT這種工具進行遠程連接調試

 

步驟1:下載rt-thread 4.0.1源碼,可以到rtthread官網或者是github進行下載,這裏給出官網的百度網盤下載連接供下載。rt-thread官方百度網盤連接

步驟2:進入rt-thread-v4.0.1\rt-thread\bsp\stm32\stm32f407-atk-explorer文件夾,在該文件夾內打開env窗口

如下圖所示:

輸入menuconfig命令,進入參數配置頁面

步驟3:選擇使能以太網功能

選擇socket抽象層

選擇ping、ifconfig等特性

使能lwip協議棧,目前rt-thread中支持協議棧最新的版本爲2.1.0

然後去在線包選擇iot,主要選擇ping和telnet server

步驟4.保存,退出,回到命令行窗口。輸入命令pkg --update 等待更新包。

步驟5.使用命令scons --target=mdk5,重新構建工程,等待構建成功即可。

步驟6.打開工程文件,C:\Users\Administrator\Desktop\rt-thread-v4.0.1\rt-thread\bsp\stm32\stm32f407-atk-explorer\project.uvprojx,重新編譯一遍。

修改代碼,解決上述三個問題:

打開netdev.c文件,定位到代碼1025行,將該行代碼修改即可解決以上三個問題。

//原始代碼塊
FINSH_FUNCTION_EXPORT_ALIAS(netdev_ping, __cmd_ping, ping network host);
//更新後的
FINSH_FUNCTION_EXPORT_ALIAS(netdev_ping, __netdev_cmd_ping, ping network host);

步驟7:編譯沒有問題後,我們下載程序到板子上,串口輸出信息如下

但是網口的燈沒有亮,說明網卡部分還需要修改一下。打開工程看了才知道,網絡硬件的驅動都沒有加進來,我們需要自己把驅動添加進來

1.添加drv_eth.c/drv_eth.h文件,目錄爲:rt-thread-v4.0.1\rt-thread\bsp\stm32\libraries\HAL_Drivers

2.添加phy_reset.c文件,目錄爲rt-thread-v4.0.1\rt-thread\bsp\stm32\stm32f407-atk-explorer\board\ports

再次嘗試編譯,出現以下錯誤:

我們打開drv_eth.c發現上述變量沒有定義,但是在全局搜索的時候,發現它們都在drv_eth.h中定義,但是沒有打開宏開關,我們在rtconfig.h中增加宏開關#define PHY_USING_LAN8720A即可。重新編譯,出現以下問題

我們只需要在STM32_HAL文件夾增加stm32f4xx_hal_eth.c即可。正常編譯,通過。

步驟8:編譯沒有問題後,我們下載程序到板子上,串口輸出信息如下.同時,網口的燈也正常閃爍了,說明網絡硬件已經可以正常工作了。

步驟9:驗證ping、ifconfig、telnet等功能

1.驗證ping

2.驗證ifconfig

3.驗證telnet server功能

打開CRT軟件,新建會話窗口,選擇telnet,輸入ip和端口,填好之後,點擊確定,然後點擊連接該會話即可觀察到現象。

注意:調試信息只能輸出到一個端口,如果開啓了telnetserver後,調試信息只能輸出到遠程調試窗口了,不會再往串口輸出了。如果主動關閉telnet窗口,串口會繼續充當調試端口,輸出調試信息

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章