找回密码
 立即注册
楼主: fanxsp

原创极简的51-MCU专用RTOS TinyRTOS51

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

5

主题

1127

回帖

4263

积分

荣誉版主

积分
4263
发表于 2024-5-3 11:38:58 | 显示全部楼层
本帖最后由 CosyOS 于 2024-5-3 14:16 编辑
fan*** 发表于 2024-5-3 11:11
我的系统没有提供这种方法,只能是在不可屏蔽中断中不调用系统服务。因为不可屏蔽中断的目的就是为了快速 ...

我的意思不是说要你在“不可屏蔽中断中”等待,
而是说,
计数器为假,说明当前不在临界区中,你就可以执行服务;
计数器为真,说明当前正在临界区中,你就不能执行服务,只做一个标志位,
然后中断该退出就退出。

等最终临界区退出时,查询这个标志位,如果为真,就清零,并执行相应的服务。

这就是 CosyOS “中断挂起服务”的思想啊!不能立即执行的服务就挂起到临界区中执行。
当然,CosyOS 是中断中调用的大部分服务都直接挂起到PendSV中执行,
没有做是否可在本地直接执行的判断,稍有区别。
回复 支持 反对

使用道具 举报 送花

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

1

主题

183

回帖

1863

积分

金牌会员

积分
1863
发表于 2024-5-3 11:51:12 | 显示全部楼层
本帖最后由 fanxsp 于 2024-5-3 11:53 编辑
Cos*** 发表于 2024-5-3 11:38
我的意思不是说要你在“不可屏蔽中断中”等待,
而是说,
计数器为假,说明当前不在临界区中,你就可以执 ...

这个是一样的啊,因为这个中断的响应时间都被延迟了一个临界区的时间,关中断的话,响应时间也是延迟一个临界区的时间。从中断响应时间上看,没有什么区别。

点评

首先,我说的这个方法,未必是杨老师的意思,杨老师可能另有深意。 单从我说的这个方法来说,可以提供给你参考。 因为它能够让你在不可屏蔽中断中执行服务啊?不管是直接执行还是间接(挂起)执行。 但这个方法也仅  详情 回复 发表于 2024-5-3 12:08
回复 支持 反对

使用道具 举报 送花

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

5

主题

1127

回帖

4263

积分

荣誉版主

积分
4263
发表于 2024-5-3 12:08:14 | 显示全部楼层
fan*** 发表于 2024-5-3 11:51
这个是一样的啊,因为这个中断的响应时间都被延迟了一个临界区的时间,关中断的话,响应时间也是延迟一个 ...

首先,我说的这个方法,未必是杨老师的意思,杨老师可能另有深意。
单从我说的这个方法来说,可以提供给你参考。
因为它能够让你在不可屏蔽中断中执行服务啊?不管是直接执行还是间接(挂起)执行。
但这个方法也仅限只有一个NMI,如果是多个NMI,该方法还需改进、调整。
回复 支持 反对

使用道具 举报 送花

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

1

主题

183

回帖

1863

积分

金牌会员

积分
1863
发表于 2024-5-3 12:20:24 | 显示全部楼层
本帖最后由 fanxsp 于 2024-5-3 12:24 编辑
Cos*** 发表于 2024-5-3 12:08
首先,我说的这个方法,未必是杨老师的意思,杨老师可能另有深意。
单从我说的这个方法来说,可以提供给 ...

我是这样理解,对于中断响应时间,我们关心的不是每一次中断的响应时间,而是最大的中断响应时间。如果按上述方法,那不可屏蔽中断的某一次中断响应时间也许会快一些,但是最大响应时间和关中断是一样的,所以没有太大意义。增加这些服务,系统又变复杂了。我是希望,尽可能的精简。

点评

楼主:我是这样理解,对于中断响应时间,我们关心的不是每一次中断的响应时间,而是最大的中断响应时间。如果按上述方法,那不可屏蔽中断的某一次中断响应时间也许会快一些,但是最大响应时间和关中断是一样的 我  详情 回复 发表于 2024-5-3 20:06
我提出这个方法,只是在试图分析杨老师说的是不是这个意思? 在“嵌套的临界区”的前提下,实现在不可屏蔽中断中执行服务。 至于该方法好不好,是否适用,就是另外一回事了。 我们只是在说,有这样一种方法。  详情 回复 发表于 2024-5-3 14:11
1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
回复 支持 反对

使用道具 举报 送花

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

5

主题

1127

回帖

4263

积分

荣誉版主

积分
4263
发表于 2024-5-3 14:11:00 | 显示全部楼层
本帖最后由 CosyOS 于 2024-5-3 14:19 编辑
fan*** 发表于 2024-5-3 12:20
我是这样理解,对于中断响应时间,我们关心的不是每一次中断的响应时间,而是最大的中断响应时间。如果按 ...

我提出这个方法,只是在试图分析杨老师说的是不是这个意思?
在“嵌套的临界区”的前提下,实现在不可屏蔽中断中执行服务。
至于该方法好不好,是否适用,就是另外一回事了。

我只是在说,有这样一种方法。
正如 CosyOS 也并未采用此方法。


点评

本尊你觉得用什么指标来作为“不关闭总中断”的RTOS的“最大的中断响应时间”的指标?  详情 回复 发表于 2024-5-3 20:13
回复 支持 反对

使用道具 举报 送花

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

1

主题

183

回帖

1863

积分

金牌会员

积分
1863
发表于 2024-5-3 15:07:17 | 显示全部楼层
Cos*** 发表于 2024-5-3 14:11
我提出这个方法,只是在试图分析杨老师说的是不是这个意思?
在“嵌套的临界区”的前提下,实现在不可屏蔽 ...

好的,明白了
回复 支持 反对

使用道具 举报 送花

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

105

主题

1215

回帖

1万

积分

荣誉版主

积分
12882
发表于 2024-5-3 19:40:52 | 显示全部楼层
本帖最后由 杨为民 于 2024-5-3 20:15 编辑

五一节快乐。

(1)其实我的想法很简单:我不明白为什么要用4us=250KHz的系统节拍频率来验证一个RTOS是否可以正常工作在“不可屏蔽中断模式3”?只是想请楼主介绍一下他怎么想的。
(2)另外:本论坛的哪一个(包括楼主的)RTOS的系统节拍频率在250KHz时还能正常工作(当然是在模式0)?请各位本尊自己亲自去试试,反正我自己的无论自编或者移植都不能!
(3)既然我自己的RTOS系统节拍频率在250KHz(模式0)时不能够正常工作,那么我是不是可以得出结论:STC单片机的任何一个定时器的模式0都不能应用于我的RTOS?显然不能!
(4)系统节拍定时器选择模式什么肯定是本尊的权利,每个本尊都有自己的考虑。所以我是想与各位本尊和网友交流一下,听听你们的想法

如果你们RTOS采用“不可屏蔽中断模式3”在技术上是可行的话,你们的RTOS会不会采用模式3?如果不采用是有什么顾虑吗?

(5)我看到各位的RTOS在定时器工作在模式0的时候选择了系统节拍频率是1KHz,那么大家觉得对于我的RTOS的模式3系统节拍频率应该选择多少



回复 支持 反对

使用道具 举报 送花

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

105

主题

1215

回帖

1万

积分

荣誉版主

积分
12882
发表于 2024-5-3 20:06:37 | 显示全部楼层
fan*** 发表于 2024-5-3 12:20
我是这样理解,对于中断响应时间,我们关心的不是每一次中断的响应时间,而是最大的中断响应时间。如果按 ...

楼主:我是这样理解,对于中断响应时间,我们关心的不是每一次中断的响应时间,而是最大的中断响应时间。如果按上述方法,那不可屏蔽中断的某一次中断响应时间也许会快一些,但是最大响应时间和关中断是一样的



我赞同你这个说法:
(1)首先我采用不可屏蔽中断模式3的原因中一点都不包括提高任何一次中断响应时间,而且你的结论“最大响应时间和关中断是一样的”是正确的
现在我理解一点你为什么要将节拍频率提高到250KHz了。

(2)在排行榜中按一次中断的响应时间来排名我知道是不公平的,至少要给出“最大的中断响应时间”的指标,然后用“平均中断响应时间”来排名。但是,我不知道对于CosyOS这类“不关闭总中断”的RTOS,如何测试它的“最大的中断响应时间”的指标。
(3)楼主觉得用RTOS系统测试程序运行中“最大关闭总中断的时间”来作为“最大的中断响应时间”的指标行不行?


回复 支持 反对

使用道具 举报 送花

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

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2024-5-3 20:06:51 | 显示全部楼层
本帖最后由 tzz1983 于 2024-5-3 20:09 编辑

这个不可屏中断,原理是非常简单的.
我第一版移植的uCOS-II,切换任务过程就是允许被中断的.
当时还引起了不小的争论.

现在来描术一下原理:  
1. 为了容易理解,先假设不可屏蔽中断的中断代码什么也没做,
就是执行了几个_nop_(), 此时的不可屏蔽中断的行为可以理解为:
转到中断后占用了几个CPU时钟, 然后就返回了.
这个对OS或者任何应用没有影响吧? 不就是相当于暂停了一下吗?

2. 现在又假设在不可屏蔽中断的中断代码里做了很多活,
比如说执行了P2翻转, 然后更新了自己的计数值重载值. 再然后又把SYS时钟从外部晶振调到了内部IRC,(频率不变))
不管不可屏蔽中断里做了多少活, 只要是不和OS相关就没有问题, 中断返回时, 所有的上下文都会恢复到中断前的模样(编译器保证).
OS得以继续执行代码, 和1所说一样的道理!

点评

本尊你觉得用RTOS系统测试程序运行中“最大关闭总中断的时间”来作为你移植的RTOS的“最大的中断响应时间”的指标行不行?  详情 回复 发表于 2024-5-3 20:11
回复 支持 反对

使用道具 举报 送花

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

105

主题

1215

回帖

1万

积分

荣誉版主

积分
12882
发表于 2024-5-3 20:11:23 | 显示全部楼层
tzz1*** 发表于 2024-5-3 20:06
这个不可屏中断,原理是非常简单的.
我第一版移植的uCOS-II,切换任务过程就是允许被中断的.
当时还引起了不 ...

本尊你觉得用RTOS系统测试程序运行中“最大关闭总中断的时间”来作为你移植的RTOS的“最大的中断响应时间”的指标行不行?
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 09:06 , Processed in 0.118708 second(s), 105 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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