APM32F4在RT-Thread系统上使用LwIP网络功能—基于RT-Thread Studio环境

本文详细介绍了如何在RT-Thread Studio环境下,将LwIP网络协议栈移植到APM32F4微控制器上,包括创建项目、配置网络组件、解决串口问题、编写网络驱动、配置MAC/IP、验证网络功能以及使用TCP客户端和服务器示例。过程中涉及串口配置、GPIO设置、PHY芯片复位、网络接口初始化等多个关键步骤。

APM32F4在RT-Thread系统上使用LwIP网络功能—基于RT-Thread Studio环境

RT-Thread Studio 是RTT官方的一款集成开发环境,可以很方便的进行RT-Thread实时系统的程序开发,而且对应RT-Thread系统常用的组件可以进行图形化配置,非常的方便。

RT-Thread Studio可以访问官网 RT-Thread Studio 下载地址,在官网下载最新的 RT-Thread Studio 软件安装包。

下面基于 RT-Thread Studio ,把 LwIP 网络协议栈和RT-Thread系统移植到 APM32F4 上运行。

1. 创建APM32F4的工程项目

1、首先点击新建RT-Thread项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4IecIpKB-1666625339065)(../picture/image-20221024215344825.png)]

2、然后选择下面的配置,如果你的RTT Studio还没有APM32F4的软件包的话,选择添加更多资源,然后找到geehy厂商的软件包,然后安装即可。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2RXdM7Pf-1666625339066)(../picture/image-20221024215616541.png)]

上面的一些配置可以看自己板子的实际情况进行选择,比如可以选择其他串口作为控制台,或者选择其他调试模式等等。最后点击完成即可。

2. 编译下载生成的基本工程项目

点击完成之后,就可以在左边的资源管理器看到生成的项目文件了,如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OsIxDd0r-1666625339066)(../picture/image-20221024220110372.png)]

我们可以点击编译,可以看到编译完成没有任何警告和错误。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IuQh8Rdu-1666625339066)(../picture/image-20221024220158710.png)]

这个时候,是可以把程序下载到我们的板子上运行的。下载程序后,打开串口终端软件,可以看到RT-Thread打印的信息,如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X1dhm9Hd-1666625339066)(../picture/image-20221024220405063.png)]

其中,程序会不断打印 Hello … 字符串,这是因为Main函数里面输出的打印,如果觉得占用了控制台可以把该语句屏蔽。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AEBlHDKE-1666625339067)(../picture/image-20221024220542166.png)]

3. 解决shell不能输入字符bug

这时,我们在串口终端发现,shell不能接收字符输入。这是一个bug,原因就是串口的GPIO配置有问题,我们把下面文件函数修改一下即可:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fxvslNXH-1666625339067)(../picture/image-20221024220918532.png)]

修改完之后,在重新编译下载,shell就可以正常输入字符、命令了,如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g8OXUoKT-1666625339067)(../picture/image-20221024221109120.png)]

4. 使能网络接口设备和LwIP

双击打开配置文件 RT-Thread Settings , 然后找到组件这里,使能网络接口设备和LwIP堆栈。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DBAmjr95-1666625339068)(../picture/image-20221024221847519.png)]

其中,我们点击使能之后,里面还有更详细的细节配置可供用户进行配置,比如是否使用DHCP进行动态获取IP地址等,这里我设置为静态IP,因为我没用插路由器。

然后点击保存后,再重新进行编译,可以看到没有任何警告和错误。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9eD3gA5Q-1666625339068)(../picture/image-20221024222419194.png)]

这个时候,我们其实可以下载程序运行了的,但是网络功能是还不能正常使用的,因为底层的网络驱动文件还没编写。

下载程序后,在终端输入 ifconfig 命令,可以看到说网络设备有错误,如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YjPSc3y0-1666625339069)(../picture/image-20221024222744222.png)]

5. 添加RTT的网络驱动文件

这个驱动文件如果bsp包里面有的话,应该是可以配置加入 RTT Studio 里面的吧,但是APM32并没有这个文件的支持,所以只能我们自己编写这个网络驱动文件了,可以参考下面RTT官方文档的介绍,看看需要我们提供什么样的接口函数。

https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/application-note/components/network/an0010-lwip-driver-porting

这里,我已经提前写好了这个文件,分别是 drv_eth.cdrv_eth.h 。我们把这两个文件复制到工程目录的drivers目录下。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ssuM8lOb-1666625339069)(../picture/image-20221024223511374.png)]

6. 然后打开 BSP_USING_ETH 宏定义

我们在 board.h 文件中,打开 BSP_USING_ETH 这个宏定义,以及定义 phy 物理芯片的型号(根据自己板子的芯片类型选择),如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值