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

【全部暂停】【方向改为完善官方的FreeRTOS】 随时关EA的 FreeRT

[复制链接]
  • TA的每日心情
    开心
    15 小时前
  • 签到天数: 170 天

    [LV.7]常住居民III

    17

    主题

    371

    回帖

    1355

    积分

    荣誉版主

    积分
    1355
    发表于 2024-3-26 18:18:04 | 显示全部楼层
    强烈反对在STC32上增加PendSv 中断。这个没有性能提升优势,反而原有中断的响应下降。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    17 小时前
  • 签到天数: 145 天

    [LV.7]常住居民III

    39

    主题

    881

    回帖

    4106

    积分

    荣誉版主

    积分
    4106
    发表于 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 系统, 响应中断的实时性, 越快越好?

    点评

    1. 对于STC单片机RTOS,关闭总中断, 采用什么技术才能保证OS 切换任务能正常运行? 答: 采用定时器 0 (模式 3) , 才能保证 关闭总中断, OS 切换任务能正常运行. 2. 对于STC单片机RTOS,采用什么技术才能保证OS 切换  详情 回复 发表于 2024-3-26 21:53
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    17 小时前
  • 签到天数: 145 天

    [LV.7]常住居民III

    39

    主题

    881

    回帖

    4106

    积分

    荣誉版主

    积分
    4106
    发表于 2024-3-26 18:37:30 | 显示全部楼层
    gentleman 发表于 2024-3-26 17:46
    这次 不存在理论上的 bug了吗

    和我的理解没什么差异.

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

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

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

    点评

    而且我用了 中断嵌套计数器啊 1L 更新了  详情 回复 发表于 2024-3-26 18:59
    [attachimg]39692[/attachimg] 这里不算通知了吗 算了我把全部代码发一下吧,找不到合适的例子测试,大家来  详情 回复 发表于 2024-3-26 18:44
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-5-5 08:35
  • 签到天数: 143 天

    [LV.7]常住居民III

    29

    主题

    558

    回帖

    2140

    积分

    荣誉版主

    积分
    2140
     楼主| 发表于 2024-3-26 18:44:56 | 显示全部楼层
    LAOXU 发表于 2024-3-26 18:37
    和我的理解没什么差异.

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

    截图202403261842345922.jpg

    这里不算通知了吗
    算了我把全部代码发一下吧,找不到合适的例子测试,大家来
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-5-5 08:35
  • 签到天数: 143 天

    [LV.7]常住居民III

    29

    主题

    558

    回帖

    2140

    积分

    荣誉版主

    积分
    2140
     楼主| 发表于 2024-3-26 18:59:26 | 显示全部楼层
    LAOXU 发表于 2024-3-26 18:37
    和我的理解没什么差异.

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

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

    你没看仔细吧

    1L 更新了
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    20

    主题

    574

    回帖

    1187

    积分

    荣誉版主

    积分
    1187
    发表于 2024-3-26 19:27:54 | 显示全部楼层
    gentleman 发表于 2024-3-26 17:16
    兄弟参考了你好多代码  这样处理有问题吗
    现在os跑起来了

    首先指出第一个BUG:
    111.PNG

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

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

    点评

    我知道兄弟的意思了 原来的定时器是挂起,等其他中断退出后相应 我这直接给重载了 似乎是不对  详情 回复 发表于 2024-3-26 19:48
    tick东西 本来也不准吧,想准要用其他定时器的 官方那个版本,不就是 低优先级 t0 (是低优先级吧,一会翻代码确认一下) 有嵌套 也不进 t0中断啊 在这给它整准了 不知道会不出问题  详情 回复 发表于 2024-3-26 19:39
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-5-5 08:35
  • 签到天数: 143 天

    [LV.7]常住居民III

    29

    主题

    558

    回帖

    2140

    积分

    荣誉版主

    积分
    2140
     楼主| 发表于 2024-3-26 19:39:06 | 显示全部楼层
    本帖最后由 gentleman 于 2024-3-26 19:40 编辑
    tzz1983 发表于 2024-3-26 19:27
    首先指出第一个BUG:

    有bug好,多来点
    ==========================

    tick东西 本来也不准吧,想准要用其他定时器的



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

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


    点评

    void vTimer0ISR( void ) { UNUSED( pxCurrentTCB ); if (OSIntNesting>0) { xTaskIncrementTick(); __asm { RETI } } ..... } 这样不就好多了,我对Free确实不熟悉,搞起  详情 回复 发表于 2024-3-26 19:50
    你这么理解就难搞了,高优先级阻碍它时,是推迟,不是丢.只要不就整个滴答周期都无法响应.就不会丢  发表于 2024-3-26 19:44
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-5-5 08:35
  • 签到天数: 143 天

    [LV.7]常住居民III

    29

    主题

    558

    回帖

    2140

    积分

    荣誉版主

    积分
    2140
     楼主| 发表于 2024-3-26 19:48:26 | 显示全部楼层
    tzz1983 发表于 2024-3-26 19:27
    首先指出第一个BUG:

    我知道兄弟的意思了



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


    似乎是不对
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    20

    主题

    574

    回帖

    1187

    积分

    荣誉版主

    积分
    1187
    发表于 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确实不熟悉,搞起来太累,没看透也是不敢乱动.

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

    点评

    辛苦兄弟了  详情 回复 发表于 2024-3-26 19:51
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-5-5 08:35
  • 签到天数: 143 天

    [LV.7]常住居民III

    29

    主题

    558

    回帖

    2140

    积分

    荣誉版主

    积分
    2140
     楼主| 发表于 2024-3-26 19:51:53 | 显示全部楼层
    tzz1983 发表于 2024-3-26 19:50
    void vTimer0ISR( void )
    {
        UNUSED( pxCurrentTCB );

    辛苦兄弟了

    点评

    你的这个勾子是不是还没有实际连接函数? 不过没关系,我看懂了. 这个 ISR_Package_CODE(n) 里面的代码还是相差的太多了 我把主要意思一次说一下,代码就靠你自己的揣摩了. 刚才回LAOXU的内容也适合你,"如  详情 回复 发表于 2024-3-26 20:30
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-16 20:35 , Processed in 0.073173 second(s), 67 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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