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

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

  [复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:16
  • 最近打卡:2025-04-30 08:41:32

105

主题

1215

回帖

1万

积分

荣誉版主

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

本尊你觉得用什么指标来作为“不关闭总中断”的RTOS的“最大的中断响应时间”的指标?

点评

对于“零中断延迟的RTOS”,如 CosyOS 来说,“系统最大中断响应延迟时间” 为 零。 就是说,我们不考虑MCU内核特性的中断响应延迟时间, 而只考虑因系统保护临界段而造成的、用户中断不能响应的时间的最大值。 所以  详情 回复 发表于 2024-5-3 22:45
CosyOS说了,用"0"中断延迟来描述, 这也是他CosyOS最大的卖点  详情 回复 发表于 2024-5-3 21:10
我认为 "最大关闭总中断的时间" 是RTOS中最重要的指标, 无出其右. 任务切换的时间或效率顶多排在第二, 如果切换任务时不关中断, 那多点时间又能怎么样呢? 90%以上的CPU时间都在用来执行空闲任务,为什么没有人觉得浪  详情 回复 发表于 2024-5-3 20:36
回复 支持 反对

使用道具 举报 送花

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

1

主题

183

回帖

1863

积分

金牌会员

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

你说的没有错,对于不用搬栈的RTOS, 确实是这样的。 但是51的RTOS, 是要搬栈的。中断是会影响堆栈数据的。如果在搬栈的过程中发生中断,就有可能造成数据错误。

点评

正常情况下,51的“搬栈”过程是不怕被中断打断的,所以不用关闭总中断。但你的OS比较特殊,不甚了解。应仔细斟酌,并通过测试程序小心求证。  发表于 2024-5-3 23:45
不会的, 要看你怎么搬, 栈是有方向的, 正常情况下, 只会用到末端的容量, 不会影响之前的. 我这两天也移植了一个51内核的 OS, 还是不关中断移动数据,  详情 回复 发表于 2024-5-3 20:27
回复 支持 反对

使用道具 举报 送花

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

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2024-5-3 20:27:46 | 显示全部楼层
fan*** 发表于 2024-5-3 20:17
你说的没有错,对于不用搬栈的RTOS, 确实是这样的。 但是51的RTOS, 是要搬栈的。中断是会影响堆栈数据的 ...

不会的, 要看你怎么搬, 栈是有方向的, 正常情况下, 只会用到末端的容量, 不会影响之前的.
我这两天也移植了一个51内核的 OS, 还是不关中断移动数据,
回复 支持 反对

使用道具 举报 送花

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

1

主题

183

回帖

1863

积分

金牌会员

积分
1863
发表于 2024-5-3 20:31:29 | 显示全部楼层
杨*** 发表于 2024-5-3 19:40
五一节快乐。

(1)其实我的想法很简单:我不明白为什么要用4us=250KHz的系统节拍频率来验证一个RTOS是否 ...

是中断间隔为4us,  系统节拍还是1ms,  因为OSTimeTick()是有预分频的,我配置预分频为250,那么中断间隔为4us时,系统节拍就是 4us*250=1ms.
测试时要把中断间隔设为这么短,是为了确保在任务切换过程中会发生中断。因为任务切换的时间很短,只有15us左右,程序的大部份时间都是工作在空闲任务的。如果把中断间隔的时间设为比较长,比如1ms, 那么中断大概率是发生在空闲任务的,就不能确保在任务切换过程中会发生中断。而我们测试的目的,就是为了测试在任务切换过程中发生中断时,程序能否正常工作。如果在任务切换过程中没有发生中断,就达不到这个目的。

点评

现在明白了,所以: 你的4uS的测试方法是正确的,对你的RTOS的测试结论也是正确的,这个测试方法值得借鉴推广。 谢谢你的说明。  详情 回复 发表于 2024-5-4 02:43
1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
回复 支持 反对

使用道具 举报 送花

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

33

主题

1079

回帖

2319

积分

荣誉版主

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

我认为 "最大关闭总中断的时间" 是RTOS中最重要的指标, 无出其右.
任务切换的时间或效率顶多排在第二, 如果切换任务时不关中断, 那多点时间又能怎么样呢?
90%以上的CPU时间都在用来执行空闲任务,为什么没有人觉得浪费?
而几到几十微秒的切换时间就那么珍贵了?

还是举例来说明: 假设串口波率为 230400,
UART中断接收模式,  约43微秒就可能收到下一字节数据, 如果关中断时间接近43微秒,
就是导致串口接收数据被覆盖,其它高速中断亦是如此.
但是, 不关中断的任务切换, 就算达到100微秒也不会引起此类问题.
中断响应是系统中最要的, 而任务切换时间只关系到任务响应, 一般情况下任务响应没有这么苛克的要求.

回复 支持 反对

使用道具 举报 送花

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

1

主题

183

回帖

1863

积分

金牌会员

积分
1863
发表于 2024-5-3 20:39:10 | 显示全部楼层
本帖最后由 fanxsp 于 2024-5-3 20:53 编辑
tzz1*** 发表于 2024-5-3 20:27
不会的, 要看你怎么搬, 栈是有方向的, 正常情况下, 只会用到末端的容量, 不会影响之前的.
我这两天也移植 ...

没错啊,我也是这么做的,但是程序设计有没错,要通过测试来验证,这个测试的目的,就是要测试搬栈的顺序没有错,当在搬栈的过程中发生不可屏蔽中断时,程序能正常运行。之所以要把不可屏蔽中断的中断间隔设为几个us,就是为了确保在搬栈的过程中,有发生不可屏蔽中断,这样才能达到测试、验证的目的。

点评

嗯 我想信你, 写代码这么规范的, 肯定很严谨哈  发表于 2024-5-3 20:48
回复 支持 反对

使用道具 举报 送花

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

33

主题

1079

回帖

2319

积分

荣誉版主

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

CosyOS说了,用"0"中断延迟来描述, 这也是他CosyOS最大的卖点
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-05-01 21:22:06

0

主题

2

回帖

46

积分

新手上路

积分
46
发表于 2024-5-3 21:23:28 | 显示全部楼层
看了一下说明文档,要求配置8级编译器优化,勾选LX51和AX51,以及内存设置为Small。我的现有工程使用STC8H3K64用的9级编译器优化(8级编译文件远超过64K),未勾选LX51和AX51(勾选后const太大),内存设置为Large(变量太多),是不是没法用上这个TinyOS。

点评

Keil C51 下,如果用 RTOS,编译器优化等级的可选范围为:4~8级。 如果是 0~3级 或 9~11级,都是错误的用法,即使没出问题,也只是没赶上出问题的契机而已。 请相信我的话,你不会吃亏的。 如果代码放不下,应设法减  详情 回复 发表于 2024-5-3 22:14
回复 支持 反对

使用道具 举报 送花

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

1

主题

183

回帖

1863

积分

金牌会员

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

现有的情况是,只能  LX51 AX51  small  8级优化
回复 支持 反对

使用道具 举报 送花

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

5

主题

1127

回帖

4263

积分

荣誉版主

积分
4263
发表于 2024-5-3 22:03:08 | 显示全部楼层
我来报到了,刚才一直再忙写代码呢,我先看一下大家都在讨论什么?
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 13:19 , Processed in 0.190169 second(s), 120 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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