找回密码
 立即注册
楼主: fan***

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

[复制链接]
  • TA的每日心情
    奋斗
    12 小时前
  • 签到天数: 174 天

    [LV.7]常住居民III

    5

    主题

    580

    回帖

    2351

    积分

    荣誉版主

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

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

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

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

    使用道具 举报

  • TA的每日心情
    奋斗
    17 小时前
  • 签到天数: 172 天

    [LV.7]常住居民III

    1

    主题

    164

    回帖

    711

    积分

    高级会员

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

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

    点评

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

    使用道具 举报

  • TA的每日心情
    奋斗
    12 小时前
  • 签到天数: 174 天

    [LV.7]常住居民III

    5

    主题

    580

    回帖

    2351

    积分

    荣誉版主

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

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

    使用道具 举报

  • TA的每日心情
    奋斗
    17 小时前
  • 签到天数: 172 天

    [LV.7]常住居民III

    1

    主题

    164

    回帖

    711

    积分

    高级会员

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

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

    点评

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

    使用道具 举报

  • TA的每日心情
    奋斗
    12 小时前
  • 签到天数: 174 天

    [LV.7]常住居民III

    5

    主题

    580

    回帖

    2351

    积分

    荣誉版主

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

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

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


    点评

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

    使用道具 举报

  • TA的每日心情
    奋斗
    17 小时前
  • 签到天数: 172 天

    [LV.7]常住居民III

    1

    主题

    164

    回帖

    711

    积分

    高级会员

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

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

    使用道具 举报

    该用户从未签到

    63

    主题

    703

    回帖

    1万

    积分

    荣誉版主

    积分
    10906
    发表于 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系统节拍频率应该选择多少



    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    63

    主题

    703

    回帖

    1万

    积分

    荣誉版主

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

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



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

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


    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    20

    主题

    576

    回帖

    1195

    积分

    荣誉版主

    积分
    1195
    发表于 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
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    63

    主题

    703

    回帖

    1万

    积分

    荣誉版主

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

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

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-18 23:30 , Processed in 0.070598 second(s), 66 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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