Part Number:CC2650MODA
你们好!
公司项目测试中发现系统堆栈溢出的错误,经过各种调查实验发现,通过ble_app.cfg调整stack size后,heap size也会随之变化,比如stack size变大,heap size就变小,一共是2307,
谢谢!
Cherry Zhou:
您好我们已收到您的问题,预计将于24小时内给您答复。谢谢!
,
Cherry Zhou:
链接时,工具链配置为:将所有剩余的 RAM 分配为堆。 于是会出现该种情况。
虽然可以修改,但是我们不建议您这样做,修改后不会有更大的堆。
希望以上回答对您有所帮助,如有其他问题请随时联系我们。
,
fei liu:
谢谢回答,
Cherry Zhou 说:链接时,工具链配置为:将所有剩余的 RAM 分配为堆。 于是会出现该种情况。
请问是不是因为这样的设置导致的,heap size设为了0,
fei liu 说:一共是2307
这个堆栈值在下面位置设定吗?可是我算出来的是2307,而这里显示的却是256?
我这边试着调整了上图位置的heap size和stack size,0x800,查看map后,没有任何变化。请问这个设置如何反映到程序中去?谢谢!
,
Cherry Zhou:
好的我会再帮您跟进给工程师,以及您提出的另一个问题,https://e2echina.ti.com/support/wireless-connectivity/bluetooth/f/bluetooth-forum/210526/cc2650moda-ccs-rov-stackpeak,请问是否和该贴相关?
,
fei liu:
谢谢,相关的。
补充一下,我用的是 ARM compiler/linker.
,
Cherry Zhou:
fei liu 说:请问是不是因为这样的设置导致的,heap size设为了0,
是的,但是在该状况下并不起作用。
fei liu 说:这个堆栈值在下面位置设定吗?可是我算出来的是2307,而这里显示的却是256?
请您参考该帖:e2e.ti.com/…/compiler-cc2640-can-t-adjust-stack-size-in-simple_peripheral-project
,
fei liu:
Cherry Zhou 说:
fei liu 说:请问是不是因为这样的设置导致的,heap size设为了0,
是的,但是在该状况下并不起作用。
我发现在工程预编译里面有HEAPMGR_SIZE=0这样的定义,是不是以为这个设定,堆的大小是动态的。而heap+stack的大小有是固定的,所以通过ble_app.cfg调整stack size后,heap size也会随之变化。
另外我想知道的是,heap+stack的大小可不可以设定?在哪里设定?
Cherry Zhou 说:
fei liu 说:这个堆栈值在下面位置设定吗?可是我算出来的是2307,而这里显示的却是256?
请您参考该帖:https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1048354/dra829v-when-saving-under-uboot-reporting-error-issue
这个是ccs7.3的环境问题?
谢谢
,
Cherry Zhou:
抱歉,请您查看更新后的链接是否有帮助。
,
fei liu:
您好!
我发现在工程预编译里面有HEAPMGR_SIZE=0这样的定义,是不是以为这个设定,堆的大小是动态的。而heap+stack的大小有是固定的,所以通过ble_app.cfg调整stack size后,heap size也会随之变化。
另外我想知道的是,heap+stack的大小可不可以设定?在哪里设定?
您提供的链接,如何可以通过界面设定system stack和heap size的话,就可以任意设定heap+stack的大小了,我理解的对吗?
,
Cherry Zhou:
fei liu 说:我发现在工程预编译里面有HEAPMGR_SIZE=0这样的定义,是不是以为这个设定,堆的大小是动态的。而heap+stack的大小有是固定的,所以通过ble_app.cfg调整stack size后,heap size也会随之变化。
请注意我们之前说的是:将 0 字节分配到堆会导致问题。
就.cfg 文件中的符号 HEAPMGR_SIZE ,您的理解是正确的。您可以参阅以下信息:
"HEAPMGR_SIZE value of zero (0) autosizes the heap to a size equal to the amount of available free RAM not allocated by the linker. By default,the simple_peripheral project uses the autosize feature." (cf. https://www.ti.com/lit/swru393 §3.11.14)
fei liu 说:heap+stack的大小可不可以设定?在哪里设定?
该值对应于最大可用 RAM。 设定或更改的唯一方法是换器件。
fei liu 说:如何可以通过界面设定system stack和heap size的话,就可以任意设定heap+stack的大小了,我理解的对吗?
我们还是建议您使用链接中显示的方法。 我们认为 .cfg 会覆盖一些通过 GUI 的设置。
,
fei liu:
谢谢您的回答!
Cherry Zhou 说:
fei liu 说:heap+stack的大小可不可以设定?在哪里设定?
该值对应于最大可用 RAM。 设定或更改的唯一方法是换器件
可是我看到map文件的sram显示还有剩余空间的。
,
Cherry Zhou:
好的收到您的问题,已帮您跟进,如有答复将尽快回复您。
,
Cherry Zhou:
堆在剩余的 RAM 上分配,可能不会出现在映射文件中。
您可以查看linker command file链接器命令文件 (.cmd) 以了解有关 RAM 分配方式的更多详细信息。