首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改Contiki中的堆栈大小

更改Contiki中的堆栈大小
EN

Stack Overflow用户
提问于 2018-07-24 04:43:06
回答 1查看 246关注 0票数 0

是否有一种方式以编程方式更改Contiki中的堆栈大小?

我知道在Linux系统上我可以调用:

代码语言:javascript
复制
ulimit -s SIZE

但是我目前正在使用Contiki作为一个闪烁的二进制文件,并且没有真正的访问传统终端的权限。我尝试使用system()popen()调用执行C中的命令,但没有效果。

也许我可以利用CFLAG或LDFLAG?或者修改makefile中的什么东西?

我正在将二进制文件闪烁到德州仪器公司的cc2650,它有一个32位处理器。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-27 13:42:40

CC2650没有MPU (内存保护单元),这意味着在运行时没有人检查堆栈区域的边界,这反过来意味着没有办法“保留”堆栈,就像在Linux上保留堆栈内存一样。

本质上,如果您继续在堆栈上分配新的东西,那么即使到达其他内存区域(通常是.data区域),堆栈也会继续增长,该区域包含动态分配的内存(如果有的话)和静态/全局变量。堆栈的增长将以一种甚至可能没有注意到的方式破坏这些其他区域的内存,从而导致难以找到的bug。

有几件事要做。一个是在编译期间保留更大的堆栈内存。这将不会限制堆栈区域,但将限制数据区域的范围。为此,请在CC2650中更改cpu/cc26xx-cc13xx/cc26xx.ld链接器脚本

代码语言:javascript
复制
_Min_Stack_Size = 0x100;  /* 256 bytes by default for the stack */

另一件事是使用康蒂基最近的修订版,这些版本有内置的堆栈溢出检查。运行时仍无法更改堆栈区域大小,但如果发生堆栈溢出,则会出现错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51490588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档