TI论坛
直播中

王凤英

7年用户 239经验值
私信 关注
[问答]

6678 多核软件仿真Illegal opcode,请问出现这个warning的原因?

您好,
我的编程环境是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的原因?

回帖(2)

杨娟

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

举报

王凤英

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

您好,
目前这个warning暂时被解决了,我的解决方法如下:
1、增加stack;
2、我发现如果顺序配置core1~core7的IPC中断时,每次配置都解锁一次KICK0和KICK1,就会出现上面的错误,解锁一次全部配置好就能避免上面的warning。
但是想不明白为什么会出现这种状况,望解答。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分