首页 > 编程知识 正文

堆栈技术,ora22835 修改缓冲区大小

时间:2023-05-05 22:22:31 阅读:119919 作者:1280

原始标题:设置IAR MSP430正确的堆栈大小

最近在- 169液晶屏(mspf 169,RAM为2KB )上调试了几个ucos演示示例,for MSP430的默认值为80字节,可以通过编译,运行结果不确定,调试过程为' thestacaction

一.合理设置堆栈大小

首先,检查程序所需的堆栈大小,并生成map文件。 方法如下。

生成图map文件

生成的map文件位于项目目录下的/Debug/List中,打开map文件,然后在CALL GRAPH中找到堆栈的最大使用量。 在我的理解中,它是主函数,堆栈最多,所以它直接拖到文件末尾,靠近地址顺序中的segments。

图2使用最大堆栈

从上图中可以看到,最大堆栈使用量为00000076 (注意这里是十六进制数),即118字节。

接下来,设置堆栈大小。 稍大于最大堆栈的:-)

图3堆栈大小设置

二、请小心

按照上述方法,在设置堆栈后重新编译可能会报告以下连接错误(受限内存不可用) :

图4内存不足链接错误

此时,唯一的方法是重新设计程序。 使用uC/OS时,可以通过以下方法减少内存使用量:

)1)如果是运行uC/OS,则可以将系统配置在os_cfg.h文件,例如减小最大任务数(OS_MAX_TASKS ),关闭扩展功能(以EN结束的变量)

)2)将一些局部变量数组设置为)我遇到了这个问题。 我认为在MSP 430-169液晶屏上完成类似printf的功能,无论如何都需要字符数组。 )

三、我的疑问

在实际调试过程中,尽管我将堆栈设置得比查看map文件堆栈大得多(map文件为0x76,即118,我设置为250 ),但在调试过程中仍然存在这个问题。 如下所示。

sat dec 22,2012233602336023360213360 thestackpointerforstack ' stack ' (currently memory :0 x 55 a ) isoutsidethestackrange

责任编辑:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。