《嵌入式 - 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项目”,然后点击“下一步”。
接下来就是选择基于芯片还是基于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_TXEN | PG11 |
RMII_TXD0 | PG13 |
RMII_TXD1 | PB13 |
RMII_RXD0 | PC4 |
RMII_RXD1 | PC5 |
RMII_CRS_DV | PA7 |
RMII_MDC | PC1 |
RMII_MDIO | PA2 |
RMII_REF_CLK | PA1 |
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(无系统)