《嵌入式 - Lwip开发指南》第4章 移植LWIP(基于RT-Thead系统)

4.1 RT-Thread简介

RT-Thread(Real Time-Thread)是一个嵌入式实时多线程操作系统,支持多任务。但是,一个处理器核心在某一时刻只能运行一个任务,由于每次对一个任务的执行时间很短、任务与任务之间通过任务调度器进行非常快速地切换(调度器根据优先级决定此刻该执行的任务),给人造成多个任务在一个时刻同时运行的错觉。在 RT-Thread 系统中,任务是通过线程实现的,RT-Thread 中的线程调度器也就是以上提到的任务调度器。

RT-Thread 主要采用 C 语言编写,浅显易懂,方便移植。它把面向对象的设计方法应用到实时系统设计中,使得代码风格优雅、架构清晰、系统模块化并且可裁剪性非常好。RT-Thread 能使用在线软件包非常丰富,配合系统配置工具实现直观快速的模块化裁剪。

相较于 Linux 操作系统,RT-Thread 体积小,成本低,功耗低、启动快速,除此以外 RT-Thread 还具有实时性高、占用资源小等特点,非常适用于各种资源受限(如成本、功耗限制等)的场合。虽然 32 位 MCU 是它的主要运行平台,实际上很多带有 MMU、基于 ARM9、ARM11 甚至 Cortex-A 系列级别 CPU 的应用处理器在特定应用场合也适合使用 RT-Thread。




4.2项目创建

为了简单起见,我这里使用RT-Thread Studio开发,关于如何使用RT-Thread Studio创建项目,请参看官方手册。

RT-Thread Studio

首先打开RT-Thread Studio,新建项目。

在这里插入图片描述

接下来选择新建“RT-Thread项目”,然后点击“下一步”。

在这里插入图片描述

接下来就是选择基于芯片还是基于BSP开发,如果有BSP直接使用BSP,如果没有就选择基于芯片。

4.2.1基于芯片

接下来填写工程名,如果RT-Thread Studio相应开发板的BSP,就选择基于芯片,控制台是USART3。

在这里插入图片描述

点击“完成”,稍等片刻即可完成项目的创建。当然接下来你也可以使用MDK开发,我这里还是继续使用RT-Thread Studio开发。

在这里插入图片描述

工程创建好了,接下里就是开发工作了。

4.2.2基于BSP

Nucleo-F746ZG的BSP笔者已经做好了,也已经合并到RT-Thread的代码中了。如果是其他板子,就自行查看是否有相应的BSP吧。

在这里插入图片描述

【注】上图是基于ST-DISCO的板子演示的,Nucleo-F746ZG在RT-Thread Studio中还没更新,后面更新了就会有,但Github中已经更新了,可直接源码然后再导入工程中。
基于BSP更简单,很多外设都已经配置好了,这就不再详述了。

接下来可以先尝试编译:

在这里插入图片描述

NUCLEO-F746ZG自带ST-Link下载器,编译成功后将程序下载到板子中,打开终端,打印信息如下:

在这里插入图片描述

以上信息表示创建工程成功。




4.3移植LWIP

这里还是两种情况讲解。

4.3.1基于芯片

在基于芯片的工程进行配置。
1.以太网配置

在这里插入图片描述

NCULEO-F746ZG的板载了LAN8742A的PHY。

在这里插入图片描述

STM32F746通过RMII 接口连接PHY芯片LAN8742, 然后经过百兆网络变压器到RJ45接口。因为 LAN8742A只有 RMII 接口,因此这里与开发板的连接采用了 RMII 接口。

RMII对应的引脚连接如下:

RMII接口STM32F746ZG引脚
RMII_TXENPG11
RMII_TXD0PG13
RMII_TXD1PB13
RMII_RXD0PC4
RMII_RXD1PC5
RMII_CRS_DVPA7
RMII_MDCPC1
RMII_MDIOPA2
RMII_REF_CLKPA1

ETH引脚默认的和原理图不匹配,主要是ETH_TX_EN 和 ETH_TXD0,需要手动映射。
值得注意的是需要先手动手动映射,在使能ETH。

另外原理图中LAN8742的PHYAD0引脚下拉到地。

在这里插入图片描述

根据数据手册,ETH 的 Configuration 中PHY Address设为0。

在这里插入图片描述

PHY芯片设置,需根据LAN8742A的芯片手册来配置。

在这里插入图片描述

这里默认即可。

在这里插入图片描述

2.LWIP配置
接下来配置RTT,主要配置LWIP协议栈。

在这里插入图片描述

在board使能以太网以及网卡。

在这里插入图片描述

默认是没有PHY_USING_LAN8742A的,需要添加PHY_USING_LAN8742A的配置,在drv_eth.h添加如下内容:

在这里插入图片描述

还需要注释phy_reset();,因为LAN8742A与共用复位按键。

在这里插入图片描述

然后编译即可。

4.3.2基于BSP

在BSP的基础工程上配置工程,首先使能Ethernet。默认使用的PHY芯片是LAN8742A。

在这里插入图片描述

默认使能以太网,就会默认勾选Lwip协议栈。

在这里插入图片描述

好了,配置就完成了,接下来就是编译测试以及后续的开发。




4.4测试

编译下载程序。打开调试终端,当然还要插上网线。

打印信息如下:

在这里插入图片描述

说明LWIP初始化成功。

接下来查看联网情况。

在这里插入图片描述

值得注意的是,ifconfig、ping等命令,需要使能网络接口设备,默认已经勾选。

在这里插入图片描述

我们再ping下网络。

在这里插入图片描述

可以看到已经连接到以太网。




代码获取方法

1.长按下面二维码,关注公众号[嵌入式实验楼]
2.在公众号回复关键词[LWIP]获取资料
在这里插入图片描述




欢迎访问我的网站

BruceOu的哔哩哔哩
BruceOu的主页
BruceOu的博客
BruceOu的CSDN博客
BruceOu的简书

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bruceoxl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值