STM32
直播中

微风挽雨

9年用户 927经验值
擅长:可编程逻辑 电源/新能源 嵌入式技术
私信 关注
[问答]

怎样去设计一种基于stm32f407和Lan8720的rt-thread操作系统

rt-thread操作系统有哪些功能?
怎样去设计一种基于STM32f407和Lan8720的rt-thread操作系统?

回帖(1)

齐镭

2021-10-26 11:15:37
  硬件资源:正点原子stm32f407 探索者开发板,板载Lan8720以太网芯片
  操作系统:rt-thread 4.0.1
  实验目的:
  1.实现ping功能,能够ping通外网
  2.实现Telnet功能,能够使用类似于CRT这种工具进行远程连接调试
  步骤1:下载rt-thread 4.0.1源码,可以到rtthread官网或者是github进行下载,这里给出官网的百度网盘下载连接供下载。
  步骤2:进入rt-thread-v4.0.1rt-threadbspstm32stm32f407-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:UsersAdministratorDesktoprt-thread-v4.0.1rt-threadbspstm32stm32f407-atk-explorerproject.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.1rt-threadbspstm32librariesHAL_Drivers
  2.添加phy_reset.c文件,目录为rt-thread-v4.0.1rt-threadbspstm32stm32f407-atk-explorerboardports
  再次尝试编译,出现以下错误:
  
  我们打开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窗口,串口会继续充当调试端口,输出调试信息
  
举报

更多回帖

发帖
×
20
完善资料,
赚取积分