Git链接
基于GD32F303
ARM Cortex-M4的示例:
// TODO
概述
这并不是一个全新的实时操作系统,而是基于rt-thread设备驱动框架
和RTX5内核
组合而来的衍生版系统。其中操作系统的应用层接口使用了CMSIS RTOS2 API
,这是ARM公司为RTOS内核制定的一套通用接口协议,并且有很多实时系统内核的实现。
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 |
主要特性:
- 任务调度,线程间通信(信号量,互斥锁,消息队列...)完全使用RTX5的实现,无任何改动。
- 全局内存池(Global Memory Pool)移除了RTX5的
rtx_memory.c
,使用rt-thread中的small memory
(mem.c 实际上是lwip项目中的动态内存实现),可以同时使用rt-thread和CMSIS RTOS2的内存分配和释放API。 - C库使用
newlib
,适配了printf,malloc,free等常见的桩函数(stub-function)。 - 完整适配了rt-thread设备驱动框架,支持spi,can,uart等。
- 支持finsh控制台,自动初始化(INIT_BOARD_EXPORT...),精简的cm_backtrace。
- 默认的调试输出组件使用
Segger RTT
,通过SWD接口输出。
由于携带了以上的一些外围组件,在软件跨平台和调试上带来很大方便,但也导致了RTXThread不是一个轻量系统,其编译后占用的ROM和RAM空间也是比较大的。
提供示例的编译选项:
- O2优化等级
- 关闭newlib
--specs=nano.specs
, - 使用浮点数printf支持
-u _printf_float
- 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