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.

6678 多核软件仿真Illegal opcode问题



您好,

我的编程环境是CCS  V5,使用6678多核开发板,程序主要功能是core0向其余七个核置IPC中断,core1~core7在ISR中执行调用不同的程序或者执行不同的代码。程序仿真过程中console的输出会出现乱码,因此每个核都打印了一个txt文件,工程在仿真时候可以正常运行,但是每个核都会报如下的warning:

TMS320C66x_1: Warning: Illegal opcode (7e035001) at pc = 0x21801040 Illegal opcode at pc = 0x21801040
TMS320C66x_2: Warning: Illegal opcode (7e035001) at pc = 0x21801040 Illegal opcode at pc = 0x21801040
TMS320C66x_3: Warning: Illegal opcode (7e035001) at pc = 0x21801040 Illegal opcode at pc = 0x21801040
TMS320C66x_4: Warning: Illegal opcode (7e035001) at pc = 0x21801040 Illegal opcode at pc = 0x21801040
TMS320C66x_5: Warning: Illegal opcode (7e035001) at pc = 0x21801040 Illegal opcode at pc = 0x21801040
TMS320C66x_6: Warning: Illegal opcode (7e035001) at pc = 0x21801040 Illegal opcode at pc = 0x21801040
TMS320C66x_7: Warning: Illegal opcode (7e035001) at pc = 0x21801040 Illegal opcode at pc = 0x21801040

最终core1~core7打印的文件中,TSCL等几个寄存器的值也有错误,想问一下出现这个warning的原因?

  • 0x21801040是PCIe configuration寄存器地址范围,代码怎么会执行到寄存器地址范围,这是包非法指令的原因。你要检查一下你的memory map避免代码放到非法地址,如果你的cfg中没有将代码放到这个地址范围,就有可能是代码段被改写或者stack溢出导致程序跑飞。

  • 您好,

    目前这个warning暂时被解决了,我的解决方法如下:

    1、增加stack;

    2、我发现如果顺序配置core1~core7的IPC中断时,每次配置都解锁一次KICK0和KICK1,就会出现上面的错误,解锁一次全部配置好就能避免上面的warning。

    但是想不明白为什么会出现这种状况,望解答。