Files
cosyos/README.md
零中断延迟的RTOS da10667176 update README.md.
Signed-off-by: 零中断延迟的RTOS <cosyos@139.com>
2026-01-16 10:11:01 +00:00

157 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-2.2.1-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官网 [https://www.cosyos.com](https://www.cosyos.com),现已正式上线,诚邀您莅临访问!<br>
当前正处于建站初期,各方面内容都还不够丰富,正在持续优化并完善中。。。
* 近日,新增 例程-服务应用,为用户示范各项常用服务的典型应用,并在未来会陆续优化完善。
* CosyOS-III V2.0.0 发布推出了中断挂起服务_FIFO-错误调用返回这标志着CosyOS进一步走向成熟和完善。
* CosyOS-III V1.4.0 发布,推出了升级安装程序 CosyOS-III Cube.exe可轻松将裸机工程升级为CosyOS工程。
* CosyOS-III V1.3.8 发布,完善了对 Arm Compiler 5/6、GNU Compiler、IAR Compiler 等主流编译器的支持。
* CosyOS-III V1.3.0 发布解决了当嵌套获取多个互斥信号量时可能会发生的优先级反转问题该bug普遍存在于常见主流RTOS中
* CosyOS 又取得新突破,现已升级至 **CosyOS-III**,说明文档持续更新中。。。<br>
原有 CosyOS-I、CosyOS-II 停止更新维护,但仍提供技术支持。
### 序言
* 近年来随着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)
{
uStartTask_Ready (task_1); // 启动 task_1初始状态为就绪状态
uStartTask_Block (task_2); // 启动 task_2初始状态为阻塞状态阻塞类型为延时阻塞延时时间为无限长
uStartTask_Suspend(task_3); // 启动 task_3初始状态为挂起状态
}
```
您有没有眼前一亮呢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 等内核,未来会陆续添加对其它内核的支持。<br>
### 编译环境
CosyOS 现支持 keil C51、C251、MDK-ArmAC5、AC6GCC-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/%E8%AF%B4%E6%98%8E%E6%96%87%E6%A1%A3/CosyOS-III%20API%E7%94%A8%E6%88%B7%E5%8F%82%E8%80%83%E6%89%8B%E5%86%8C%20V2.0.0.chm)
### 参与贡献
1. Fork 本仓库
2. 新建 Feat_xxx 分支
3. 提交代码
4. 新建 Pull Request