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 - Instruction fetch exception

Other Parts Discussed in Thread: SYSBIOS

[C66xx_0] A0=0x80000da0 A1=0x0
[C66xx_0] A2=0x0 A3=0xc08ae24
[C66xx_0] A4=0x863a0bf8 A5=0x864b4b30
[C66xx_0] A6=0x0 A7=0x0
[C66xx_0] A8=0x15a00000 A9=0x1
[C66xx_0] A10=0xffffffff A11=0xffffffff
[C66xx_0] A12=0xffffffff A13=0xffffffff
[C66xx_0] A14=0x0 A15=0x0
[C66xx_0] A16=0xc225380 A17=0xc
[C66xx_0] A18=0x864d5230 A19=0x10
[C66xx_0] A20=0x0 A21=0x0
[C66xx_0] A22=0x0 A23=0x0
[C66xx_0] A24=0x0 A25=0x0
[C66xx_0] A26=0x0 A27=0x0
[C66xx_0] A28=0x0 A29=0xe100a8c0
[C66xx_0] A30=0x0 A31=0x8639fd00
[C66xx_0] B0=0x864c5448 B1=0x0
[C66xx_0] B2=0x0 B3=0x86221b40
[C66xx_0] B4=0xffffffff B5=0x1
[C66xx_0] B6=0x159 B7=0x1
[C66xx_0] B8=0x800005a0 B9=0xa
[C66xx_0] B10=0xffffffff B11=0xffffffff
[C66xx_0] B12=0x0 B13=0x0
[C66xx_0] B14=0x809b88 B15=0x80000dd0
[C66xx_0] B16=0x0 B17=0xc08a340
[C66xx_0] B18=0xc07f615 B19=0x10
[C66xx_0] B20=0x80000548 B21=0x4
[C66xx_0] B22=0x4 B23=0x0
[C66xx_0] B24=0x3000 B25=0x0
[C66xx_0] B26=0x2e2 B27=0x0
[C66xx_0] B28=0x0 B29=0xc0
[C66xx_0] B30=0x0 B31=0x8048
[C66xx_0] NTSR=0x1000e
[C66xx_0] ITSR=0xf
[C66xx_0] IRP=0x86205300
[C66xx_0] SSR=0x0
[C66xx_0] AMR=0x0
[C66xx_0] RILC=0x0
[C66xx_0] ILC=0x0
[C66xx_0] Exception at 0xfffffffe
[C66xx_0] EFR=0x2 NRP=0xfffffffe
[C66xx_0] Internal exception: IERR=0x3
[C66xx_0] Instruction fetch exception
[C66xx_0] Fetch packet exception
[C66xx_0] ti.sysbios.family.c64p.Exception: line 248: E_exceptionMin: pc = 0x86205300, sp = 0x80000dd0.
[C66xx_0] To see more exception detail, use ROV or set 'ti.sysbios.family.c64p.Exception.enablePrint = true;'
[C66xx_0] xdc.runtime.Error.raise: terminating execution

  • The disassembly at B3 = 0x86221b40

    ti_sysbios_family_c62_TaskSupport_glue:
    86221b40: 013C62E6 LDW.D2T2 *+B15[3],B2
    86221b44: 023C22E4 LDW.D2T1 *+B15[1],A4
    86221b48: 023C42E6 LDW.D2T2 *+B15[2],B4
    86221b4c: 01BC92E6 LDW.D2T2 *++B15[4],B3
    86221b50: 00000000 NOP
    86221b54: 00080362 B.S2 B2
    86221b58: 00008000 NOP 5
    86221b5c: 00000000 NOP
    ti_sysbios_family_xxx_Hwi_switchToTaskStack:
    86221b60: 001018F3 MV.D2X A4,B0
    86221b64: 007DC428 || MVK.S1 0xfffffb88,A0
    86221b68: 00431CE9 MVKH.S1 0x86390000,A0
    86221b6c: 000C0362 || B.S2 B3
    86221b70: 37800266 [!B0] LDW.D1T2 *+A0[0],B15
    86221b74: 30000276 [!B0] STW.D1T2 B0,*+A0[0]
    86221b78: 00004000 NOP 3
    86221b7c: 00000000 NOP
    abort, C$$EXIT:
    86221b80: 00000000 NOP

    How can I start debugging this problem? NRP points to a invalid location.

  • Weber,

    If NRP is pointing to an invalid location, it's most likely because you corrupted a pointer and branched to that location.  I'd look at where B15 is now, and see if that's still within the allocated stack space.  I suspect you overflowed the stack, which is what I was mentioning in the other thread. 

    Best Regards,

    Chad

  • Weber,

    Not knowing anything about your application or the specific operation that was running when the exception occurred, it is a little hard to give specific advise.

    Increasing the stack size and/or task stack size could make the problem go away.

    The B3 address you show above is just past the point in the code that you need to look at. B3 is the return address, so the branch/call to the failing place may be just above that point, although it will be 6 execution cycle before it and that could be anywhere from 1 to 48 instruction words above it (6 cycles times 8 parallel instructions).

    Once you identify the code that calls the bad address, you can insert test code to look for out-of-range values, stack overflow (not sure how), or put in hardware/software breakpoints to look for particular values in memory writes or reads.

    Regards,
    RandyP