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

Signed-off-by: 零中断延迟的RTOS <cosyos@139.com>
This commit is contained in:
零中断延迟的RTOS
2024-01-29 16:06:58 +00:00
committed by Gitee
parent 92324d4290
commit ce03ea55b8

View File

@@ -198,29 +198,27 @@ MCU的核心价值在于中断的使用实现对紧急事件的及时响应
是指在滴答中调用的服务,并在滴答中执行。
用户可在滴答钩子、定时中断钩子、定时查询钩子中调用滴答服务。
* **中断服务**
是指在用户中断中调用的服务,分为中断本地服务中断挂起服务。
* **中断本地服务**
是指在用户中断中调用并在本地直接执行的服务,需要互斥访问机制相配合。
* **中断挂起服务**
是指在用户中断中调用的服务不在本地直接执行,而是把服务的相关内容存入局部的结构体中,
再把结构体指针存入中断挂起服务缓存队列PendSV_FIFO再触发PendSV而后在PendSV中执行。
是指在用户中断中调用的服务,分为 **中断本地服务****中断挂起服务**
* **中断本地服务**
是指在用户中断中调用并在本地直接执行的服务,需要互斥访问机制相配合。
* **中断挂起服务**
是指在用户中断中调用的服务不在本地直接执行,而是把服务的相关内容存入局部的结构体中,<br>
再把结构体指针存入中断挂起服务缓存队列PendSV_FIFO再触发PendSV而后在PendSV中执行。
#### 互斥访问机制
* **中断中读全局变量** <br>
重入访问:如果变量正在被写入,仍可成功读取变量。<br>
首先,用户需定义全局变量的副本,并按照指定方式来更新副本。中断中读全局变量时,<br>
需调用 iWhichGVarToRead 来询问应该读哪一个全局变量返回0读正本返回1读副本。<br>
* **中断中接收邮件** <br>
重入访问:如果邮箱正在被写入,仍可成功接收邮件(将读取写入过程所读取的局部邮箱)。<br>
互斥访问如果邮箱正在被写入将返回失败false。<br>
* **中断中接收消息** <br>
互斥访问如果队列正在被访问将返回失败NULL。<br>
#### 中断挂起服务缓存
CosyOS-II 中断挂起服务缓存队列PendSV_FIFO已实现所有内核的MCU均为先入先出队列FIFO。<br>
中断挂起服务缓存队列,有必要先入先出吗?答案是确定的,如同一中断中提请的各项服务,可能会存在时序逻辑关系。<br>
中断挂起服务缓存队列,有必要先入先出吗?答案是确定的,如同一中断中先后提请的各项服务,可能会存在时序逻辑关系。<br>
再有,“入队列”与“出队列”的过程必须是原子操作,“操作流”不能被打断。<br>
### 中断使用注意事项