# RT-Thread操作系统的μC/OS-III兼容层
## μC/OS-III RTOS Application Compatibility Layer (ACL) for RT-Thread
## 让基于μC/OS-III开发的应用层无感地迁移到RT-Thread操作系统
### 如果喜欢请Star,这是对本开源项目最大的鼓励,谢谢;如果想要贡献PR,请fork
--------------------
[TOC]
# 0 前排提示
本文含有图片,受限于**中国大陆互联网环境**,访问github时,**readme.md(本文件)的图片一般加载不出来**,因此我导出了.pdf文件。如果您需要详细阅读,可以将项目下载或clone下来,阅读[docs/中文说明文档.pdf](docs/中文说明文档.pdf)文件。
# 1 概述
这是一个针对RT-Thread国产操作系统的μCOS-III操作系统兼容层,可以让基于美国Micriμm公司的μCOS-III操作系统的项目快速、无感地迁移到RT-Thread操作系统上。在兼容层的设计、编写上尊重原版μC/OS-III,保证原版μC/OS-III的原汁原味。本项目100%由C语言完成。
支持版本:μC/OS-III 3.00-3.08全部版本
视频介绍&教程:https://www.bilibili.com/video/BV1b54y1U7AG
## 1.1 RT-Thread的其他RTOS兼容层
- RT-Thread操作系统的μCOS-II兼容层:https://github.com/mysterywolf/RT-Thread-wrapper-of-uCOS-II
- RT-Thread操作系统的FreeRTOS兼容层:https://github.com/RT-Thread-packages/FreeRTOS-Wrapper
- RT-Thread操作系统的RTX(即CMSIS-RTOS1)兼容层:https://github.com/RT-Thread-packages/CMSIS_RTOS1
- RT-Thread操作系统的RTX5(即CMSIS-RTOS2)兼容层:https://github.com/RT-Thread-packages/CMSIS_RTOS2
- RT-Thread操作系统的Arduino生态兼容层:https://github.com/RTduino/RTduino
## 1.2 本兼容层适合于
- 之前学习过μCOS-III操作系统,意图转向学习RT-Thread国产操作系统。本兼容层可以帮您用已有的μCOS-III编程经验和习惯快速将项目跑起来,日后在应用过程中深入熟悉RT-Thread的API函数,逐步向RT-Thread过度,降低您的学习门槛和时间成本。**有了本兼容层,对RT-Thread API以及编程风格的不熟悉再也不是您学习RT-Thread的阻力!**
- 现有任务(线程)模块采用μCOS-III编写,想要用在基于RT-Thread的工程上
- 老项目需要从μCOS-III操作系统向RT-Thread操作系统迁移
- 当需要快速基于RT-Thread开发产品,但是工程师之前均采用μC/OS开发,从未用过RT-Thread的开发经验。本兼容层可以帮助让工程师快速基于μC/OS-III开发经验开发产品,简化软件的重用、缩短微控制器新开发人员的学习过程,并缩短新设备的上市时间。
- 避免在从μCOS-III迁移到RT-Thread时,由于μCOS-III的编程经验导致的思维定式引发的错误,这种错误一般很难被发现
> 例如:
>
> 1. 两个操作系统对于任务/线程挂起、解挂函数的区别。
> RT-Thread不支持任务嵌套挂起、解挂
> μCOS-III支持任务嵌套挂起、解挂
>
> 2. 软件定时器参数的不同
>
> 3. 任务堆栈的数据类型不同
- 本兼容层实现了与Micriμm公司专门为其旗下产品μC/OS等开发的专用软件μC/Probe的对接,可以通过该软件以图像化形式查看、调试RT-Thread内核以及μCOS-III兼容层的相关信息
## 1.3 版本详细信息
| 组件名称 | 版本号 | 配置文件 | 说明 |
| :------------: | :-----: | :----------------------------------------------: | :---------------------------------------: |
| RT-Thread nano | 3.1.3 | rtconfig.h | |
| μC/OS-III | 3.03.00 | os_cfg_app.h <br />os_cfg.h<br />os_app_hooks.c | 兼容层兼容3.00.00-3.08.00全部μCOS-III版本 |
| μC/CPU | 1.30.00 | cpu_cfg.h | 部分升级到最新版本, 兼容所有Micriμm软件 |
| μC/LIB | 1.39.00 | lib_cfg.h | 最新版本 |
## 1.4 官网
RT-Thread:https://www.rt-thread.org/
文档中心:https://www.rt-thread.org/document/site/tutorial/nano/an0038-nano-introduction/
μCOS-III:https://www.micrium.com/
文档中心:https://doc.micrium.com/display/kernel304/uC-OS-III+Documentation+Home
# 2 使用
## 2.1 Keil-MDK仿真工程
本仿真工程是基于STM32F103平台。
Keil工程路径:[rt-thread-3.1.3/bsp/stm32f103/Project.uvprojx](rt-thread-3.1.3/bsp/stm32f103/Project.uvprojx)
需要提前安装好RT-Thread Nano-3.1.3 [Keil支持包](https://www.rt-thread.org/download/mdk/RealThread.RT-Thread.3.1.3.pack).
**注意:调试串口使用的是USART2,不是USART1**
<img src="docs/pic/usart2.png" alt="usart2" />
## 2.2 迁移步骤
**(如果使用的是RT-Thread Nano版请参见以下步骤;若使用RT-Thread完整版可以直接跳转至[Env工具自动化配置到工程中](#6 Env工具自动化配置到工程中)章节)**
1. 将uCOS-III、uC-LIB、uC-CPU三个文件夹内的所有文件都加入到你的工程中,最好保持原有文件夹的结构。相较于原版μCOS-III增加了`os_rtwrap.c`文件,负责对RT-Thread和μCOS-III的转换提供支持。
3. 浏览一下`μCOS-III/os.h`文件,看一下错误代码,这个错误代码和原版μCOS-III是有一定区别的。
**注意: 请勿随意打开注释掉的错误码枚举体成员,** 如果用户使用到了这些注释掉的成员,则会在迁移时编译报错,用以提醒用户这些错误代码在兼容层已经不可用。
4. 配置`os_cfg.h`和`os_cfg_app.h`
每个选项的配置说明和原版μCOS-III一致,若有不同,我已经在注释中有所解释。
**原版μCOS-III配置**说明可参见:
a)《嵌入式实时操作系统μC/OS-III》北京航空航天大学出版社 宫辉等译 邵贝贝审校
b) Micriμm公司μCOS-III[在线文档](https://doc.micrium.com/display/kernel304/uC-OS-III+Features+os_cfg.h)
5. μCOS-III原版定时器回调函数是在定时器线程中调用的,而非在中断中调用,因此要使用μCOS-III兼容层的软件定时器,需要将rtconfig.h中的宏定义`RT_USING_TIMER_SOFT`置1。
## 2.3 os_cfg.h配置文件
```c
#define OS_CFG_TMR_TASK_RATE_HZ 100u /* Rate for timers (100 Hz Typ.) */
```
在原版μCOS-III中,该宏定义定义了软件定时器的时基信号,这与RT-Thread的软件定时器有本质的不同,在RT-Thread中,软件定时器的时基信号就等于OS Ticks。因此为了能够将μCOS-III软件定时器时间参数转为RT-Thread软件定时器的时间参数,需要用到该宏定义。请使该宏定义与原工程使用μCOS-III时的该宏定义参数一致。需要注意的是,虽然在兼容层中定义了软件定时器的时基频率,但是在兼容层内部使用的RT-Thread软件定时器的时基频率等同于OS Ticks,因此`OS_TMR`结构体的`.Match`成员变量其保存的数值是以OS Ticks频率来计算的。
## 2.4 os_cfg_app.h配置文件
该文件仅保留了OS Tick频率的配置、定时器任务以及统计任务的配置。其他配置项本兼容层用不到(例如中断任务),予以删除。
## 2.5 运行
### 2.5.1 官方标准手动初始化流程
本兼容层完全兼容官方给出的标准初始化流程,如果您兼容老项目,μCOS-III初始化部分无需做任何修改。具体初始化流程代码参见工程`main.c`文件,参考文献参见 [docs/uCOS-III官方初始化流程.pdf](docs/uCOS-III官方初始化流程.pdf)
### 2.5.2 最简手动初始化流程
最简初始化流程是指本兼容层的初始化流程,不必像官方给出的初始化流程一样复杂。如果您不是想要兼容已有老工程,而是新建一个工程的话,可以采用最简手动初始化流程
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
第三方 RTOS 兼容层 为方便之前有其他 RTOS 使用经验的用户快速上手 RT-Thread,以及将基于其他 RTOS 的 API 编写的应用层代码快速移植到 RT-Thread 上,RT-Thread 社区编写了第三方 RTOS 兼容层。目前支持以下第三方 RTOS 的 API 无感移植:uCOS-II操作系统兼容层,RT-Thread-wrapper-of-uCOS-III-master_Keil例程.zip.
资源推荐
资源详情
资源评论
收起资源包目录
RT-Thread-wrapper-of-uCOS-III-master-Keil例程.zip (156个子文件)
lib_mem_a.asm 11KB
lib_mem_a.asm 11KB
lib_mem_a.asm 11KB
lib_mem_a.asm 11KB
lib_mem_a.asm 11KB
lib_mem_a.asm 10KB
lib_mem_a.asm 10KB
lib_mem_a.asm 8KB
lib_mem_a.asm 8KB
AUTHORS 571B
AUTHORS 78B
keilkilll.bat 370B
stm32f1xx_hal_tim.c 207KB
lib_str.c 196KB
lib_mem.c 116KB
stm32f1xx_hal_uart.c 107KB
stm32f1xx_hal_usart.c 97KB
os_task.c 77KB
stm32f1xx_hal_tim_ex.c 62KB
stm32f1xx_hal_rcc.c 48KB
os_tmr.c 46KB
os_q.c 43KB
os_flag.c 41KB
os_sem.c 39KB
os_mutex.c 35KB
stm32f1xx_hal_flash_ex.c 35KB
stm32f1xx_hal_rcc_ex.c 29KB
stm32f1xx_hal_flash.c 28KB
os_core.c 27KB
stm32f1xx_hal_dma.c 27KB
lib_ascii.c 22KB
os_time.c 20KB
stm32f1xx_hal_gpio.c 20KB
stm32f1xx_hal_pwr.c 20KB
stm32f1xx_hal.c 20KB
stm32f1xx_hal_cortex.c 18KB
os_dbg.c 17KB
os_stat.c 16KB
os_mem.c 15KB
stm32f1xx_hal_exti.c 15KB
os_rtwrap.c 14KB
system_stm32f1xx.c 14KB
cpu_core.c 11KB
lib_math.c 11KB
os_pend_multi.c 10KB
os_cfg_app.c 7KB
q_example.c 6KB
os_app_hooks.c 6KB
os_cpu_c.c 6KB
sem_example.c 6KB
board.c 5KB
stm32f1xx_hal_gpio_ex.c 4KB
mutex_example.c 4KB
board.c 4KB
cpu_a.c 4KB
flag_example.c 4KB
task_sem_example.c 3KB
suspend_example.c 3KB
timer_example.c 3KB
main.c 3KB
os_var.c 3KB
.gitattributes 96B
.gitignore 249B
stm32f103xe.h 863KB
stm32f103xb.h 755KB
stm32_hal_legacy.h 196KB
stm32f1xx_hal_tim.h 111KB
core_cm3.h 107KB
stm32f1xx_hal_rcc_ex.h 97KB
os.h 89KB
lib_mem.h 88KB
stm32f1xx_hal_rcc.h 65KB
lib_def.h 61KB
cmsis_gcc.h 59KB
cmsis_armclang.h 53KB
lib_ascii.h 46KB
stm32f1xx_hal_uart.h 42KB
stm32f1xx_hal_can_legacy.h 37KB
stm32f1xx_hal_flash_ex.h 35KB
stm32f1xx_hal_gpio_ex.h 35KB
stm32f1xx_hal_usart.h 28KB
cmsis_iccarm.h 27KB
cmsis_armcc.h 27KB
lib_str.h 20KB
cpu_core.h 19KB
stm32f1xx_hal_dma.h 17KB
stm32f1xx_hal_cortex.h 17KB
stm32f1xx_hal_conf_template.h 16KB
stm32f1xx_hal_conf.h 15KB
cpu.h 13KB
lib_math.h 13KB
stm32f1xx_hal_dma_ex.h 12KB
os_cfg.h 12KB
stm32f1xx_hal_exti.h 12KB
stm32f1xx_hal_gpio.h 11KB
stm32f1xx_hal_pwr.h 11KB
stm32f1xx_hal.h 11KB
stm32f1xx_hal_tim_ex.h 9KB
lib_cfg.h 9KB
stm32f1xx_hal_flash.h 9KB
共 156 条
- 1
- 2
资源评论
华为奋斗者精神
- 粉丝: 8132
- 资源: 241
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功