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

Signed-off-by: 零中断延迟的RTOS <cosyos@139.com>
This commit is contained in:
零中断延迟的RTOS
2024-04-09 06:26:03 +00:00
committed by Gitee
parent c1f7a807ef
commit f7a308bd72

View File

@@ -234,25 +234,26 @@ CosyOS-II 中断挂起服务缓存队列PendSV_FIFO已实现所有内
CosyOS与其它RTOS零中断延迟技术的对比。<br>
* **FreeRTOS** <br>
FreeRTOS的零中断延迟有着很大的局限性。<br>
仅Cortex-M3及以上内核(含BASEPRI寄存器支持在脱管的高优先级中断中实现零中断延迟,但同时却不能调用系统服务。<br>
仅Cortex-M3及以上含BASEPRI寄存器的内核支持在脱管的高优先级中断中实现零中断延迟,但同时却不能调用系统服务。<br>
1、不能调用服务又如何实现同步让用户自己实现同步又如何保证被同步任务的及时调度实时性又何从谈起<br>
2、托管的低优先级中断无法实现零中断延迟。<br>
3、其它内核无法实现零中断延迟。<br>
* **Keil RTX4/5** <br>
由SysTick[minpri]、PendSV[minpri]、SVC[minpri+1],构成服务层临界区,再配合互斥访问指令[LDREXSTREX]实现零中断延迟。<br>
1、仅Cortex-M3及以上内核(支持互斥访问指令[LDREX、STREX]支持零中断延迟,其它内核无法实现零中断延迟。<br>
由SysTick[minpri]、PendSV[minpri]、SVC[minpri+1],构成服务层临界区,再配合互斥访问指令[LDREX/STREX/...]实现零中断延迟。<br>
1、仅Cortex-M3及以上支持互斥访问指令的内核支持零中断延迟,其它内核无法实现零中断延迟。<br>
2、建议用户中断不要使用最低两级优先级以免被系统中断抢占导致丢失响应或处理延误。<br>
3、支持零中断延迟的中断中可随意调用服务。<br>
* **CosyOS-I/II** <br>
由SysTick[minpri]、PendSV[minpri]、任务临界区,构成服务层临界区,再配合互斥访问机制实现零中断延迟。<br>
1、所有内核均可实现零中断延迟只要用户中断不是最低优先级就可实现零中断延迟。<br>
2、建议用户中断不要使用最低优先级以免被系统中断抢占导致丢失响应或处理延误。<br>
3、支持零中断延迟的中断中可随意调用服务。<br>
零中断延迟技术对比:
| | 内核条件 | 中断优先级条件 | 可随意调用服务? |
| RTOS | MCU条件 | 中断优先级条件 | 可随意调用服务? |
|--------------|-------------------|-----------|--------|
| FreeRTOS | BASEPRI寄存器 | 脱管的高优先级(用户指定) | :tw-274c: |
| Keil RTX4/5 | 支持互斥访问指令[LDREX/STREX] | 高于最低两级优先级 | :tw-2705: |
| CosyOS-I/II | 无需任何条件,所有内核均可 | 高于最低优先级 | :tw-2705: |
| FreeRTOS | BASEPRI寄存器 | 脱管的高优先级 | :tw-274c: |
| Keil RTX4/5 | 互斥访问指令[LDREX/STREX/...] | 高于最低两级优先级 | :tw-2705: |
| CosyOS-II | 1. 类[JBC]原子访问指令 <br> 2. 类[STR]原子访问指令 && GNU <br> 3. 类[LDREX/STREX]互斥访问指令 | 高于最低优先级 | :tw-2705: |
## 第三章、线程通信