1.rtthread网络协议栈概述
建立rtthread工程后,打开rtthread的源码文件夹,会发现,除了rtthread系统源码外,还有一个components源码目录。这个目录是RT-Thread操作系统的。
·
建立rtthread工程后,打开rtthread的源码文件夹,会发现,除了rtthread系统源码外,还有一个components源码目录。

这个目录是RT-Thread操作系统的组件层(components),每个文件夹对应一个独立功能组件,以下是每个目录的核心功能说明:
1. cplusplus
- 功能:提供C++语言支持的适配层。
- 作用:让RT-Thread支持C++代码开发(如C++类、构造/析构函数),包含C++标准库的基础适配(如
new/delete与RT-Thread内存管理的对接)。
2. dfs
- 功能:虚拟文件系统组件(Device File System)。
- 作用:提供统一的文件操作接口(类似POSIX标准),支持多种文件系统(如FatFS、RomFS)和存储设备(SD卡、SPI Flash),同时将外设抽象为
/dev下的设备文件(如串口映射为/dev/uart1),让外设可以通过文件接口(read/write)操作。
3. drivers
- 功能:通用设备驱动框架。
- 作用:实现RT-Thread的驱动抽象层,提供GPIO、UART、SPI、I2C等外设的统一驱动接口,同时包含部分通用硬件的驱动实现(如按键、LED),让上层应用无需关心硬件细节。
4. finsh
- 功能:命令行控制台组件(Shell)。
- 作用:提供调试/交互的命令行接口,支持两种模式:
-
- C语言解释器模式:直接执行C语言表达式;
- Msh模式:类似Linux Shell的命令行(如
list_thread查看线程、free查看内存),也支持用户自定义命令注册。
5. libc
- 功能:C标准库适配层。
- 作用:对接RT-Thread与C标准库(如newlib、musl),提供
printf/scanf、malloc/free、字符串处理等基础C库函数的实现,同时支持POSIX接口(如线程、信号量)的适配。
6. lwp
- 功能:轻量级进程(Light Weight Process)组件。
- 作用:提供类进程的隔离环境,在RT-Thread中实现进程级的资源隔离(基于MPU内存保护),让不同应用以“进程”形式运行,提升系统安全性。
7. net
- 功能:网络组件。
- 作用:提供网络通信能力,包含:
-
- 网络协议栈(如LwIP);
- 网络接口适配(如以太网、WiFi、4G模组);
- SAL(套接字抽象层),让应用通过标准Socket接口(
socket/bind/connect)开发网络程序。
8. utilities
- 功能:通用工具组件。
- 作用:包含各种辅助工具代码,如CRC校验、数据加密、日志打印、内存池管理等通用功能的封装。
9. vbus
- 功能:虚拟总线组件。
- 作用:实现设备的动态枚举与管理,类似Linux的总线机制,让驱动与设备可以动态匹配(如USB设备的热插拔管理)。
10. vmm
- 功能:虚拟机管理器(Virtual Machine Manager)组件。
- 作用:提供轻量级虚拟化能力,支持在RT-Thread中运行多个虚拟机(如同时运行RT-Thread和Linux),实现不同系统的资源隔离与共享。
Kconfig:用于RT-Thread的menuconfig配置工具,定义组件的可配置选项(如是否开启Finsh、选择文件系统类型)。SConscript:用于SCons构建系统的脚本,定义组件的编译规则(如哪些文件需要编译、头文件路径)。
其中net文件夹,rtthread命名为网络组件。 本专题对网络部分专门进行代码分析。
网络组件的代码架构图如图所示:

Net 组件的主要内容有 4 个方面,分别是 sal ,AT,lwip 与 netdev,通过 SAL 接口可以实现 MQTT,NTP,TFTP,TCP Client,TCP Server,webclient,UDP Client,UDP Server,webnet 等系列强大的功能。
更多推荐
所有评论(0)