杨为民 发表于 2024-5-3 20:13:28

CosyOS 发表于 2024-5-3 14:11
我提出这个方法,只是在试图分析杨老师说的是不是这个意思?
在“嵌套的临界区”的前提下,实现在不可屏蔽 ...

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

fanxsp 发表于 2024-5-3 20:17:10

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

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

tzz1983 发表于 2024-5-3 20:27:46

fanxsp 发表于 2024-5-3 20:17
你说的没有错,对于不用搬栈的RTOS, 确实是这样的。 但是51的RTOS, 是要搬栈的。中断是会影响堆栈数据的 ...

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

fanxsp 发表于 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, 那么中断大概率是发生在空闲任务的,就不能确保在任务切换过程中会发生中断。而我们测试的目的,就是为了测试在任务切换过程中发生中断时,程序能否正常工作。如果在任务切换过程中没有发生中断,就达不到这个目的。

tzz1983 发表于 2024-5-3 20:36:27

杨为民 发表于 2024-5-3 20:13
本尊你觉得用什么指标来作为“不关闭总中断”的RTOS的“最大的中断响应时间”的指标?
...

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

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

fanxsp 发表于 2024-5-3 20:39:10

本帖最后由 fanxsp 于 2024-5-3 20:53 编辑

tzz1983 发表于 2024-5-3 20:27
不会的, 要看你怎么搬, 栈是有方向的, 正常情况下, 只会用到末端的容量, 不会影响之前的.
我这两天也移植 ...
没错啊,我也是这么做的,但是程序设计有没错,要通过测试来验证,这个测试的目的,就是要测试搬栈的顺序没有错,当在搬栈的过程中发生不可屏蔽中断时,程序能正常运行。之所以要把不可屏蔽中断的中断间隔设为几个us,就是为了确保在搬栈的过程中,有发生不可屏蔽中断,这样才能达到测试、验证的目的。

tzz1983 发表于 2024-5-3 21:10:47

杨为民 发表于 2024-5-3 20:13
本尊你觉得用什么指标来作为“不关闭总中断”的RTOS的“最大的中断响应时间”的指标?
...

CosyOS说了,用"0"中断延迟来描述, 这也是他CosyOS最大的卖点

cnwans 发表于 2024-5-3 21:23:28

看了一下说明文档,要求配置8级编译器优化,勾选LX51和AX51,以及内存设置为Small。我的现有工程使用STC8H3K64用的9级编译器优化(8级编译文件远超过64K),未勾选LX51和AX51(勾选后const太大),内存设置为Large(变量太多),是不是没法用上这个TinyOS。

fanxsp 发表于 2024-5-3 21:39:23

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

现有的情况是,只能LX51 AX51small8级优化

CosyOS 发表于 2024-5-3 22:03:08

我来报到了,刚才一直再忙写代码呢,我先看一下大家都在讨论什么?
页: 3 4 5 6 7 8 9 10 11 12 [13] 14 15 16 17 18 19 20 21 22
查看完整版本: 原创极简的51-MCU专用RTOS TinyRTOS51