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窗口,串口会继续充当调试端口,输出调试信息

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值