update 说明文档/CosyOS原理与应用.md.

Signed-off-by: 零中断延迟的RTOS <cosyos@139.com>
This commit is contained in:
零中断延迟的RTOS
2024-01-28 17:31:47 +00:00
committed by Gitee
parent a47e062b42
commit 63936a98dc

View File

@@ -363,6 +363,14 @@ CosyOS的临界区可分为 **任务临界区**、**服务层临界区**、**全
1、任务中在任务临界区中访问<br> 1、任务中在任务临界区中访问<br>
2、滴答中直接访问即可<br> 2、滴答中直接访问即可<br>
3、中断中采用挂起服务调用/钩子来访问;<br> 3、中断中采用挂起服务调用/钩子来访问;<br>
```
#挂起服务调用
iPendSVC(fp);
#挂起服务钩子
void pendsv_hook(void);
```
_服务层临界区不会破坏零中断延迟,当需要系统级的临界区保护时,应首先予以考虑。_ <br> _服务层临界区不会破坏零中断延迟,当需要系统级的临界区保护时,应首先予以考虑。_ <br>
* **全局临界区** <br> * **全局临界区** <br>
@@ -374,14 +382,14 @@ Arm<br>
2、操作FAULTMASK会关闭总中断。<br> 2、操作FAULTMASK会关闭总中断。<br>
3、操作BASEPRI可实现不同掩蔽范围的全局临界区保护不会关闭总中断。<br> 3、操作BASEPRI可实现不同掩蔽范围的全局临界区保护不会关闭总中断。<br>
_全局临界区会破坏零中断延迟,应做为最后的选项,慎重使用。_ <br> _全局临界区会破坏零中断延迟,应做为最后的选项,慎重使用。_ <br>
_CosyOS内核中从来不会进入全局临界区提供此项服务只是为了便于用户对全局公共资源程序过程的保护。_ <br> _CosyOS内核中从来不会进入全局临界区提供此项服务只是为了便于用户对全局公共资源程序过程的保护。_ <br>
任务临界区、全局临界区都支持嵌套功能最大嵌套深度255。<br> 任务临界区、全局临界区都支持嵌套功能最大嵌套深度255。<br>
* **何时应用临界区** <br> * **何时应用临界区** <br>
1、对于CosyOS已经提供服务支持的功能用户直接调用API实现即可无需考虑临界区问题。<br> 1、对于CosyOS已经提供服务支持的功能用户直接调用API实现即可无需考虑临界区问题。<br>
2、只有在任务中访问“事件标志组”和“非原子全局变量”时才需要用户自行进入“任务临界区”参见《API用户参考手册》。<br> 2、只有在任务中访问“事件标志组”和“非原子全局变量”时才需要用户自行进入“任务临界区”参见《API用户参考手册》。<br>
3、用户对其它公共资源程序过程的保护,才需要考虑采用“临界区”或其它互斥访问方式来实现。<br> 3、用户对其它公共资源程序过程的保护,才需要考虑采用“临界区”或其它互斥访问方式来实现。<br>
* **临界区应用原则** <br> * **临界区应用原则** <br>
临界区应遵循快进快出的原则,临界段代码的执行时间应远小于系统滴答周期,这将促使整个系统更加良性的运行。<br> 临界区应遵循快进快出的原则,临界段代码的执行时间应远小于系统滴答周期,这将促使整个系统更加良性的运行。<br>