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

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

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

5

主题

1127

回帖

4263

积分

荣誉版主

积分
4263
发表于 2024-5-3 22:14:23 | 显示全部楼层
cnw*** 发表于 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
回复 支持 反对

使用道具 举报 送花

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

5

主题

1127

回帖

4263

积分

荣誉版主

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

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


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

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

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


回复 支持 反对

使用道具 举报 送花

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

5

主题

1127

回帖

4263

积分

荣誉版主

积分
4263
发表于 2024-5-3 23:17:44 | 显示全部楼层
本帖最后由 Cos*** 于 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级 吗?

你不是在胡说吧?



回复 支持 反对

使用道具 举报 送花

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

105

主题

1215

回帖

1万

积分

荣誉版主

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

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

回复 支持 反对

使用道具 举报 送花

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

5

主题

1127

回帖

4263

积分

荣誉版主

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

使用道具 举报 送花

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

105

主题

1215

回帖

1万

积分

荣誉版主

积分
12882
发表于 2024-5-4 05:22:12 | 显示全部楼层
本帖最后由 杨为民 于 2024-5-4 05:25 编辑
Cos*** 发表于 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
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:488
  • 最近打卡:2025-05-02 07:02:30
已绑定手机

27

主题

693

回帖

1954

积分

金牌会员

打工人

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

使用道具 举报 送花

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

1

主题

183

回帖

1863

积分

金牌会员

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

使用道具 举报 送花

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

5

主题

1127

回帖

4263

积分

荣誉版主

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

使用道具 举报 送花

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

105

主题

1215

回帖

1万

积分

荣誉版主

积分
12882
发表于 2024-5-4 14:31:14 | 显示全部楼层
Cos*** 发表于 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, 2025-5-2 09:08 , Processed in 0.200389 second(s), 116 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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