打印
[STM32F1]

堆栈可以被设置吗?

[复制链接]
1446|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lyc374312116|  楼主 | 2015-4-22 11:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
RAM的使用分为三类:静态分配(全局变量等),栈(局部变量等),动态分配。
我想知道,以STM32F1为例,内存的栈区是否可以认为改动?默认是多少,如何在调试中查看当前栈的使用率?
沙发
wowow| | 2015-4-22 12:04 | 只看该作者
keil在startup汇编文件里例如:
startup_stm32f10x_md.s,
Stack_Size      EQU     0x00001000
Heap_Size       EQU     0x00002000

iar在项目options,linker,Config, Linker Configuration file,overide default,然后点后面的...按钮可以编辑。

调试时检查Heap和Stack:
keil没找到,知道的请说一下。
iar:
系统stack:菜单Tools,Options,Stack,右边有一些设置
RTOS线程Stack:别的不清楚,FreeRTOS的调试插件可以显示最少Stack剩余量。
heap:在项目options, Runtime Checking有一项目关于heap的,还不清楚咋用。

使用特权

评论回复
板凳
戈卫东| | 2015-4-22 12:12 | 只看该作者
每种工具都会处理堆栈的分配,否则你的代码不能正确运行。

使用特权

评论回复
地板
lyc374312116|  楼主 | 2015-4-22 13:53 | 只看该作者
wowow 发表于 2015-4-22 12:04
keil在startup汇编文件里例如:
startup_stm32f10x_md.s,
Stack_Size      EQU     0x00001000

stack 和 heap 有什么更改的范围吗?
freestos的哪个调试插件?

使用特权

评论回复
5
wowow| | 2015-4-22 14:51 | 只看该作者
stack 和 heap 有什么更改的范围吗?
    这个看程序的要求啊,这不是三言两语说得清的。缺省值一般小程序都够用了,不够就加嘛。反正STACK一溢出总会出现奇奇怪怪的问题的,有实时检测的手段更方便一些。HEAP相对好判断一些,每次动态分配内存时检查一下返回的指针是否有效。

freestos的哪个调试插件?
    在项目options, debugger, plugins, √选使用的RTOS。

使用特权

评论回复
6
lyc374312116|  楼主 | 2015-4-22 16:40 | 只看该作者
wowow 发表于 2015-4-22 14:51
stack 和 heap 有什么更改的范围吗?
    这个看程序的要求啊,这不是三言两语说得清的。缺省值一般小程序 ...

其实暂时还没到过stack不够用的情况
就keil而言有实时检测stack和heap已使用比例的功能吗?

在keil里找不到RTOS选项

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

30

帖子

1

粉丝