This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

stack heap size

Other Parts Discussed in Thread: SYSBIOS

6678

ccs 5.3

RTSC工程

单核(core0)运行程序的时候,运行到某处,出现TMS320C66x_0: Warning: Illegal opcode (00ff0406) at pc = 0x00836e7c Illegal opcode at pc = 0x00836e7c ,查了一下,大多说是stack和heap的问题。所以我也试图将stack和heap的大小设置的更大

我在properties->c6000 link->basic option里的stack size和heap size两处设置,还在cfg中加了两句

Program.sectMap[".sysmem"] = "DDR3";
Program.sectMap[".stack"] = "DDR3";

也不解决问题,而且连map文件中的stack length都没有改变,还是默认的0x1000

然后我试着在cmd中用-heap和-stack,但是这个cmd不是编译时自动生成的么,手动改能长久的生效么,不过我改了之后,map里的stack大小变成我在cmd中设置的了,但是运行还是warning,,若设置了很大的空间值,则运行都成问题

我也试了直接改map文件,也不行

所以我想问问,rtsc工程中,

1. illegal opcode到底是stack的问题还是heap,还是和两个都有关系?

2. 设置stack和heap的大小,我到底应该在哪里设置,在哪里设置才是真正有效的?

3. 还有就是,对于一个工程,它用到的stack和heap到底是多大,我到底该设多大的值呢? 我看过一个在ccs4下的查看stack峰值的方法,但是ccs5上怎么看呢?

  • 1.  这个告警不一定是与堆栈有关,建议查看一下pc指向的代码段code及数据是否正常;

    2. 堆栈大小可以在cfg文件中修改,可以通过图示方式或者text方式修改,具体请参考sysbios手册堆栈相关章节;