建立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/scanfmalloc/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 等系列强大的功能。

        

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐