Files
cosyos/README.md
T
零中断延迟的RTOSandGitee be3eab8b72 update README.md.
Signed-off-by: 零中断延迟的RTOS <cosyos@139.com>
2026-08-15 09:14:14 +00:00

162 lines
9.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
![logo](images/logo.png) -- _零中断延迟的RTOS_ :grey_exclamation: <br><br>
![Author](https://img.shields.io/badge/Author-迟凯峰-red?style=flat-square)
![languge](https://img.shields.io/badge/languge-C、Asm-blue)
![license](https://img.shields.io/badge/license-Apache2.0-brightgreen.svg)
![version](https://img.shields.io/badge/version-3.0.8-green)
[![star](https://gitee.com/cosyos/cosyos/badge/star.svg?theme=dark)](https://gitee.com/cosyos/cosyos/stargazers)
[![fork](https://gitee.com/cosyos/cosyos/badge/fork.svg?theme=dark)](https://gitee.com/cosyos/cosyos/members)
* CosyOS-QQ交流群:303421780.
### 最新消息
CosyOS-III V3.0.1 版本发布,针对 RISC-V32,推出了自研先进技术,可实现 **CH32V 全程开启硬件压栈** 。该技术为纯软件实现,不依赖特定硬件(0x804->bit5),V103、203 等皆可完美支持。
### 移植流程
**Cube安装方式:** <br>
**1、裸机工程** 先准备好项目的裸机工程。<br>
**2、升级安装** 运行 CosyOS-III Cube.exe,把 裸机工程 升级为 CosyOS工程。<br>
**3、系统构建** 打开工程,参照 CosyOS-例程(系统构建)> readme.txt 中的说明,完成系统构建。<br>
**手动移植方式:** <br>
RISC-V32 暂不支持 Cube安装,只能自行手动移植,移植可参考 Demo-Build/RISC-V32/readme.txt 中的说明,如移植过程中遇到问题可加入社区获取工程模板和技术支持。
### 序言
* 近年来,随着RTOS的普及及在嵌入式设备中的广泛应用,以关闭总中断等方式来保护临界段所带来的危害性(丢失响应、处理延误)正日益凸显出来,其中以高速通讯接收丢帧、高速捕获丢失脉冲等中断丢失响应现象最为紧要和普遍。有些RTOS关闭总中断可能过于频繁,且未能提供“系统最大关闭总中断时间”等核心关键参数,实时性有待商榷。<br>
* 随着时代的发展、科技的进步,零中断延迟已经成为可能,RTOS正悄然的面临着一场时代的变革... ...<br>
* 2023年,CosyOS 应运而生!<br>
### 简介
CosyOS是一款来自中国的开源实时操作系统,从经典的8051内核,到流行的Arm Cortex-M内核,均可实现全局不关总中断、零中断延迟,适用于对系统实时性及中断响应速度有较高要求的场合。CosyOS以极具浪漫主义色彩的宏定义,实现了高度的面向对象及良好的易用性。
### CosyOS-实时运行模型
* **用户中断层** [用户中断按中断优先级实时抢占、零中断延迟]<br>
* 中断本地服务 -> 执行<br>
* 中断FIFO服务 -> 装载<br>
* 中断FLAG服务 -> 设置<br>
* **内核服务层**
* **SysTick** [minpri]<br>
* 系统节拍<br>
* 滴答服务 -> 执行<br>
* **PendSV** [minpri]<br>
* 中断FIFO服务 -> 执行<br>
* 中断FLAG服务 -> 执行<br>
* 任务调度切换<br>
* **内核锁** [关闭 SysTick/PendSV]<br>
* 任务服务 -> 执行<br>
* **任务层**
* 系统调试器 [maxpri]
* 任务管理器 [maxpri-1]
* 任务启动器 [maxpri-2]
* 一般用户任务 [maxpri-3 ~ minpri+1:1]
* 系统空闲任务 [minpri:0]<br>
### 零中断延迟
* 零中断延迟并非是中断响应时间为零,而是指当引入了RTOS以后,由RTOS保护临界段而导致的中断响应时间延迟为零。换言之,中断响应时间不受RTOS影响,与裸机编程是一样的。
### 零中断延迟基本原理
* 内核服务层中,SysTick、PendSV、内核锁,三者间是互斥访问的。换言之,整个服务层是一个大临界区(**服务层临界区**)。
* 所有内核服务(中断本地服务除外),均在服务层临界区执行,从而保证服务的 **“操作流”** 不会被打断。
* 中断本地服务,根据各自特征单独处理。
### 初体验
下面,让我们来初步体验一下CosyOS的易用性。<br>
**CosyOS-III 一步创建任务示例:** <br>
| 任务名称 | 任务优先级 | 任务栈大小 | 安全运行时 | 任务名称文本(兼容模式)|
|------------|-------|-------|-------|-------|
| task_1 | 1级 | 128字节 | 0为无限长 | 0为自动引用任务名称,即"task_1" |
| task_2 | 2级 | 256字节 | 6滴答周期 | "task_led"为任务名称文本 |
| task_3 | 3级 | 384字节 | 9滴答周期 | "task_key"为任务名称文本 |
注:**安全运行时**是CosyOS的安全关键技术,可防止任务长期独占或超时使用处理器。<br>
```c
# 静态创建 task_1
uCreateTask(task_1, 1, 128, 0, 0)
{
while(1){
/* 任务代码 */
}
}
# 动态创建 task_2
dCreateTask(task_2, 2, 256, 6, "task_led")
{
while(1){
/* 任务代码 */
}
}
# 动态创建 task_3
dCreateTask(task_3, 3, 384, 9, "task_key")
{
while(1){
/* 任务代码 */
}
}
# 启动钩子
void start_hook(void)
{
// uScheduleLock(); // 如果不想在启动任务过程中进行任务调度,可开启调度锁。
uStartTask_Ready (task_1); // 启动 task_1,初始状态为就绪状态
uStartTask_Block (task_2); // 启动 task_2,初始状态为阻塞状态(阻塞类型为延时阻塞,延时时间为无限长)
uStartTask_Suspend(task_3); // 启动 task_3,初始状态为挂起状态
// uScheduleUnlock();
}
```
您有没有眼前一亮呢?CosyOS创建任务竟如此简单,通过调用API并输入各项参数,而后直接写任务代码即可。下一步就是在启动钩子中启动任务,任务便可参与调度并运行了。 _**任务静态创建与动态创建的相互转换也极为便利,API名称中,仅需 “u”改“d” 或 “d”改“u” 即可。**_
### 突破创新
* 所有支持内核均可实现 **全局不关总中断、零中断延迟**,从系统层面保证了用户中断的实时响应
* 领先的零中断延迟技术,率先应用于 8051、Cortex-M0 等处理器,在世界上可能尚属首例
* **任务就绪表**,采用 零/一/二级位图,保证了抢占式任务调度的硬实时性
* **三维链表**技术,可显著的减少操作链表,服务的执行速度更快
* 创新的**协作式调度**,协作仅作用于相同优先级的任务,具有高度的实用价值
* 独家技术实现系统服务的可重入,使51彻底摆脱可重入栈、全面提速
* **定时服务(软件定时器中断)**,包括任务和钩子,任务优先级都可由用户灵活配置
* **事件标志组**,对标志组和标志位的访问通过组名和位名来实现,极大的方便了标志组的应用
* **全局变量访问**,支持在任意任务和中断中对全局变量的安全访问,而不必担心重入的发生
* **安全关键技术**,有多项安全关键技术,如中断挂起服务空间隔离、安全运行时,可靠性高
### 因循守旧
* 完全开源的免版税、确定性的RTOS
* 任务调度,支持不同优先级“抢占式调度”,相同优先级“协作式调度”或“时间片轮转调度”
* 用户任务数量不限,最多支持256级任务优先级
* 简洁高效的代码,极低的硬件资源占用,使CosyOS可轻松应用于各种小型MCU
* 任务管理器,实时监控各任务的运行,协助开发者及时发现设计中存在的潜在问题<br>
<br>
![任务管理器](images/taskmgr.png "任务管理器")<br>
-—————— CosyOS-III 任务管理器 ——————-
### 支持架构
CosyOS 现支持 8051、80251、Cortex-M、RISC-V32 等架构,未来会陆续添加对其它架构的支持。<br>
### 编译环境
CosyOS 现支持 keil C51、C251、MDK-ArmAC5、AC6),GCC-ArmIAR-EWARM 等主流编译器,<br>
未来会继续提供对其它编译器的支持。
### 文件说明
| 名称 | 描述 |
|--------------------|------------------------------|
| **System** | **内核文件** <br>CosyOS.H:系统链接头文件 <br>ur_api.h:用户API(含doxygen注释)<br>ur_eapi.h:用户API扩展 <br>sv_❃.c/h:内核服务文件 <br>os_❃.c/h:其它内核文件 |
| **Hook** | **钩子文件** <br>CosyOS 已经为用户创建好了六个系统钩子函数,<br>分别位于各自的同名文件中,用户直接写代码即可。 |
| **Port** | **移植文件** <br>syscfg.h:系统配置文件 <br>其它文件夹:各MCU配置和移植文件 |
| **Demo-Build** | **例程文件** <br>例程文件 for 系统构建 |
| **Setup** | **安装程序** <br>**CosyOS-III Cube** 升级安装程序 |
| **Demo-Service** | **例程文件** <br>例程文件 for 服务应用 <br> _不会通过安装程序添加到工程中,用户需自行查阅。_ |
### 文档中心
#### [API用户参考手册](https://gitee.com/cosyos/cosyos/blob/master/CosyOS-III%20API%E7%94%A8%E6%88%B7%E5%8F%82%E8%80%83%E6%89%8B%E5%86%8C%20v3.0.0.chm)
**[CosyOS官网](https://www.cosyos.com/)** 为大家提供了丰富的说明文档,包括 内核原理、开发指南、注意事项、疑难解答 等,可前往查阅。
### 参与贡献
1. Fork 本仓库
2. 新建 Feat_xxx 分支
3. 提交代码
4. 新建 Pull Request