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

Posted Bruceoxl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《嵌入式 - 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的简书

以上是关于《嵌入式 - Lwip开发指南》第4章 移植LWIP(基于RT-Thead系统)的主要内容,如果未能解决你的问题,请参考以下文章

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

《嵌入式 - Lwip开发指南》第3章 移植LWIP(无系统)

《嵌入式 - Lwip开发指南》第3章 移植LWIP(无系统)

在LwIP 协议栈移植 Snap 7

《嵌入式 - Lwip开发指南》第1章 LWIP概述

《嵌入式 - Lwip开发指南》第1章 LWIP概述