硬汉嵌入式论坛

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

[FreeRTOS] FREERTOS的任务切换执行问题

[复制链接]

15

主题

38

回帖

83

积分

初级会员

积分
83
发表于 2017-10-18 15:18:42 | 显示全部楼层 |阅读模式
1.工程建立了8个任务,开始测试时候都是可以的,8个都可以正常运行。
2.后来进行了个别任务的功能增加,修改的是高优先级的两个,因为用的串口打印现象,所以一直以为没问题。
3.修改好了以后,两个任务的功能确实没错,但是发现了其他的6个任务运行不了了。
4.堆栈空间是够用的,因为用打印剩余堆栈大小的方法,看得出还有剩余。
5.另外,在上电后是8个任务可以都运行的,但是大概都运行了一次后,就只剩下2个可以运行了。

有没有人遇到过这个情况啊。泪崩。
回复

使用道具 举报

15

主题

38

回帖

83

积分

初级会员

积分
83
 楼主| 发表于 2017-10-18 15:19:49 | 显示全部楼层
原本的测试代码都还是可以,但是还原回去太累了啊。而且这个问题,好奇怪。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107604
QQ
发表于 2017-10-19 02:41:07 | 显示全部楼层
最大可能是你的高优先级任务一直没有释放CPU权限,检测是这两个任务的那一个造成的。
特别注意,是不是有函数配置有误。
回复

使用道具 举报

15

主题

38

回帖

83

积分

初级会员

积分
83
 楼主| 发表于 2017-10-19 08:48:11 | 显示全部楼层

回 eric2013 的帖子

eric2013:最大可能是你的高优先级任务一直没有释放CPU权限,检测是这两个任务的那一个造成的。
特别注意,是不是有函数配置有误。 (2017-10-19 02:41) 
找到了出问题的地方,不过有点奇怪。

TASK1 :获取TASK1的信号量,100ms最长等待时间,执行完后释放TASK1信号量,释放TASK2信号量。
TASK2:获取TASK2的信号量,直到收到才执行,完了以后释放TASK2信号量。
TASK3:单独任务
TASK4:单独任务

优先级:TASK4>TASK3>TASK2>TASK1.

出现问题的地方,是TASK2结束以后释放了自己的信号量,这一句去掉就正常了,但是这会影响?第二次执行的时候,TASK2释放了信号量之后,执行完,应该会跳到切换到TASK1执行啊。
难道不是?
回复

使用道具 举报

15

主题

38

回帖

83

积分

初级会员

积分
83
 楼主| 发表于 2017-10-19 08:49:21 | 显示全部楼层

回 刘志伟 的帖子

刘志伟:找到了出问题的地方,不过有点奇怪。

TASK1 :获取TASK1的信号量,100ms最长等待时间,执行完后释放TASK1信号量,释放TASK2信号量。
TASK2:获取TASK2的信号量,直到收到才执行,完了以后释放TASK2信号量。
....... (2017-10-19 08:48) 
但是,之前就一直在TASK3,跟TASK4之间切换了。忽略了TASK1,TASK2.
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107604
QQ
发表于 2017-10-20 02:15:48 | 显示全部楼层

回 刘志伟 的帖子

刘志伟:但是,之前就一直在TASK3,跟TASK4之间切换了。忽略了TASK1,TASK2. (2017-10-19 08:49) 
方便的话,看下你的任务代码实现,主要看FreeRTOS那些函数就行。
回复

使用道具 举报

22

主题

29

回帖

95

积分

初级会员

seansun77

积分
95
发表于 2017-10-28 06:53:33 | 显示全部楼层
有没有可能是两个释放量的冲突
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-7 17:05 , Processed in 0.169264 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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