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窗口

如下图所示:

rt-thread stm32f407+lan8720 lwip应用_第1张图片

输入menuconfig命令,进入参数配置页面

rt-thread stm32f407+lan8720 lwip应用_第2张图片

rt-thread stm32f407+lan8720 lwip应用_第3张图片

步骤3:选择使能以太网功能

rt-thread stm32f407+lan8720 lwip应用_第4张图片

选择socket抽象层

rt-thread stm32f407+lan8720 lwip应用_第5张图片

选择ping、ifconfig等特性

rt-thread stm32f407+lan8720 lwip应用_第6张图片

使能lwip协议栈,目前rt-thread中支持协议栈最新的版本为2.1.0

rt-thread stm32f407+lan8720 lwip应用_第7张图片

然后去在线包选择iot,主要选择ping和telnet server

rt-thread stm32f407+lan8720 lwip应用_第8张图片

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

rt-thread stm32f407+lan8720 lwip应用_第9张图片

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

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

rt-thread stm32f407+lan8720 lwip应用_第10张图片

修改代码,解决上述三个问题:

打开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:编译没有问题后,我们下载程序到板子上,串口输出信息如下

rt-thread stm32f407+lan8720 lwip应用_第11张图片

但是网口的灯没有亮,说明网卡部分还需要修改一下。打开工程看了才知道,网络硬件的驱动都没有加进来,我们需要自己把驱动添加进来

rt-thread stm32f407+lan8720 lwip应用_第12张图片rt-thread stm32f407+lan8720 lwip应用_第13张图片

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

再次尝试编译,出现以下错误:

rt-thread stm32f407+lan8720 lwip应用_第14张图片

我们打开drv_eth.c发现上述变量没有定义,但是在全局搜索的时候,发现它们都在drv_eth.h中定义,但是没有打开宏开关,我们在rtconfig.h中增加宏开关#define PHY_USING_LAN8720A即可。重新编译,出现以下问题

rt-thread stm32f407+lan8720 lwip应用_第15张图片

我们只需要在STM32_HAL文件夹增加stm32f4xx_hal_eth.c即可。正常编译,通过。

rt-thread stm32f407+lan8720 lwip应用_第16张图片rt-thread stm32f407+lan8720 lwip应用_第17张图片

步骤8:编译没有问题后,我们下载程序到板子上,串口输出信息如下.同时,网口的灯也正常闪烁了,说明网络硬件已经可以正常工作了。

rt-thread stm32f407+lan8720 lwip应用_第18张图片

步骤9:验证ping、ifconfig、telnet等功能

1.验证ping

rt-thread stm32f407+lan8720 lwip应用_第19张图片

2.验证ifconfig

rt-thread stm32f407+lan8720 lwip应用_第20张图片

3.验证telnet server功能

rt-thread stm32f407+lan8720 lwip应用_第21张图片

打开CRT软件,新建会话窗口,选择telnet,输入ip和端口,填好之后,点击确定,然后点击连接该会话即可观察到现象。

rt-thread stm32f407+lan8720 lwip应用_第22张图片

rt-thread stm32f407+lan8720 lwip应用_第23张图片

注意:调试信息只能输出到一个端口,如果开启了telnetserver后,调试信息只能输出到远程调试窗口了,不会再往串口输出了。如果主动关闭telnet窗口,串口会继续充当调试端口,输出调试信息

rt-thread stm32f407+lan8720 lwip应用_第24张图片

你可能感兴趣的:(Lwip学习)