OpenEdv-开源电子网

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

关于FreeRTOS 堆栈使用的问题

[复制链接]

26

主题

355

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1770
金钱
1770
注册时间
2017-4-1
在线时间
432 小时
发表于 2019-8-3 17:33:34 | 显示全部楼层 |阅读模式
10金钱
如题,目前在调试一个FreeRTOS的程序,之前一直也用这个操作系统,任务堆栈分配一直都设置得足够大。目前该程序想着节约RAM,所以一无意中在今天有发现一个现象:
当我将其它任务关闭时,分配512Byte一直没问题,
但是当我开启其它几个任务后,该任务就会出现卡死,我试着加大任务堆栈分配到2K,又可以正常运行。

所有任务同一优先级,当然目前还没有做堆栈使用大小的测试,我目前的猜想是:
相同优先级多任务执行时,会时间片切换任务,切换时保护现场会耗费资源。但是根据前后堆栈分配来看,
堆栈大小差的有点多!
查相关资料同时发一贴,有遇到类似情况或者有见解的老哥不吝指点..
后续搞清楚了反馈到该贴!

最佳答案

查看完整内容[请看2#楼]

经过测试,确实使用堆栈接近512了,单线程时堆栈使用溢出也没有报错可能时溢出的栈没有被其他任务使用,所以运行也正常
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

26

主题

355

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1770
金钱
1770
注册时间
2017-4-1
在线时间
432 小时
 楼主| 发表于 2019-8-3 17:33:35 | 显示全部楼层
陈皮皮 发表于 2019-8-7 11:38
目前查了相关资料推测:单任务运行时已经溢出,但是溢出的栈是没有其他任务使用的,所以未对程序造成影响!当 ...

经过测试,确实使用堆栈接近512了,单线程时堆栈使用溢出也没有报错可能时溢出的栈没有被其他任务使用,所以运行也正常
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2019-8-4 01:48:11 | 显示全部楼层
具体是什么任务?代码截图看看
回复

使用道具 举报

26

主题

355

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1770
金钱
1770
注册时间
2017-4-1
在线时间
432 小时
 楼主| 发表于 2019-8-5 09:09:36 | 显示全部楼层
正点原子 发表于 2019-8-4 01:48
具体是什么任务?代码截图看看

code.png
每个任务代码都比较多,项目代码不太方便全贴!原因我会再找找谢谢原子哥
回复

使用道具 举报

26

主题

355

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1770
金钱
1770
注册时间
2017-4-1
在线时间
432 小时
 楼主| 发表于 2019-8-7 11:38:12 | 显示全部楼层
目前查了相关资料推测:单任务运行时已经溢出,但是溢出的栈是没有其他任务使用的,所以未对程序造成影响!当多任务开启后,导致栈溢出影响任务运行..后续继续做堆栈监测以验证
回复

使用道具 举报

6

主题

1127

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1656
金钱
1656
注册时间
2019-8-15
在线时间
102 小时
发表于 2019-11-29 16:34:14 | 显示全部楼层
帮顶              
成功没有捷径
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 22:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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