mirror of
https://gitee.com/cosyos/cosyos.git
synced 2026-02-05 19:39:42 +08:00
@@ -161,8 +161,9 @@ MCU的核心价值在于中断的使用,实现对紧急事件的及时响应
|
||||
|
||||
_零中断延迟是CosyOS的宗旨,是原则和底线,必须坚决贯彻落实。_ <br>
|
||||
|
||||
### CosyOS-实时运行模型
|
||||
CosyOS-实时运行模型,充分的展示了CosyOS的运行机制,揭示了CosyOS零中断延迟的奥妙。<br>
|
||||
### 零中断延迟原理
|
||||
#### CosyOS-实时运行模型
|
||||
该模型充分的展示了CosyOS的运行机制,揭示了CosyOS零中断延迟的奥妙。<br>
|
||||
* **中断层** 【用户中断按中断优先级实时抢占、零中断延迟】
|
||||
* **用户中断** <br>
|
||||
**->** 中断本地服务的执行<br>
|
||||
@@ -185,12 +186,12 @@ CosyOS-实时运行模型,充分的展示了CosyOS的运行机制,揭示了C
|
||||
* 用户空闲任务[minpri:0]
|
||||
* 系统空闲任务[minpri:0]
|
||||
|
||||
### CosyOS-零中断延迟基本原理
|
||||
#### 零中断延迟基本原理
|
||||
* 服务层中,SysTick、PendSV、任务临界区,三者间是互斥访问的。换言之,整个服务层是一个大临界区(服务层临界区)。<br>
|
||||
* 所有内核服务(中断本地服务除外),均在 **“服务层临界区”** 执行,从而保证服务的 **“操作流”** 不会被打断。<br>
|
||||
* 中断本地服务采用互斥访问机制。<br>
|
||||
|
||||
### 服务详解
|
||||
#### 服务详解
|
||||
* **任务服务**
|
||||
是指在任务中调用的服务,并在任务临界区中执行。
|
||||
* **滴答服务**
|
||||
@@ -204,7 +205,7 @@ CosyOS-实时运行模型,充分的展示了CosyOS的运行机制,揭示了C
|
||||
是指在用户中断中调用的服务不在本地直接执行,而是把服务的相关内容存入局部的结构体中,
|
||||
再把结构体指针存入中断挂起服务缓存队列(PendSV_FIFO),再触发PendSV,而后在PendSV中执行。
|
||||
|
||||
### 互斥访问机制
|
||||
#### 互斥访问机制
|
||||
* **中断中读全局变量** <br>
|
||||
重入访问:如果变量正在被写入,仍可成功读取变量。<br>
|
||||
首先,用户需定义全局变量的副本,并按照指定方式来更新副本。中断中读全局变量时,<br>
|
||||
@@ -217,7 +218,7 @@ CosyOS-实时运行模型,充分的展示了CosyOS的运行机制,揭示了C
|
||||
* **中断中接收消息** <br>
|
||||
互斥访问:如果队列正在被访问,将返回失败(NULL)。<br>
|
||||
|
||||
### 中断挂起服务缓存
|
||||
#### 中断挂起服务缓存
|
||||
CosyOS-II 中断挂起服务缓存队列(PendSV_FIFO),已实现所有内核的MCU均为先入先出队列(FIFO)。<br>
|
||||
中断挂起服务缓存队列,有必要先入先出吗?答案是确定的,如同一中断中提请的各项服务,可能会存在时序逻辑关系。<br>
|
||||
再有,“入队列”与“出队列”的过程必须是原子操作,“操作流”不能被打断。<br>
|
||||
|
||||
Reference in New Issue
Block a user