社区闲人 发表于 2024-3-26 18:18:04

强烈反对在STC32上增加PendSv 中断。这个没有性能提升优势,反而原有中断的响应下降。

LAOXU 发表于 2024-3-26 18:21:11

1. 对于STC单片机RTOS,关闭总中断, 采用什么技术才能保证OS 切换任务能正常运行?
答: 采用定时器 0 (模式 3) , 才能保证 关闭总中断, OS 切换任务能正常运行.

2. 对于STC单片机RTOS,采用什么技术才能保证OS 切换任务的实时性, 越快越好?
答: 采用定时器 0 (模式 3)直接切换, 才能保证OS 切换任务的实时性, 最快.
tzz1983 强调的是 通下 模拟 PendSv 中断(最低优先级) 来切换, OS 切换任务的实时性差,
但用户中断响应的实时性提高了, 其实我也偏向于 tzz1983 方案.
我理解为, 整个 os系统, 实际上是个用软件模拟 cpu 的硬件功能, 处于最低优先级及以下运行,
要求真正有实时性的任务(非os任务,高级中断)让位给用户中断, 其任务优先级, 其本质
是 os(最低优先级) 处理哪个任务优先运行.

保证OS 切换任务的实时性, 越快越好?
应该是我描述不清.
现更正为, 保证OS 系统, 响应中断的实时性, 越快越好?

-----------------------------------------------------------------------------------

这个技术探讨话题, 现更正如下:
1. 对于STC单片机RTOS,关闭总中断, 采用什么技术才能保证OS 切换任务能正常运行?
2. 对于STC单片机RTOS,采用什么技术才能保证OS 系统, 响应中断的实时性, 越快越好?

LAOXU 发表于 2024-3-26 18:37:30

gentleman 发表于 2024-3-26 17:46
这次 不存在理论上的 bug了吗

和我的理解没什么差异.

中断中 不用中断嵌套计数器,

本质是用户中断没有通知 os

任务切换放在最低级没问题, 如放在最高级, 就有一大堆问题等着攻克.

gentleman 发表于 2024-3-26 18:44:56

LAOXU 发表于 2024-3-26 18:37
和我的理解没什么差异.

中断中 不用中断嵌套计数器,




这里不算通知了吗{:4_267:}
算了我把全部代码发一下吧,找不到合适的例子测试,大家来

gentleman 发表于 2024-3-26 18:59:26

LAOXU 发表于 2024-3-26 18:37
和我的理解没什么差异.

中断中 不用中断嵌套计数器,

而且我用了 中断嵌套计数器啊

你没看仔细吧{:4_168:}

1L 更新了

tzz1983 发表于 2024-3-26 19:27:54

gentleman 发表于 2024-3-26 17:16
兄弟参考了你好多代码这样处理有问题吗
现在os跑起来了



首先指出第一个BUG:


只要嵌套就直接退出????
OS 滴答不用跑了? 只要嵌套就丢TICK ??
正确的做法应该是除了不切换任务,别的都需要.

代码还没下载,这样搞得我好累呀{:lol:} 你自己沉淀一下,我等会去看看

gentleman 发表于 2024-3-26 19:39:06

本帖最后由 gentleman 于 2024-3-26 19:40 编辑

tzz1983 发表于 2024-3-26 19:27
首先指出第一个BUG:

有bug好,多来点{:4_188:}
==========================
tick东西 本来也不准吧,想准要用其他定时器的{:4_167:}



官方那个版本,不就是 低优先级 t0(是低优先级吧,一会翻代码确认一下)

有嵌套 也不进 t0中断啊
在这给它整准了 不知道会不出问题


gentleman 发表于 2024-3-26 19:48:26

tzz1983 发表于 2024-3-26 19:27
首先指出第一个BUG:




我知道兄弟的意思了



原来的定时器是挂起,等其他中断退出后相应
我这直接给重载了


似乎是不对

tzz1983 发表于 2024-3-26 19:50:02

gentleman 发表于 2024-3-26 19:39
tick东西 本来也不准吧,想准要用其他定时器的





void vTimer0ISR( void )
{
    UNUSED( pxCurrentTCB );

    if (OSIntNesting>0)
    {
      xTaskIncrementTick();
      __asm   { RETI }
    }
    .....
}

这样不就好多了,我对Free确实不熟悉,搞起来太累,没看透也是不敢乱动.

底层的东西很考细心的,我再帮你看看勾子那一部分,其它的就不看了, 这样搞得我累死,理解一下

gentleman 发表于 2024-3-26 19:51:53

tzz1983 发表于 2024-3-26 19:50
void vTimer0ISR( void )
{
    UNUSED( pxCurrentTCB );


辛苦兄弟了{:4_197:}
页: 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15 16 17
查看完整版本: 【全部暂停】【方向改为完善官方的FreeRTOS】 随时关EA的 FreeRT