大家好,
我的环境: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以找到问题所在?
谢谢!!
