首页 > 其他分享 >RTXThread 基于rt-thread和RTX5的衍生版操作系统

RTXThread 基于rt-thread和RTX5的衍生版操作系统

时间:2023-01-08 20:46:15浏览次数:66  
标签:rt thread CMSIS RTX5 RTOS2 RTXThread

Git链接

基于GD32F303 ARM Cortex-M4的示例:
// TODO

概述

这并不是一个全新的实时操作系统,而是基于rt-thread设备驱动框架RTX5内核组合而来的衍生版系统。其中操作系统的应用层接口使用了CMSIS RTOS2 API,这是ARM公司为RTOS内核制定的一套通用接口协议,并且有很多实时系统内核的实现。
image

CMSIS-RTOS2兼容层 链接
RT-Thread https://github.com/RT-Thread-packages/CMSIS_RTOS2
FreeRTOS https://github.com/ARM-software/CMSIS-FreeRTOS
LiteOS https://support.huaweicloud.com/lib-LiteOS/zh-cn_topic_0314621635.html

主要特性:

  1. 任务调度,线程间通信(信号量,互斥锁,消息队列...)完全使用RTX5的实现,无任何改动。
  2. 全局内存池(Global Memory Pool)移除了RTX5的rtx_memory.c,使用rt-thread中的small memory(mem.c 实际上是lwip项目中的动态内存实现),可以同时使用rt-thread和CMSIS RTOS2的内存分配和释放API。
  3. C库使用newlib,适配了printf,malloc,free等常见的桩函数(stub-function)。
  4. 完整适配了rt-thread设备驱动框架,支持spi,can,uart等。
  5. 支持finsh控制台,自动初始化(INIT_BOARD_EXPORT...),精简的cm_backtrace。
  6. 默认的调试输出组件使用Segger RTT,通过SWD接口输出。

由于携带了以上的一些外围组件,在软件跨平台和调试上带来很大方便,但也导致了RTXThread不是一个轻量系统,其编译后占用的ROM和RAM空间也是比较大的。
提供示例的编译选项:

  1. O2优化等级
  2. 关闭newlib --specs=nano.specs
  3. 使用浮点数printf支持-u _printf_float
  4. Segger RTT输出缓存占用4KB RAM

若启用newlib-nano属性,关闭浮点数printf支持,.text段(ROM)能减少13KB。
若关闭Segger RTT功能,.bss段(RAM)能减小4KB。

Invoking: GNU Arm Cross Print Size
arm-none-eabi-size --format=berkeley "RTXThread.elf"
   text	   data	    bss	    dec	    hex	filename
  70792	   1636	   7856	  80284	  1399c	RTXThread.elf
Finished building: RTXThread.siz

系统启动流程

标签:rt,thread,CMSIS,RTX5,RTOS2,RTXThread
From: https://www.cnblogs.com/yanye0xff/p/17034882.html

相关文章