OpenEdv-开源电子网

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

在IAR中向stm32中移植freertos,在IAR中如何直接查看任务使用多少栈空间?

[复制链接]

40

主题

149

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5762
金钱
5762
注册时间
2015-7-18
在线时间
418 小时
发表于 2017-4-11 10:42:14 | 显示全部楼层 |阅读模式
1金钱
在使用IAR调试freertos任务中,IAR自带了一个调试插件,启用这个插件会得到任务名、优先级、栈起始空间和栈顶位置,但是如何计算出每个任务具体使用了多少堆栈空间呢?还有就是在freertos中还需要看门狗吗?怎么实现

最佳答案

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

你说的调试插件我没用过,但freertos查看任务堆栈的使用情况还是有方法的 最直接的方法就是使用freertos的堆栈溢出检测方案2,使用该方案后在创建任务时,系统会把任务堆栈的内容全部设为0xA5 每次任务切换前系统都会检查当前任务堆栈的最后20字节是否为0xA5,如果是则有很大的把握可以认为任务堆栈未溢出 如果想要查看任务堆栈压栈最深的位置,可以调用uxTaskGetStackHighWaterMark() 我一般是直接暂停仿真,然后看堆栈不为0x ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

27

主题

711

帖子

0

精华

版主

Rank: 7Rank: 7Rank: 7

积分
11922
金钱
11922
注册时间
2015-11-5
在线时间
2086 小时
发表于 2017-4-11 10:42:15 | 显示全部楼层
你说的调试插件我没用过,但freertos查看任务堆栈的使用情况还是有方法的
最直接的方法就是使用freertos的堆栈溢出检测方案2,使用该方案后在创建任务时,系统会把任务堆栈的内容全部设为0xA5
每次任务切换前系统都会检查当前任务堆栈的最后20字节是否为0xA5,如果是则有很大的把握可以认为任务堆栈未溢出
如果想要查看任务堆栈压栈最深的位置,可以调用uxTaskGetStackHighWaterMark()
我一般是直接暂停仿真,然后看堆栈不为0xA5的位置,这个位置很有可能就是最深的压栈位置
如果想要准确知道压栈最深的位置,只能手动让任务进入堆栈使用最多的那个子函数里面,然后观察PSP的变化
拿来长岛冰茶换我半晚安睡
回复

使用道具 举报

40

主题

149

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5762
金钱
5762
注册时间
2015-7-18
在线时间
418 小时
 楼主| 发表于 2017-4-12 08:35:11 | 显示全部楼层
这个方法我知道,可行,但是和可视化调试相比哪个更准确些
回复

使用道具 举报

4

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
167
金钱
167
注册时间
2014-1-13
在线时间
47 小时
发表于 2020-6-2 17:06:22 | 显示全部楼层
FreeRTOS 发表于 2017-4-11 10:42
你说的调试插件我没用过,但freertos查看任务堆栈的使用情况还是有方法的
最直接的方法就是使用freertos的 ...

您有IAR版本移植成功的FreeRTOS模版吗
回复

使用道具 举报

27

主题

711

帖子

0

精华

版主

Rank: 7Rank: 7Rank: 7

积分
11922
金钱
11922
注册时间
2015-11-5
在线时间
2086 小时
发表于 2020-6-2 21:39:00 | 显示全部楼层
fengxiaoyu 发表于 2020-6-2 17:06
您有IAR版本移植成功的FreeRTOS模版吗

请看我的帖子,有详细介绍移植过程并且附了工程
拿来长岛冰茶换我半晚安睡
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 21:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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