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

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

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

    [LV.7]常住居民III

    5

    主题

    615

    回帖

    2521

    积分

    荣誉版主

    积分
    2521
    发表于 2024-5-3 22:14:23 | 显示全部楼层
    cnwans 发表于 2024-5-3 21:23
    看了一下说明文档,要求配置8级编译器优化,勾选LX51和AX51,以及内存设置为Small。我的现有工程使用STC8H3 ...

    Keil C51 下,如果用 RTOS,编译器优化等级的可选范围为:4~8级
    如果选 0~3级9~11级,都是错误的用法,即使没出问题,也只是没赶上出问题的契机而已。
    请相信我的话,你不会吃亏的。
    如果代码放不下,应设法减少代码或增加flash。


    另外再补充一句,推荐优化等级8级speed或size,speed偏向于优化代码运行速度,size偏向于优化减少代码大小,
    在可选等级中,不仅代码已优化到最小,而且性能也是最为高效的


    点评

    有人会有疑问吗? Keil C51 的优化等级 只有 0~9级 啊, 有 10级、11级 吗?你不是在胡说吗?  详情 回复 发表于 2024-5-3 23:17
    回复 支持 反对 送花

    使用道具 举报

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

    [LV.7]常住居民III

    5

    主题

    615

    回帖

    2521

    积分

    荣誉版主

    积分
    2521
    发表于 2024-5-3 22:45:06 | 显示全部楼层
    杨为民 发表于 2024-5-3 20:13
    本尊你觉得用什么指标来作为“不关闭总中断”的RTOS的“最大的中断响应时间”的指标?
    ...

    对于“零中断延迟的RTOS”,如 CosyOS 来说,“系统最大中断响应延迟时间” 为
    就是说,我们不考虑MCU内核特性的中断响应延迟时间
    而只考虑因系统保护临界段而造成的、“用户中断”不能响应的时间的最大值
    所以,“系统最大中断响应延迟时间” 是相对更科学的说法,而不仅仅是“系统最大关闭总中断时间”。


    “系统最大关闭总中断时间”   仅包括,采用关闭总中断来保护临界段的方法;

    “系统最大中断响应延迟时间”还包括,在最高优先级中断中处理临界段的情况。

    也就是说,“在最高优先级中断中处理临界段的方法”  与  “关闭总中断来保护临界段的方法”
    都会造成
    “用户中断”的响应延迟,它们是“殊途同归”


    回复 支持 反对 送花

    使用道具 举报

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

    [LV.7]常住居民III

    5

    主题

    615

    回帖

    2521

    积分

    荣誉版主

    积分
    2521
    发表于 2024-5-3 23:17:44 | 显示全部楼层
    本帖最后由 CosyOS 于 2024-5-3 23:25 编辑
    CosyOS 发表于 2024-5-3 22:14
    Keil C51 下,如果用 RTOS,编译器优化等级的可选范围为:4~8级。
    如果选 0~3级 或 9~11级,都是错误的用 ...

    有人会有疑问吗?
    Keil C51优化等级 只有 0~9级 啊,
    10级11级 吗?

    你不是在胡说吧?



    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    66

    主题

    714

    回帖

    1万

    积分

    荣誉版主

    积分
    10975
    发表于 2024-5-4 02:43:38 | 显示全部楼层
    fanxsp 发表于 2024-5-3 20:31
    是中断间隔为4us,  系统节拍还是1ms,  因为OSTimeTick()是有预分频的,我配置预分频为250,那么中断间隔 ...
    现在明白了,所以:

    你的4uS的测试方法是正确的,对你的RTOS的测试结论也是正确的,
    这个测试方法值得借鉴推广。
    谢谢你的说明。

    回复 支持 反对 送花

    使用道具 举报

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

    [LV.7]常住居民III

    5

    主题

    615

    回帖

    2521

    积分

    荣誉版主

    积分
    2521
    发表于 2024-5-4 03:30:12 | 显示全部楼层
    CosyOS 的 原则“简单易用”,以极具浪漫主义色彩宏定义,实现高度的面向对象、和良好的易用性
    CosyOS 的 宗旨“零中断延迟”,支持内核均已实现全局不关总中断、零中断延迟,从系统层面保证了用户中断的实时响应。


    每个RTOS都有它的“标签”或是“特色”,这是该RTOS的安身立命之本。
    CosyOS 的标签、特色、就是:易用性零中断延迟
    如果 CosyOS 的 系统滴答中断 采用 NMI 不可屏蔽中断,虽可确保系统节拍的准确无误,
    但这也将导致 CosyOS 的宗旨“零中断延迟”化为泡影,CosyOS 便失去了“灵魂”,必将无立足之地。


    CosyOS 在实现“零中断延迟”的前提下,为保证系统节拍的准确,不得已,也对用户提出了两点要求:
    1、用户中断应遵循快进快出的原则,仅对事件做必要的紧急处理,再同步至“中断服务任务”做后续处理。
         用户中断的最大执行时间应远小于系统滴答周期。
    2、临界区也应遵循快进快出的原则,临界段代码的执行时间应远小于系统滴答周期。


    综上所述,无论在技术上能否实现 Timer0 的 不可屏蔽中断,CosyOS 都从未打算尝试。

    也许有一天,当我的思想达到了新高度,说不定观念就会发生转变。


    最后,用 CosyOS-实时运行模型 来说明一下 CosyOS-设计理念

    【用户中断层】(用户中断:按中断优先级实时抢占、零中断延迟)
               ↓
    【内核服务层】(系统中断:处理内核服务、上下文切换等)
               ↓
    】(任务:按任务优先级实时抢占)



    点评

    (1)“每个RTOS都有它的“标签”或是“特色”,这是该RTOS的安身立命之本。CosyOS 的标签、特色、就是:易用性、零中断延迟。” 点评:确实应该如此,世界上没有十全十美的事情,每个作品的本尊会根据不同的考虑进  详情 回复 发表于 2024-5-4 05:22
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    66

    主题

    714

    回帖

    1万

    积分

    荣誉版主

    积分
    10975
    发表于 2024-5-4 05:22:12 | 显示全部楼层
    本帖最后由 杨为民 于 2024-5-4 05:25 编辑
    CosyOS 发表于 2024-5-4 03:30
    CosyOS 的 原则 是 “简单易用”,以极具浪漫主义色彩的宏定义,实现高度的面向对象、和良好的易用性。
    Cos ...

    (1)“每个RTOS都有它的“标签”或是“特色”,这是该RTOS的安身立命之本。CosyOS 的标签、特色、就是:易用性零中断延迟

    点评:确实应该如此,世界上没有十全十美的事情,每个作品的本尊会根据不同的考虑进行取舍,创造出各具特色的作品,这也是本论坛出现众多的RTOS的原因。
    (2)“如果 CosyOS 的 系统滴答中断 采用 NMI 不可屏蔽中断,虽可确保系统节拍的准确无误,但这也将导致 CosyOS 的宗旨“零中断延迟”化为泡影,CosyOS 便失去了“灵魂”,必将无立足之地。
    点评:我根据自己的实际经验认为,如果CosyOS想采用不可屏蔽中断,也不会导致“零中断延迟”的宗旨化为泡影。
    比如:我移植的uC/OS-II新版本“挑战者x51(TZZx51-uCOS2) V3.30也已经在国外著名的uC/OS-II RTOS上实现了“零中断延迟”,并且系统节拍定时器0是运行在“不可屏蔽中断模式3”上的,同时还允许用户自由地关闭总中断。
    STC单片机 uC/OS-II核心技术(11):uC/OS-II系统对用户程序打开/关闭总中断的响应》(https://www.stcaimcu.com/forum.php?mod=viewthread&tid=4643
    并且挑战者x51(TZZx51-uCOS2) V3.30”在排行榜上的性能比CosyOS-II-STC32G-TEST-V2.1.3-20240410还要好
    排行榜重大宣布:在单片机RTOS领域,STC32G12K128单片机 全面碾压 STM32F103C8T6》(https://www.stcaimcu.com/forum.php?mod=viewthread&tid=7724
    (3)“综上所述,无论在技术上能否实现 Timer0 的 不可屏蔽中断,CosyOS 都从未打算尝试。
    为什么?这正是我的好奇之处。不过你不需要回答这个问题

    点评

    好的杨老师,我再好好思考一下这个问题,争取突破认知的局限。 但我有一个不解的问题是: 当定时器0运行在“不可屏蔽中断模式3”时, 当定时器0中断发生并开始响应时, 一个用户中断也随之发生, 那么,这个用户中断  详情 回复 发表于 2024-5-4 11:57
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 09:41
  • 签到天数: 168 天

    [LV.7]常住居民III

    18

    主题

    608

    回帖

    731

    积分

    高级会员

    打工人

    积分
    731
    发表于 2024-5-4 07:49:17 | 显示全部楼层
    支持一下,学习
    打工人
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 07:25
  • 签到天数: 186 天

    [LV.7]常住居民III

    1

    主题

    166

    回帖

    771

    积分

    高级会员

    积分
    771
     楼主| 发表于 2024-5-4 09:04:08 | 显示全部楼层
    本帖最后由 fanxsp 于 2024-5-4 11:21 编辑

    支持NMI的RTOS, 也是可以实现部份中断的零延迟
    我设想的实现方法:
    1.  把有使用到的中断分为两类,一类是有调用系统服务的,另一类是没有调用系统服务的。
    2.  在portxxx.h 文件中,重新定义宏OSDi()、OSEi(),这两个宏原本是直接关闭和打开总中断,现在改为不关闭总中断,
    只关闭和恢复有调用系统服务的中断,不关闭没有调用系统服务的中断,这样没有调用系统服务的中断就不受临界区的
    影响,实现零延迟
    3. 实现零延迟的中断可以用来处理需要快速响应的信号。
       但是它的使用也有一定限制:
       3.1  不能调用系统服务。
       3.2  如果有用到共享变量的话,用户必需通过设置标志或其它方法实现共享变量的保护。

    4. 如果这个零延迟的中断处理完紧急事务后,还想要调用系统服务,可以用以下两种方法实现:
        4.1  设置标志,在其它任务中查询这个标志,然后调用系统服务。
        4.2  触发一个中断,在中断中调用系统服务。


    在实际的项目中,一般需要快速响应,对临界区十几微秒的延迟都无法容忍的信号是很少的。
    如果项目中有很多需要快速响应的信号,那选用51单片机也是不合适的,必竞还有中断响应时间。一般会选用性能更强的
    MCU、DSP 或 FPGA 来实现。

    点评

    是这个理  发表于 2024-5-4 09:38
    回复 支持 反对 送花

    使用道具 举报

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

    [LV.7]常住居民III

    5

    主题

    615

    回帖

    2521

    积分

    荣誉版主

    积分
    2521
    发表于 2024-5-4 11:57:53 | 显示全部楼层
    杨为民 发表于 2024-5-4 05:22
    (1)“每个RTOS都有它的“标签”或是“特色”,这是该RTOS的安身立命之本。CosyOS 的标签、特色、就是: ...

    好的杨老师,我再好好思考一下这个问题,争取突破认知的局限。
    但我有一个不解的问题是:
    当定时器0运行在“不可屏蔽中断模式3”时,
    当定时器0中断发生并开始响应时,
    一个用户中断也随之发生,
    那么,这个用户中断就要等到定时器0中断最终结束并返回后才能响应,
    对于用户中断来说,就没有达到“零中断延迟”的效果啊,
    整个定时器0中断从开始响应到结束返回的时间,
    就是“系统最大中断响应延迟时间”啊,
    难道是我哪里分析出现了纰漏?
    请杨老师指教!



    点评

    (1)在我学的操作系统理论术语中,临界区保护方法分为“关闭中断”的和“不关闭中断”的两大类。“不关闭中断”的操作系统称为“前后台操作系统”。 (2)在“关闭中断”的操作系统中,又分为“关闭总中断”的和“  详情 回复 发表于 2024-5-4 14:31
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    66

    主题

    714

    回帖

    1万

    积分

    荣誉版主

    积分
    10975
    发表于 2024-5-4 14:31:14 | 显示全部楼层
    CosyOS 发表于 2024-5-4 11:57
    好的杨老师,我再好好思考一下这个问题,争取突破认知的局限。
    但我有一个不解的问题是:
    当定时器0运行 ...

    (1)在我学的操作系统理论术语中,临界区保护方法分为“关闭中断”的和“不关闭中断”的两大类。“不关闭中断”的操作系统称为“前后台操作系统”。
    (2)在“关闭中断”的操作系统中,又分为“关闭总中断”的和“不关闭总中断”的两大类。
    (3)在我学的操作系统理论术语中,只要是有多个中断源的,都存在优先级和硬件扫描原因产生的“中断阻塞”现象。
    (4)传统CPU的NMI中断肯定阻塞其他任何与它“同时”或者“稍后”发生的任何其他中断,这些其他中断肯定会被NMI中断“延迟”,肯定只会在NMI中断完成后才能进入自己的ISR
    (5)关于“对于用户中断来说,就没有达到“零中断延迟”的效果啊”,首“零中断延迟”这个词除了本论坛,我没有在其他任何地方看到过(转发的除外)。
    我想达没有达到效果,应该问发明“零中断延迟”这个词的本尊
    (6)我在本论坛使用“零中断延迟”这个词,只是作为网络语言使用而不是科学语言,只是表示我的RTOS的临界区保护方法与CosyOS一样是属于“不关闭总中断”的类型
    至于“零中断延迟”这个词的科学定义,我到现在也不清楚。就像我到现在也不知道“牛哄哄”的科学意思,我也很纳闷“牛”为什么要“哄哄”呢?不过我有时还会使用“牛哄哄”这个词。
    (7)至于什么是RTOS系统的“系统最大中断响应延迟时间”,uC/OS-II的原著中有讨论(tzz1983网友的移植版程序中有中文的电子版)。
    对于STC单片机RTOS的这个指标,我正在上面的楼层征求大家意见的过程中。
    也许,对于“不关闭总中断”的RTOS(比如CosyOS),整个定时器0中断从开始响应到结束返回的时间,就是“系统最大中断响应延迟时间”,而不是我在排行榜中给出的“0”
    (8)我认为纰漏出在:只有操作系统上的概念分为“关闭总中断”的和“不关闭总中断”的两大类,而由于存在中断阻塞,根本就不存在零中断延迟”这种可能,这与任何操作系统无关







    点评

    感谢杨老师的指教!  详情 回复 发表于 2024-5-4 16:58
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-6-2 03:10 , Processed in 0.072747 second(s), 66 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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