From 69dcc99f9e55587641ea07212234d4217191bcca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B6=E4=B8=AD=E6=96=AD=E5=BB=B6=E8=BF=9F=E7=9A=84RTOS?= Date: Sun, 7 Jan 2024 20:38:11 +0000 Subject: [PATCH] =?UTF-8?q?update=20=E8=AF=B4=E6=98=8E=E6=96=87=E6=A1=A3/C?= =?UTF-8?q?osyOS=E5=8E=9F=E7=90=86=E4=B8=8E=E5=BA=94=E7=94=A8.md.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 零中断延迟的RTOS --- 说明文档/CosyOS原理与应用.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/说明文档/CosyOS原理与应用.md b/说明文档/CosyOS原理与应用.md index 0adf739..be29351 100644 --- a/说明文档/CosyOS原理与应用.md +++ b/说明文档/CosyOS原理与应用.md @@ -318,7 +318,6 @@ CosyOS的临界区可分为 **任务临界区**、**服务层临界区**、**全 1、任务中:在任务临界区中访问;
2、滴答中:直接访问即可;
3、中断中:采用挂起服务调用/钩子来访问;
-如此,即可实现全局成功的互斥访问。
_服务层临界区不会破坏零中断延迟,当需要系统级的临界区保护时,应首先予以考虑。_
* **全局临界区**
@@ -329,8 +328,8 @@ Arm:
1、操作PRIMASK,会关闭总中断。
2、操作FAULTMASK,会关闭总中断。
3、操作BASEPRI,可实现不同掩蔽范围的全局临界区保护,不会关闭总中断。
+ _全局临界区会破坏零中断延迟,应做为最后的选项,慎重使用。_
_CosyOS内核中从来不会进入全局临界区,提供此项服务只是为了便于用户对全局公共资源或程序过程的保护。_
- _全局临界区会破坏零中断延迟,为最后的选项,不可轻易使用。_
任务临界区、全局临界区,都支持嵌套功能,最大嵌套深度:255。
@@ -351,7 +350,7 @@ Arm:
* **全局公共资源**
1、服务层临界区:即可实现全局成功的互斥访问,又不会破坏零中断延迟,是最优方案,应首先予以考虑。
2、二值信号量:弊端是如果获取失败将导致访问失败,而从概率来说,获取失败是必然会发生的。
-3、全局临界区:弊端是全局临界区会破坏零中断延迟,为最后的选项,不可轻易使用。
+3、全局临界区:弊端是全局临界区会破坏零中断延迟,应做为最后的选项,慎重使用。
## 第六章、定时服务 我们知道,MCU都有硬件定时器和定时器中断,当定时器溢出时,CPU可以响应中断并调用定时器中断服务程序。
@@ -373,14 +372,14 @@ Arm:
-----------恢复
系统滴答 ——> 定时中断/查询任务
-FreeRTOS是在守护任务中统一调用所有的定时器回调函数,所有“定时服务”都具有相同的优先级,即守护任务的优先级。
+FreeRTOS是在守护任务中统一调用所有的定时器回调函数,所有“定时服务”享有相同的优先级,即守护任务的优先级。
CosyOS则分为两种情况:
1、在系统滴答中调用定时中断/查询钩子,“定时服务”享有系统滴答的优先级(高于任务);
2、在系统滴答中恢复定时中断/查询任务,“定时服务”的优先级即任务优先级(用户定义)。
-注意:只有极为精简的代码才可创建为钩子,否则会对系统的实时性造成不利影响。
+注意:只有极为精简的代码才可创建为钩子,否则会对系统实时性造成不利影响。
-可见,CosyOS的“定时服务”,包括定时中断任务/钩子、定时查询任务/钩子,其实质都是软件定时器中断,优先级都可由用户灵活配置。
+可见,CosyOS的“定时服务”,优先级都可由用户灵活配置,其优势不言而喻。
关于CosyOS的定时任务/钩子的应用示例可参考源码:
任务管理器 Taskmgr,为定时查询任务,\System\taskmgr.c;