熊仔 发表于 2023-9-20 16:24:13

8051,80251没办法零延迟,ARM-cortex系列有屏蔽管理的才称得上零中断延迟。

51系列进入临界区,就关闭中断了。其他中断不能响应。

熊仔 发表于 2023-9-20 16:28:27

也可能杨老师一直停留在方法1,我们用的是方法2,他的测试例子所谓的天大的bug用方法1都能测试通过。
有时候方法不一样。没必要追求一样的效果。声明一下就好。

CosyOS 发表于 2023-9-20 16:30:51

熊仔 发表于 2023-9-20 16:24
8051,80251没办法零延迟,ARM-cortex系列有屏蔽管理的才称得上零中断延迟。

51系列进入临界区,就关闭中 ...

我推荐你抽空看下《CosyOS-所有内核全局不关总中断原理》再下结论。





熊仔 发表于 2023-9-20 16:37:49

CosyOS 发表于 2023-9-20 16:30
我推荐你抽空看下《CosyOS-所有内核全局不关总中断原理》再下结论。




好的,抽空看看,研读下。实在想不出来还可以整个系统不关闭EA能完成。看来需要好好学习。
我的认知,只要操作了EA=0,中断就不可能零延迟。

CosyOS 发表于 2023-9-20 16:44:38

熊仔 发表于 2023-9-20 16:37
好的,抽空看看,研读下。实在想不出来还可以整个系统不关闭EA能完成。看来需要好好学习。
我的认知,只 ...

CosyOS虽提供全局临界区给用户,但那只是为了便于用户对全局公共资源和程序过程的保护,CosyOS内核中从来不会进入全局临界区。
你可以研究下Keil RTX4/5是怎样实现Cortex-M3/M4内核全局不关所有中断的,CosyOS的部分方法还是与其比较类似的,但也有很大不同。

熊仔 发表于 2023-9-20 16:56:45

CosyOS 发表于 2023-9-20 16:44
CosyOS虽提供全局临界区给用户,但那只是为了便于用户对全局公共资源和程序过程的保护,CosyOS内核中从来 ...

大致看了下原来关闭这两中断实现的,SysTick_Handler/定时器0中断、PendSV_Handler/其它替代中断
需要深入学习下。

CosyOS 发表于 2023-9-20 17:06:07

本帖最后由 CosyOS 于 2023-9-20 22:17 编辑

熊仔 发表于 2023-9-20 16:56
大致看了下原来关闭这两中断实现的,SysTick_Handler/定时器0中断、PendSV_Handler/其它替代中断
需要深 ...
其实核心原理就以下几点:
1、SysTick、PendSV、任务临界区,三者间是互斥访问的。
2、滴答服务在SysTick中断中执行。
3、任务服务在任务临界区中执行。
4、中断异步服务和任务调度/切换在PendSV中执行。
5、中断同步服务用互斥访问机制。

从而实现了所有内核的MCU全局不关总中断(零中断延迟)。
无论哪种内核的MCU,只要硬件中断不是最低优先级,就可实现零中断延迟。

只是说由于我的精力有限,CosyOS现仅支持8051、80251、Cortex-M全系列,这三类内核。
试想,连51都可实现全局不关总中断(零中断延迟),还有谁是不可以的呢?






杨为民 发表于 2023-9-20 18:28:18

CosyOS 发表于 2023-9-20 16:18
现在,我已经想明白了一件事,不要再称CosyOS是全局不关总中断的RTOS了,全局不关中断的RTOS有很多,
应称 ...

{:4_250:}一并回复:是的,并且你上面的理解很正确,我上面说的“不被打断”,其实不是指“指令流=CPU执行的二进制机器码流”不被打断,是指“进行任务切换这个程序流不被打断”。在任务切换过程中断,跳出个执行“P2=0x55”这类端口控制的硬中断有什么关系?只要把“任务切换这个操作流”保护好了就行。请注意这三个流不是一回事,这也就是实现你的CosyOS目标的理论基础,但我不知道用你们的语言怎么表达,理解就好了

CosyOS 发表于 2023-9-20 19:05:17

杨为民 发表于 2023-9-20 18:28
一并回复:是的,并且你上面的理解很正确,我上面说的“不被打断”,其实不是指“指令流=CPU执 ...

有时就是语言表达的问题,大家所用的词汇不同,其实对事物的理解还是一样的。
页: 1 2 3 [4]
查看完整版本: STC单片机 uC/OS-II核心技术(3):任务切换用软中断时RTOS系统不需要任何关闭总中断