搜索
bottom↓
回复: 12

嵌入式操作系统中任务的堆栈大小应该如何分配

[复制链接]

出0入0汤圆

发表于 2014-12-24 21:41:58 | 显示全部楼层 |阅读模式
我用的freeRTOS,建了8个任务,其中7个给的堆栈大小是512*4Bytes,最后一个给的是4096*4Bytes,再新建任务的时候,发现内存就不够用了。

最后这个任务,之前也是给的512,结果发现任务执行就不对,一直增大到4096才正常运行。

之前都没有用过嵌入式操作系统,这是第一次用。不知道对于任务的堆栈大小的设置应该采用什么方法,还望论坛的朋友们能够传授一点知识!

出0入0汤圆

发表于 2014-12-24 22:34:37 | 显示全部楼层
要那么大内存? 没用过,不了解, 是不是你的任务本身需要那个的内存?

出0入0汤圆

 楼主| 发表于 2014-12-24 22:38:15 | 显示全部楼层
freeRTOS中有一个 uxTaskGetStackHighWaterMark 函数,它可以查看当前任务的堆栈剩余大小。

链接是这个函数的使用说明:http://www.freertos.org/uxTaskGetStackHighWaterMark.html

出0入0汤圆

 楼主| 发表于 2014-12-24 22:42:24 | 显示全部楼层
lxm 发表于 2014-12-24 22:34
要那么大内存? 没用过,不了解, 是不是你的任务本身需要那个的内存?

应该是我分配的过大了,刚才用 uxTaskGetStackHighWaterMark 这个函数测了一下,好像不需要那么大的堆栈。

只是对这大小的分配还是感觉到有些迷惑,没有方向感。

我记得KEIL会生成一个函数调用以及堆栈的相关的文件,htm格式的 —— Static Call Graph for image

不知道这个文件是否有帮助,不太会看这个东西

出0入0汤圆

发表于 2014-12-24 22:56:26 | 显示全部楼层
考虑任务的局部变量有多少

出0入0汤圆

 楼主| 发表于 2014-12-24 23:10:26 | 显示全部楼层
ludikn 发表于 2014-12-24 22:56
考虑任务的局部变量有多少

任务当中调用的函数的局部变量也得考虑进来吧,感觉这有点庞大啊

出0入0汤圆

发表于 2014-12-25 08:34:41 来自手机 | 显示全部楼层
IAR有FreeRTOS插件,任务的各种信息都有显示哦

出0入0汤圆

发表于 2014-12-25 08:35:19 | 显示全部楼层
局部变量,调用层数还有递归都会影响栈大小

出0入0汤圆

 楼主| 发表于 2014-12-25 09:15:40 | 显示全部楼层
tomyqg 发表于 2014-12-25 08:34
IAR有FreeRTOS插件,任务的各种信息都有显示哦

用的是KEIL,这个开发环境有这个工具吗?

出0入0汤圆

发表于 2014-12-25 11:17:54 来自手机 | 显示全部楼层
论坛里搜"freertos trace"

出0入0汤圆

发表于 2014-12-25 11:21:19 | 显示全部楼层
同样想知道 以前也有这问题

出100入101汤圆

发表于 2014-12-25 12:52:09 | 显示全部楼层
关注下   

出0入0汤圆

发表于 2014-12-31 11:03:05 | 显示全部楼层
IAR里有插件
有助调试UCOS之类的
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-9 06:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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