硬汉嵌入式论坛

 找回密码
 立即注册
查看: 459|回复: 6
收起左侧

[μCOS-III] 多个任务只有其中一个任务不运行

[复制链接]

10

主题

21

回帖

51

积分

初级会员

积分
51
发表于 2023-6-26 13:31:49 | 显示全部楼层 |阅读模式
一共8个任务,在运行一段时间(时间不确定、可能几个小时也可能一俩天)后,任务7跑到OSTimeDly延时函数后就不再运行了。剩余的任务都还在运行,比任务7优先级低的任务也还在运行。请问大佬们这可能是什么问题呢?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106678
QQ
发表于 2023-6-27 08:36:27 | 显示全部楼层
考虑任务7里面仅加个串口打印或者LED闪烁,其它功能都注释掉,然后加个OSDly延迟,看看还能正常执行不。可以排查是否是这个任务里面的代码造成的。
回复

使用道具 举报

44

主题

562

回帖

699

积分

金牌会员

积分
699
发表于 2023-6-27 08:57:32 | 显示全部楼层
eric2013 发表于 2023-6-27 08:36
考虑任务7里面仅加个串口打印或者LED闪烁,其它功能都注释掉,然后加个OSDly延迟,看看还能正常执行不。可 ...

最近我调试也遇到这个这样的问题,目前定位跟代码有关系,更确切的说跟一个全局变量有关系,这个全局变量再另个网络任务中有调用。但是至于为什么会这样还想不明白,目前也还没有找到比较合适的优化方案
回复

使用道具 举报

5

主题

519

回帖

534

积分

金牌会员

积分
534
发表于 2023-6-27 10:13:56 | 显示全部楼层
ou513 发表于 2023-6-27 08:57
最近我调试也遇到这个这样的问题,目前定位跟代码有关系,更确切的说跟一个全局变量有关系,这个全局变量 ...

加两个函数,SET,GET。或者信号量、邮箱
回复

使用道具 举报

10

主题

21

回帖

51

积分

初级会员

积分
51
 楼主| 发表于 2023-6-27 11:16:53 | 显示全部楼层
eric2013 发表于 2023-6-27 08:36
考虑任务7里面仅加个串口打印或者LED闪烁,其它功能都注释掉,然后加个OSDly延迟,看看还能正常执行不。可 ...

我定义了四个变量 然后再任务7的不同位置让四个变量+1,再另外一个任务里将这四个变量打印出来。当任务7卡死的时候 这四个变量的值是相同的。类似这样的
while(1)
{
        a++;
        函数1();
        b++;
        函数2();
        c++;
        函数3();
        d++;
        OSTimeDly();
}
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106678
QQ
发表于 2023-6-27 13:51:19 | 显示全部楼层
ou513 发表于 2023-6-27 08:57
最近我调试也遇到这个这样的问题,目前定位跟代码有关系,更确切的说跟一个全局变量有关系,这个全局变量 ...

对于全局变量,如果多个任务写操作的话,得做互斥处理。如果仅是一个任务写,其它任务都是读,给这个全局变量定义前面加__IO,  防止编译器优化会好点。

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106678
QQ
发表于 2023-6-27 13:52:44 | 显示全部楼层
yx0124 发表于 2023-6-27 11:16
我定义了四个变量 然后再任务7的不同位置让四个变量+1,再另外一个任务里将这四个变量打印出来。当任务7 ...

这样锁定还是不过方便,逐步锁定这个任务里面每个函数,看看是那个函数导致的。

ps:优先加大下任务栈。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-29 09:58 , Processed in 0.283025 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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