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.

C6678 多核运行错误

Other Parts Discussed in Thread: SYSBIOS

我们在做C6678时,遇到如下问题:

1)当软件运行于单个core时,运行正常。

2)当软件算法同时运行于2个核时(即每个核各自运行一套相同的算法),其中一个核可以得到正确的结果,另一个核会出错。且哪个核出问题随机,都有可能出问题。下面是打印信息:

[C66xx_2] A0=0x107ff A1=0x0
A2=0x0 A3=0x0
A4=0x40 A5=0x836921e0
A6=0x41867c8d A7=0xc1477be8
A8=0x10800 A9=0x83b79d20
A10=0x9999999a A11=0x3fd99999
A12=0x856bea80 A13=0x0
A14=0x0 A15=0x0
A16=0x400 A17=0x3ff00000
A18=0x8360e1e0 A19=0x84000
A20=0xe3bcedc0 A21=0x1a
A22=0xe70d18d0 A23=0x12463c00
A24=0x87046441 A25=0x4d4147a
A26=0xbeaa2d42 A27=0x0
A28=0x400 A29=0x1
A30=0x0 A31=0x0
B0=0x0 B1=0x1
B2=0x8360e1e0 B3=0x80501da0
B4=0x444 B5=0x0
B6=0x83b79d20 B7=0xffffffff
B8=0x40000000 B9=0x1f
B10=0x80000000 B11=0x102300
B12=0xfb7259ef B13=0x0
B14=0x83b3c0 B15=0x856ba370
B16=0x438b3916 B17=0x0
B18=0x0 B19=0x3ff00000
B20=0x0 B21=0x69
B22=0xffffffff B23=0xfffffffb
B24=0x8576a4e8 B25=0x8
B26=0x8576a4e8 B27=0x8
B28=0x8576a4e8 B29=0x10
B30=0x8576a4e8 B31=0xc3b79d20
NTSR=0x1000f
ITSR=0xf
IRP=0x80977b30
SSR=0x0
AMR=0x0
RILC=0x0
ILC=0x0
Exception at 0x80a0e4d8
EFR=0x2 NRP=0x80a0e4d8
Internal exception: IERR=0x8
Opcode exception
ti.sysbios.family.c64p.Exception: line 255: E_exceptionMin: pc = 0x80a0e4d8, sp = 0x856ba370.
To see more exception detail, use ROV or set 'ti.sysbios.family.c64p.Exception.enablePrint = true;'
xdc.runtime.Error.raise: terminating execution
即都提示PC错误,PC的值每次运行报错时,也不相同。
请给予提示,多谢!
TEST.cfg
  • 首先你要明白系统打印出来的这些异常寄存器的含义,在sprugh7中搜一下这几个寄存器的含义

    NRP=0x80a0e4d8 表示系统进入NMI异常中断之前运行的程序地址
    IERR=0x8 表示系统发生了一个取值异常,一般是代码段被修改

    据你的描述,单核运行正常,而双核出问题,很有可能是双核时内存分配有问题,一个核会修改另一个核的代码段,建议比较运行前后代码段的内容,看看是否有变化。