OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5269|回复: 8

RTOS低优先级task无法运行问题

[复制链接]

25

主题

163

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
443
金钱
443
注册时间
2012-4-29
在线时间
38 小时
发表于 2019-4-19 23:27:38 | 显示全部楼层 |阅读模式
请教大家一个问题,RTOS抢占式调度机制情况下,高优先级任务调度次数过于频繁,导致低优先级任务无法运行或者被delay。

这种情况:
1、优化RTOS调度算法是否可以解决?
2、或者,这本就是RTOS的特性,出现这种情况是对的。设计人员不应该允许出现高优先级task ready频率过快的情况,这是属于纯粹的RTOS使用不当?

谢谢!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

41

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5027
金钱
5027
注册时间
2017-2-16
在线时间
811 小时
发表于 2019-4-25 11:11:13 | 显示全部楼层
本帖最后由 HSL 于 2019-4-25 11:12 编辑

1.FreeRTOS没有同优先级的时间片调度,RT-Thread有同优先级时间片调度,可以用RT-Thread
2.RTOS优先级高的一旦ready就要先执行优先级最高的ready的任务(可以用软件定时器,软件定时器的任务要优先级最高,这样在定时器回调函数中运行时间比较短的代码,就不会影响其他的任务)
回复 支持 0 反对 1

使用道具 举报

32

主题

883

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3990
金钱
3990
注册时间
2015-11-14
在线时间
541 小时
发表于 2019-4-22 19:19:25 | 显示全部楼层
高优先级的任务腾出的时间要够,假设3个任务 ,A任务优先级最高,B任务优先级次高,C任务优先级最低,如果每个任务都是1ms的等待,但是A任务执行其他代码的时间用掉了600us,B任务用掉了400us,这个时候C任务就根本没有时间运行
回复 支持 反对

使用道具 举报

3

主题

1906

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4100
金钱
4100
注册时间
2018-8-14
在线时间
695 小时
发表于 2019-4-22 21:40:12 | 显示全部楼层
系统是方便你可以用最适合人类面向过程的思维方法编程, 但它不是万能的, 比如你CPU的处力能力,不会因为用了系统而变大了, 相反是会变小。
你的问题不是用不用系统的问题,是CPU的处理能力,已经不足以在指定时间内,完成你所要求要完成的任务了。
当然这是假定你的任务都是正确的使用资源, 比如有没有用类似Delay这类的死循环函数。
回复 支持 反对

使用道具 举报

18

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
233
金钱
233
注册时间
2018-3-9
在线时间
44 小时
发表于 2019-4-25 15:26:04 来自手机 | 显示全部楼层
把频繁调用的任务设置成低优先级就好了,另外可以看看这个基于STM32的多任务系统内核https://blog.csdn.net/qq_37007823/article/details/88234743
回复 支持 反对

使用道具 举报

4

主题

41

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5027
金钱
5027
注册时间
2017-2-16
在线时间
811 小时
发表于 2019-5-11 15:09:49 | 显示全部楼层
HSL 发表于 2019-4-25 11:11
1.FreeRTOS没有同优先级的时间片调度,RT-Thread有同优先级时间片调度,可以用RT-Thread
2.RTOS优先级高的 ...

1.之前的回答有误,FreeRTOS是支持同优先级任务的时间片调度,configUSE_TIME_SLICING 宏进行配置。
2.FreeRTOS同优先级任务的时间片是默认为一个tick,而RT-Thread是可以在创建任务的时候指定的
回复 支持 反对

使用道具 举报

90

主题

534

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1059
金钱
1059
注册时间
2017-4-12
在线时间
280 小时
发表于 2019-5-29 16:28:35 | 显示全部楼层
HSL 发表于 2019-4-25 11:11
1.FreeRTOS没有同优先级的时间片调度,RT-Thread有同优先级时间片调度,可以用RT-Thread
2.RTOS优先级高的 ...

.FreeRTOS没有同优先级的时间片调度,?没有嘛?我记得有的啊
穷不可怕,可怕的是穷的是我~~~
回复 支持 反对

使用道具 举报

4

主题

41

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5027
金钱
5027
注册时间
2017-2-16
在线时间
811 小时
发表于 2019-5-29 22:04:42 | 显示全部楼层
烈日灼心 发表于 2019-5-29 16:28
.FreeRTOS没有同优先级的时间片调度,?没有嘛?我记得有的啊

FreeRTOS是支持时间片的,时间片为一个tick
回复 支持 反对

使用道具 举报

90

主题

534

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1059
金钱
1059
注册时间
2017-4-12
在线时间
280 小时
发表于 2019-5-30 09:29:19 | 显示全部楼层
HSL 发表于 2019-5-29 22:04
FreeRTOS是支持时间片的,时间片为一个tick

是的,相同优先级的时候,就是用时间片去调度任务点的
穷不可怕,可怕的是穷的是我~~~
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 03:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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