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

单片机RTOS实时响应时间排行榜重大宣布:STC32G12K128单片机 全面碾压 STM32F103C

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-04-30 07:46:22

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2024-5-11 14:32:10 | 显示全部楼层
TinyRTOS51  的0中断延迟, 和 FreeRTOS 不受OS控制的 高优中断,属于一个类型,我之前做UCOSII 时也有过相关的概念,

这种类型,高优确实能做到零中断延迟,作为代价,不能调用任何OS服务。

这是和 CosyOS不一样的地方。

从全局来看,TinyRTOS51   和 FreeRTOS 都不算是从内核上支持  零中断延迟的

点评

我对你最近给出的作品 uC/OS-II@STC8H, 51核移植版本的点评是:“uC/OS-II@STC8H,从内核上是支持零中断延迟的”。 我的这个评价作为本尊的你觉得是正确的吗?  详情 回复 发表于 2024-5-11 15:15
回复 支持 反对

使用道具 举报 送花

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

5

主题

1127

回帖

4263

积分

荣誉版主

积分
4263
发表于 2024-5-11 14:32:40 | 显示全部楼层
杨*** 发表于 2024-5-11 14:04
这是你在62楼的回答:

据我所知,在 RTOS 当中,在高优先级的可实现0中断延迟的中断中,

当然承认啊,不仅是TinyRTOS,其它的 RTOS 我也承认。


点评

(1)承认就好。以后不用再争论“天下唯几”了,也不用像铁杆粉丝一样再争论谁先进谁落后了,也别指点江山讨论天下谁被谁淘汰了。 (2)关于临界区保护要不要关闭总中断,其实只是作者根据权衡各种利弊的一种选择,  详情 回复 发表于 2024-5-11 15:09
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:501
  • 最近打卡:2025-05-01 14:43:21

1

主题

183

回帖

1863

积分

金牌会员

积分
1863
发表于 2024-5-11 14:55:45 | 显示全部楼层
本帖最后由 fanxsp 于 2024-5-11 15:21 编辑
tzz1*** 发表于 2024-5-11 14:32
TinyRTOS51  的0中断延迟, 和 FreeRTOS 不受OS控制的 高优中断,属于一个类型,我之前做UCOSII 时也有过相 ...

这个我知道,两者实现方法是不一样的,我是认为两者的实际效果是一样的。CosyOS可以直接调用系统服务,这一点比较方便但是调用系统服务也会被系统延迟。临界区是客观存在的,系统服务都不能在临界区运行,无论用什么方法都一样。不受OS影响的高优先级中断,用户通过一些办法,比如设标志或触发中断,也是可以调用系统服务的,只是这种调用也是会被系统延迟。CosyOS虽然可以直接调用系统服务,但是也会被系统延迟,从效果上说两者是一样的。这个单单从理论上,很不好讨论。要通地一个具体的应用场景,比较两者的应用情况,才有办法讨论。
FreeRTOS   和  ucos ,都可以通过不受OS影响的高优先级中断,达到相同的效果。

点评

你所说的:“在不受OS影响的高优先级中断中,通过设置标志再触发一个低优先级中断,在这个低优先级中断中执行服务”, 其实,在思想上和 CosyOS 就是一致的了,都是挂起到低优先级中断中执行服务。 不同的是,CosyO  详情 回复 发表于 2024-5-12 16:22
在中断里不是非要调用OS服务的,比如说我只是改变一个IO的输出电平。 用FreeRTOS的办法是受限的,他只能是指定的哪些优先级可以不受OS管理, 而另一种是,一开始就是除了和pendSV同优先级以外的任何中断都可以避开p  详情 回复 发表于 2024-5-11 15:48
回复 支持 反对

使用道具 举报 送花

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

105

主题

1215

回帖

1万

积分

荣誉版主

积分
12882
发表于 2024-5-11 15:09:28 | 显示全部楼层
Cos*** 发表于 2024-5-11 14:32
当然承认啊,不仅是TinyRTOS,其它的 RTOS 我也承认。

(1)承认就好。以后不用再争论“天下唯几”了,也不用像铁杆粉丝一样再争论谁先进谁落后了,也别指点江山讨论天下谁被谁淘汰了。
(2)关于临界区保护要不要关闭总中断,其实只是作者根据权衡各种利弊的一种选择,好的作品通常把这种选择留给用户
我很赞同你在你的“CosyOS-II-STM32F4”给用户的选择,全文摘抄于下,作为对你M4上的CosyOS-II的点评,其余的等STC33M出来后,根据官方的平台是什么在讨论。
// <o> 系统方案配置
// <0=> 全局寄存器变量 <1=> 互斥访问指令 <2=> 关中断
// <i> 方案一、全局寄存器变量
// <i> 该方案适用于所有ARM内核并具有最高的性能,可实现全局不关总中断、零中断延迟。但要求用户必须做到以下三点注意事项:
// <i> (1) 编译器必须开启对GNU/GCC的支持。
// <i> (2) 项目中所有C文件(CosyOS系统文件除外)均需直接或间接包含os_link.h,以声明全局寄存器变量r10、r11。
// <i> (3) 部分标准库/微库函数不能被调用(如printf),原因是它们已经被编译使用了r10、r11。
// <i> 方案二、互斥访问指令
// <i> 该方案仅适用于Cortex-M3/M4/M7等支持[LDREX/STREX]指令的内核,可实现全局不关总中断、零中断延迟。
// <i> 该方案不需要方案一中叙述的三点注意事项。
// <i> 方案三、关中断
// <i> 该方案适用于所有ARM内核,并具有极短的、确定的关闭总中断时间(包括开中断在内,不超过10个指令周期)。
// <i> 该方案,内核关闭总中断仅发生在中断挂起服务装载器中的__LOAD段。
// <i> 该方案不需要方案一中叙述的三点注意事项。
// <i> 总结:
// <i> 简单来说,方案一适用于高手,方案二适用于特定的内核,方案三适用于小白。
#define MCUCFG_SYSSCHEME                1




(2)其实“关闭总中断的”临界区保护方法本质上只有一种,就是关闭总中断,其他差别无非是能否嵌套和如何实现等。



(3)但是“不关闭总中断的”临界区保护方法却又很多种,尤其对不同架构的单片机就有不同的种类,比如你的CosyOS。
而现在看来在STC单片机上能实现“零中断延迟”的的RTOS远不止一种,而这些能实现“零中断延迟”的方法肯定各不相同,以后大家多交流就好






点评

是的,杨老师讲的 非常有道理,专家教授的水平就是不一样。 向杨老师学习! 我以前说的话确实不妥、有些过激, 实际上每种方法都有他的优势和劣势,没有绝对的好或不好, 都是权衡利弊,做出的选择。 正因为有各种各  详情 回复 发表于 2024-5-11 15:19
回复 支持 反对

使用道具 举报 送花

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

105

主题

1215

回帖

1万

积分

荣誉版主

积分
12882
发表于 2024-5-11 15:15:10 | 显示全部楼层
tzz1*** 发表于 2024-5-11 14:32
TinyRTOS51  的0中断延迟, 和 FreeRTOS 不受OS控制的 高优中断,属于一个类型,我之前做UCOSII 时也有过相 ...

我对你最近给出的作品 uC/OS-II@STC8H, 51核移植版本的点评是:
uC/OS-II@STC8H, 从内核上是支持零中断延迟的”。


我的这个评价作为本尊的你觉得是正确的吗



点评

可以这样认为,其实大家都知道怎么回事。 如果说,在高优中断里不调用OS服务,基本上都是零改就能实现的事情。  详情 回复 发表于 2024-5-11 15:37
回复 支持 反对

使用道具 举报 送花

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

5

主题

1127

回帖

4263

积分

荣誉版主

积分
4263
发表于 2024-5-11 15:19:37 | 显示全部楼层
杨*** 发表于 2024-5-11 15:09
(1)承认就好。以后不用再争论“天下唯几”了,也不用像铁杆粉丝一样再争论谁先进谁落后了,也别指点江 ...

是的,杨老师讲的 非常有道理,专家教授的水平就是不一样。
向杨老师学习!
我以前说的话确实不妥、有些过激,
实际上每种方法都有他的优势和劣势,没有绝对的好或不好,
都是权衡利弊,做出的选择。
正因为有各种各样的方法和技术手段,世界才因此而缤纷多彩!



回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-04-30 07:46:22

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2024-5-11 15:37:36 | 显示全部楼层
杨*** 发表于 2024-5-11 15:15
我对你最近给出的作品 uC/OS-II@STC8H, 51核移植版本的点评是:
“uC/OS-II@STC8H, 从内核上是支持零中断 ...

可以这样认为,其实大家都知道怎么回事。
如果说,在高优中断里不调用OS服务,基本上都是零改就能实现的事情。

点评

(1)回答正确,你最近给出的作品 uC/OS-II@STC8H确实是一个“能在高优先级零延迟中断”中调用系统服务的RTOS。祝贺你的这个作品成为本论坛“零中断延迟”RTOS的第二匹黑马。 (2)这是你的测试程序中的测试中断ISR  详情 回复 发表于 2024-5-11 16:29
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-04-30 07:46:22

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2024-5-11 15:48:44 | 显示全部楼层
fan*** 发表于 2024-5-11 14:55
这个我知道,两者实现方法是不一样的,我是认为两者的实际效果是一样的。CosyOS可以直接调用系统服务,这 ...

在中断里不是非要调用OS服务的,比如说我只是改变一个IO的输出电平。
用FreeRTOS的办法是受限的,他只能是指定的哪些优先级可以不受OS管理,
而另一种是,一开始就是除了和pendSV同优先级以外的任何中断都可以避开pendSV(也就是避开OS)先做自己的事情,然后再去执行OS服务。这就是区别。
别把OS服务看得那么重,或许我要做的不是OS服务呢?其次就是OS服务本身就应该排在中断代码之后来执行。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:501
  • 最近打卡:2025-05-01 14:43:21

1

主题

183

回帖

1863

积分

金牌会员

积分
1863
发表于 2024-5-11 16:08:05 | 显示全部楼层
本帖最后由 fanxsp 于 2024-5-11 16:12 编辑
tzz1*** 发表于 2024-5-11 15:48
在中断里不是非要调用OS服务的,比如说我只是改变一个IO的输出电平。
用FreeRTOS的办法是受限的,他只能 ...

如果是只是改变IO电平的话,那也是一样的。FreeRTOS的不受OS管理的高优先级中断,具体是怎么实现的,我不是很清楚。我的系统是,只要是没有调用系统服务的中断且优先级不低于受OS管理的中断,就可以指定为不受OS管理。不受OS管理的中断,除了不能调用系统服,其它都可以。具体做法是,在OSDi(), OSEi()在两个宏里面,不关闭和恢复EA,只关闭和恢复受OS管理的中断,不管不受OS管理的中断。

点评

好吧,也是。 认知是一样的,就不为了说法不一致而伤筋动骨了。 M3是用优先级划一条线. 你是用进出临界区的方法的多元化来实现。 只是因为硬件不一样,最终是走到一起去的,这么说应该是对的吧?  详情 回复 发表于 2024-5-11 16:12
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-04-30 07:46:22

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2024-5-11 16:12:57 | 显示全部楼层
fan*** 发表于 2024-5-11 16:08
如果是只是改变IO电平的话,那也是一样的。FreeRTOS的不受OS管理的高优先级中断,具体是怎么实现的,我不 ...

好吧,也是。
认知是一样的,就不为了说法不一致而伤筋动骨了。
M3是用优先级划一条线.
你是用进出临界区的方法的多元化来实现。
只是因为硬件不一样,最终是走到一起去的,这么说应该是对的吧?

点评

是的,其实道理大家都懂,殊途同归,只是大家权衡利蔽后的选择,尽量以最小的代价来实现目的。  发表于 2024-5-11 16:25
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 04:26 , Processed in 0.234114 second(s), 118 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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