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.

C6670代码溢出问题



大家好,

我的环境:C6670,CCSv5.3,SYS/BIOSv6.33.6.50

我的代码中,4个Core都跑了SRIO,4个Core各自有一个MAC地址跑Ethernet的MAC层。另外还跑很多算法代码。

其中.text和.cinit放到了MSMC中,有几个大数组放到了DDR3中,其他section放在了L2SRAM中。

我的代码跑了一段时间(有时30分钟,有时10几分钟),其中某个Core(有时候Core0有时候Core3)就溢出

溢出信息如下:

A0=0x0 A1=0x56
A2=0x1 A3=0xd0f0f
A4=0x800f798c A5=0x28
A6=0x0 A7=0x800f798c
A8=0x2 A9=0x8d5a40
A10=0x800f78d4 A11=0x8d4380
A12=0xffffffff A13=0x800f7740
A14=0x0 A15=0x0
A16=0x3 A17=0x1
A18=0x2900d00 A19=0x0
A20=0x0 A21=0x300
A22=0x1 A23=0x1
A24=0x28 A25=0x1b8
A26=0x1e0 A27=0x258
A28=0x28 A29=0x50
A30=0x300 A31=0xc093f94
B0=0x1 B1=0x0
B2=0x0 B3=0xc05def4
B4=0x800fdc40 B5=0x0
B6=0x1 B7=0x800fdc40
B8=0x8d4234 B9=0xc093fd0
B10=0x0 B11=0x0
B12=0x0 B13=0x0
B14=0x8f99a8 B15=0x861fc0
B16=0xc B17=0x2
B18=0x20 B19=0x138
B20=0x134 B21=0x130
B22=0xf B23=0x0
B24=0x120 B25=0x11c
B26=0x118 B27=0x114
B28=0x60 B29=0x0
B30=0x6 B31=0x194
NTSR=0x1020f
ITSR=0x420d
IRP=0xc01d5d8
SSR=0x0
AMR=0x0
RILC=0x8
ILC=0x0
Exception at 0xd0f0c
EFR=0x2 NRP=0xd0f0c
Internal exception: IERR=0x1
Instruction fetch exception
ti.sysbios.family.c64p.Exception: line 248: E_exceptionMin: pc = 0x000d0f0c, sp = 0x00861fc0.
To see more exception detail, use ROV or set 'ti.sysbios.family.c64p.Exception.enablePrint = true;'
xdc.runtime.Error.raise: terminating execution

其中SP=0x00861fc0位于Core中的一个Task stack中,在Disassemebly窗口显示如下

00861f74:   00000000            NOP           
00861f78:   00000000            NOP           
00861f7c:   00000000            NOP           
00861f80:   00000000            NOP           
00861f84:   00000000            NOP           
00861f88:   0C06D766            LDDW.D1T2     *A1++[22],B25:B24
00861f8c:   00000000            NOP           
00861f90:   008D4380            MPYHU.M1      A10,A3,A1
00861f94:   00861FD8            OR.L1X        -16,B1,A1
00861f98:   FFFFFFFF            .word         0xffffffff
00861f9c:   800F7740 ||         .word         0x800f7740
00861fa0:   00000000            NOP           
00861fa4:   00000000            NOP           
00861fa8:   00000000            NOP           
00861fac:   00000000            NOP           
00861fb0:   00000000            NOP           
00861fb4:   00000000            NOP           
00861fb8:   0C06322C            LDB.D2T1      *+B14[1586],A24
00861fbc:   00000194            .word         0x00000194
00861fc0:   800F8EEC     [ A1]  LDW.D2T1      *+B15[3982],A0
00861fc4:   0000000E            LDHU.D2T2     *+B14[0],B0
00861fc8:   008D4380            MPYHU.M1      A10,A3,A1
00861fcc:   00000000            NOP           
00861fd0:   00000000            NOP           
00861fd4:   00000000            NOP           
00861fd8:   00000003            NOP           
00861fdc:   00000000 ||         NOP           
00861fe0:   00014975            STNDW.D1T1    A1:A0,*-A0(A10)
00861fe4:   0000000C ||         LDHU.D2T1     *+B14[0],A0
00861fe8:   00000002            NOP           
00861fec:   00000000            NOP           
00861ff0:   00000000            NOP           
00861ff4:   00000000            NOP           
00861ff8:   0C0628E0            SSHL.S1       A1,A17,A24
00861ffc:   BEBEBEBE     [!A2]  STB.D2T2      B29,*+B15[16062]
          ti_sysbios_knl_Task_Instance_State_2_stack__A:
00862000:   BEBEBEBE     [!A2]  STB.D2T2      B29,*+B15[16062]
00862004:   BEBEBEBE     [!A2]  STB.D2T2      B29,*+B15[16062]
00862008:   BEBEBEBE     [!A2]  STB.D2T2      B29,*+B15[16062]
0086200c:   BEBEBEBE     [!A2]  STB.D2T2      B29,*+B15[16062]
00862010:   BEBEBEBE     [!A2]  STB.D2T2      B29,*+B15[16062]
00862014:   BEBEBEBE     [!A2]  STB.D2T2      B29,*+B15[16062]
00862018:   BEBEBEBE     [!A2]  STB.D2T2      B29,*+B15[16062]

其中800F8EEC为放在DDR3上的一个大数组(g_l1BBRcv),见map文件中如下部分

80000000   g_dlTxModBuf
800f0640   g_l1BBTx
800f7740   g_l1BBRcv
800fdc40   g_ulRcvBuf

map文件为

A31=0x0c093f94在Disassemebly窗口显示如下

0c093f80:   04FC0010            B.S1          0xc311f80
          ti_sysbios_knl_Task_A_badTaskState__C:
0c093f84:   04510010            B.S1          0xc2bc780
          ti_sysbios_knl_Task_A_badThreadType__C:
0c093f88:   040C0010            B.S1          0xc299f80
          ti_sysbios_knl_Task_A_badTimeout__C:
0c093f8c:   052E0010            B.S1          0xc32af80
          ti_sysbios_knl_Task_A_noPendElem__C:
0c093f90:   04870010            B.S1          0xc2d7780
          ti_sysbios_knl_Task_E_spOutOfBounds__C:
0c093f94:   15AA0000            .word         0x15aa0000
          ti_sysbios_knl_Task_E_stackOverflow__C:
0c093f98:   157F0000            .word         0x157f0000
          ti_sysbios_knl_Task_LD_block__C:
0c093f9c:   1EBA0200            CMATMPY.M1      A15:A14,A19:A18:A17:A16,A31:A30:A29:A28
          ti_sysbios_knl_Task_LD_exit__C:
0c093fa0:   1F420200            CMATMPY.M1      A17:A16,A19:A18:A17:A16,A31:A30:A29:A28
          ti_sysbios_knl_Task_LD_ready__C:
0c093fa4:   1E910200            CMATMPY.M1      A5:A4,A11:A10:A9:A8,A31:A30:A29:A28
          ti_sysbios_knl_Task_LM_setPri__C:
0c093fa8:   1F0A0300            CMATMPYR1.M1    A3:A2,A19:A18:A17:A16,A31:A30

B3=0xc05def4在Disassemebly窗口中显示如下

 30               g_ulTsInfoBufIndex[ChanIndex] = (SysFrame->TN >>2);
0c05ded4:   C281402A     [ A0]  MVK.S2        0x0280,B5
0c05ded8:   C280446B     [ A0]  MVKH.S2       0x880000,B5
0c05dedc:   C21449A0 ||  [ A0]  SHRU.S1       A5,0x2,A4
0c05dee0:   C2148AD4     [ A0]  STH.D2T1      A4,*+B5[B4]
 33           (* rcvFunction) (SysFrame, bbSample, ARFCN, IndexChan);
0c05dee4:   000C1362            B.S2X         A3
0c05dee8:   01856162            ADDKPC.S2     $C$RL4 (PC+20 = 0x0c05def4),B3,3
0c05deec:   C247                MV.L2         B4,B6
0c05deee:   83CF     ||         MV.S2         B7,B4
0c05def0:   021C0FD8 ||         MV.L1         A7,A4
 36       }  
          $C$RL4:
0c05def4:   71F7                LDW.D2T2      *++B15[2],B3
0c05def6:   6C6E                NOP           4
0c05def8:   008CA362            BNOP.S2       B3,5
0c05defc:   E50000C0            .fphead       n, l, W, BU, nobr, nosat, 0101000b
          _pproc_fge:
0c05df00:   3677                STW.D2T2      B12,*B15--[2]
0c05df02:   9577                STDW.D2T2     B11:B10,*B15--[1]
0c05df04:   8677                STDW.D2T1     A13:A12,*B15--[1]
0c05df06:   8577                STDW.D2T1     A11:A10,*B15--[1]
0c05df08:   8647                MV.L2         B4,B12
0c05df0a:   114D     ||         LDW.D2T2      *B6[0],B4
0c05df0c:   06100FD8            MV.L1         A4,A12
0c05df10:   03B18224            LDB.D1T1      *+A12[12],A7
0c05df14:   B5C6                MV.L1X        B3,A13

希望专家帮忙看看,如何进一步Debug以找到问题所在?

谢谢!!