Part Number:LAUNCHXL-CC2640R2
在Runtime Object View中提示ISR STACK overflow,如何增加ISR STACK?
已经在CCS under Project->Properties->Build->Arm Linker->Basic Options, under –stack_size调整为8192,但没用。
Kevin Qiu1:
ROV截图传上来看一下,另外说明下SDK版本和使用的哪个例程
,
xie wei:
SDK是用simplelink_cc2640r2_sdk_5_30_33_03
CCS11.1
例程是blestack中的simple_peripheral
发现是simple_peripheral任务stack溢出,增加此任务stack后解决。
但是相似的问题还是存在。程序全部任务的stack尺寸相加已超过默认值4096,我增加stack先到5120后,再将某个任务的stack尺寸从1700增加到2048(因为此任务的stack快要溢出了),能编译通过,但下载后无法运行。
整个RAM空间还够用,不知道如上调整STACK方法是否成功?
,
Kevin Qiu1:
你在ROV中查看除了task stack溢出外,system stack是否溢出了?
HWI SWI使用的都是system stack,如果这部分溢出了,则需要在.cfg文件中修改system stack size
,
xie wei:
如何修改system stack size?
Program.stack = 5120 ?
在CCS under Project->Properties->Build->Arm Linker->Basic Options, under –stack_size调整为5120没用吗?
,
Kevin Qiu1:
xie wei 说:在CCS under Project->Properties->Build->Arm Linker->Basic Options, under –stack_size调整为5120没用吗
这通常是在没有RTOS时的配置方法,
xie wei 说:
如何修改system stack size?
Program.stack = 5120 ?
是的
,
xie wei:
在app_ble.cfg文件中增加了Program.stack=4096(还没有设置为5120),但编译提示#10099-D</a> program will not fit into available memory, or the section contains a call site that requires a trampoline that can't be generated for this section. run placement with alignment fails for section ".stack" size 0x1000. Available memory ranges: cc26xx_app.cmd /XSJ_V2.0_cc2640r2/TOOLS line 292 C/C++ Problem
但上图SRAM应当还够用啊,不知为何这样提示。
另外如果不够用,如何将8K缓存转变为内存使用?有何缺点?
谢谢
,
Kevin Qiu1:
将上图中的SRAM部分展开看一下.stack的大小,上面错误是设置的stack size 超过了可以设置的范围
另外system stack并不会改变task stack的大小,一般system stack 不需要太大,如果task stack不够用还是要增加task stack
下面文档介绍了调试内存的方法,你可以看一下https://dev.ti.com/tirex/content/simplelink_cc2640r2_sdk_5_30_00_03/docs/blestack/ble_user_guide/html/ble-stack-3.x-guide/debugging-index.html
xie wei 说:另外如果不够用,如何将8K缓存转变为内存使用?有何缺点?
缺点是会增加功耗,方法查看这里:https://dev.ti.com/tirex/content/simplelink_cc2640r2_sdk_5_30_00_03/docs/blestack/ble_user_guide/html/memory/cache-as-ram.html
,
xie wei:
在.cfg文件中增加Program.stack = 2048; 后,问题解决。
,
Kevin Qiu1:
好的,感谢反馈