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

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

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:514
  • 最近打卡:2025-05-02 10:18:47

24

主题

515

回帖

990

积分

荣誉版主

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

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

和我的理解没什么差异.

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

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

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

点评

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:217
  • 最近打卡:2024-11-15 09:12:27

29

主题

722

回帖

2790

积分

荣誉版主

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

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

截图202403261842345922.jpg

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:217
  • 最近打卡:2024-11-15 09:12:27

29

主题

722

回帖

2790

积分

荣誉版主

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

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

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

你没看仔细吧

1L 更新了
回复 支持 反对

使用道具 举报 送花

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

33

主题

1079

回帖

2319

积分

荣誉版主

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

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

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

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

点评

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:217
  • 最近打卡:2024-11-15 09:12:27

29

主题

722

回帖

2790

积分

荣誉版主

积分
2790
发表于 2024-3-26 19:39:06 | 显示全部楼层
本帖最后由 gentleman 于 2024-3-26 19:40 编辑
tzz1*** 发表于 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
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:217
  • 最近打卡:2024-11-15 09:12:27

29

主题

722

回帖

2790

积分

荣誉版主

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

我知道兄弟的意思了



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


似乎是不对
回复 支持 反对

使用道具 举报 送花

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

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2024-3-26 19:50:02 | 显示全部楼层
gentl*** 发表于 2024-3-26 19:39
tick东西 本来也不准吧,想准要用其他定时器的


void vTimer0ISR( void )
{
    UNUSED( pxCurrentTCB );

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

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

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

点评

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:217
  • 最近打卡:2024-11-15 09:12:27

29

主题

722

回帖

2790

积分

荣誉版主

积分
2790
发表于 2024-3-26 19:51:53 | 显示全部楼层
tzz1*** 发表于 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, 2025-5-2 20:43 , Processed in 0.228292 second(s), 110 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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