找回密码
 立即注册
楼主: 杨为民

STC单片机 uC/OS-II核心技术(3):任务切换用软中断时RTOS系统不需要任何关闭总中断

[复制链接]

11

主题

340

回帖

929

积分

荣誉版主

积分
929
发表于 2023-9-20 16:24:13 | 显示全部楼层
8051,80251没办法零延迟,ARM-cortex系列有屏蔽管理的才称得上零中断延迟。

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

点评

我推荐你抽空看下《CosyOS-所有内核全局不关总中断原理》再下结论。  详情 回复 发表于 2023-9-20 16:30
你没有认真研究过我的方法怎知不能?世界上没有什么事是不能的,只有想不到。  发表于 2023-9-20 16:26
回复 支持 反对

使用道具 举报 送花

11

主题

340

回帖

929

积分

荣誉版主

积分
929
发表于 2023-9-20 16:28:27 | 显示全部楼层
也可能杨老师一直停留在方法1,我们用的是方法2,他的测试例子所谓的天大的bug用方法1都能测试通过。
有时候方法不一样。没必要追求一样的效果。声明一下就好。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:432
  • 最近打卡:2025-05-01 16:19:56

5

主题

1127

回帖

4263

积分

荣誉版主

积分
4263
发表于 2023-9-20 16:30:51 | 显示全部楼层
熊*** 发表于 2023-9-20 16:24
8051,80251没办法零延迟,ARM-cortex系列有屏蔽管理的才称得上零中断延迟。

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

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

CosyOS-所有内核全局不关总中断原理.md (4.12 KB, 下载次数: 114)



点评

好的,抽空看看,研读下。实在想不出来还可以整个系统不关闭EA能完成。看来需要好好学习。 我的认知,只要操作了EA=0,中断就不可能零延迟。  详情 回复 发表于 2023-9-20 16:37
回复 支持 反对

使用道具 举报 送花

11

主题

340

回帖

929

积分

荣誉版主

积分
929
发表于 2023-9-20 16:37:49 | 显示全部楼层
Cos*** 发表于 2023-9-20 16:30
我推荐你抽空看下《CosyOS-所有内核全局不关总中断原理》再下结论。

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

点评

CosyOS虽提供全局临界区给用户,但那只是为了便于用户对全局公共资源和程序过程的保护,CosyOS内核中从来不会进入全局临界区。 你可以研究下Keil RTX4/5是怎样实现Cortex-M3/M4内核全局不关所有中断的,CosyOS的部分  详情 回复 发表于 2023-9-20 16:44
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:432
  • 最近打卡:2025-05-01 16:19:56

5

主题

1127

回帖

4263

积分

荣誉版主

积分
4263
发表于 2023-9-20 16:44:38 | 显示全部楼层
熊*** 发表于 2023-9-20 16:37
好的,抽空看看,研读下。实在想不出来还可以整个系统不关闭EA能完成。看来需要好好学习。
我的认知,只 ...

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


点评

大致看了下原来关闭这两中断实现的,SysTick_Handler/定时器0中断、PendSV_Handler/其它替代中断 需要深入学习下。  详情 回复 发表于 2023-9-20 16:56
回复 支持 反对

使用道具 举报 送花

11

主题

340

回帖

929

积分

荣誉版主

积分
929
发表于 2023-9-20 16:56:45 | 显示全部楼层
Cos*** 发表于 2023-9-20 16:44
CosyOS虽提供全局临界区给用户,但那只是为了便于用户对全局公共资源和程序过程的保护,CosyOS内核中从来 ...

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

点评

其实核心原理就以下几点: 1、SysTick、PendSV、任务临界区,三者间是互斥访问的。 2、任务服务在任务临界区中执行。 3、中断异步服务和任务调度/切换在PendSV中执行。 4、中断同步服务用互斥访问机制。  详情 回复 发表于 2023-9-20 17:06
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:432
  • 最近打卡:2025-05-01 16:19:56

5

主题

1127

回帖

4263

积分

荣誉版主

积分
4263
发表于 2023-9-20 17:06:07 | 显示全部楼层
本帖最后由 CosyOS 于 2023-9-20 22:17 编辑
熊*** 发表于 2023-9-20 16:56
大致看了下原来关闭这两中断实现的,SysTick_Handler/定时器0中断、PendSV_Handler/其它替代中断
需要深 ...

其实核心原理就以下几点:
1、SysTickPendSV任务临界区,三者间是互斥访问的。

2、滴答服务SysTick中断中执行。
3、任务服务任务临界区中执行。
4、中断异步服务任务调度/切换PendSV中执行。
5、中断同步服务互斥访问机制


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

只是说由于我的精力有限,CosyOS现仅支持8051、80251、Cortex-M全系列,这三类内核。

试想,连51都可实现全局不关总中断(零中断延迟),还有谁是不可以的呢?






回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:16
  • 最近打卡:2025-04-30 08:41:32

105

主题

1215

回帖

1万

积分

荣誉版主

积分
12882
发表于 2023-9-20 18:28:18 | 显示全部楼层
Cos*** 发表于 2023-9-20 16:18
现在,我已经想明白了一件事,不要再称CosyOS是全局不关总中断的RTOS了,全局不关中断的RTOS有很多,
应称 ...

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

点评

有时就是语言表达的问题,大家所用的词汇不同,其实对事物的理解还是一样的。  详情 回复 发表于 2023-9-20 19:05
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:432
  • 最近打卡:2025-05-01 16:19:56

5

主题

1127

回帖

4263

积分

荣誉版主

积分
4263
发表于 2023-9-20 19:05:17 | 显示全部楼层
杨*** 发表于 2023-9-20 18:28
一并回复:是的,并且你上面的理解很正确,我上面说的“不被打断”,其实不是指“指令流=CPU执 ...

有时就是语言表达的问题,大家所用的词汇不同,其实对事物的理解还是一样的。
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:49 , Processed in 0.127101 second(s), 99 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表