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.

Problem "ti.sysbios.family.c64p.Exception: line 256: E_exceptionMax: pc = 0x00000000, sp = 0x0c2dc5b8."

Other Parts Discussed in Thread: SYSBIOS

Hi guys:

I try to debug my project.It works that way:

1.Wait for GPIO hwi;

2.post a swi

3.read data from a dual-port ram.

4.process the data.

5.write the result to another dual-port ram.

That simple.

but after it run this for several times.A error occur.Something wrong?

Thank you.

Platform : C6678EVM

TI-RTOS version : 2.0.1.23

Compiler version: 7.4.16

A0=0x8000000 A1=0x0
A2=0x0 A3=0xbf
A4=0x8000000 A5=0xc2dbe26
A6=0x8000000 A7=0x0
A8=0x9 A9=0x800001e0
A10=0x800640 A11=0x4
A12=0x0 A13=0x8
A14=0xc2f3e7c A15=0x800664
A16=0xc0001e0 A17=0x0
A18=0xc0001a8 A19=0x30
A20=0x0 A21=0x0
A22=0xebdfbfe3 A23=0x0
A24=0xafcebdbf A25=0xbe6cc649
A26=0x9f95faef A27=0x1
A28=0x70 A29=0x20
A30=0xc9 A31=0xc9
B0=0x0 B1=0x1
B2=0xc2db648 B3=0xc2f03d8
B4=0xc2e0000 B5=0x1
B6=0xc2dbe16 B7=0x0
B8=0xc2dbe26 B9=0x0
B10=0xc000178 B11=0x0
B12=0x0 B13=0x0
B14=0xc2f4980 B15=0xc2dc5b8
B16=0x86715dfc B17=0xdd25b545
B18=0x66666666 B19=0x3feff266
B20=0x8 B21=0x1
B22=0xf B23=0x0
B24=0x8005c8 B25=0x37db3fb7
B26=0x80000ff0 B27=0xc3
B28=0x80000e60 B29=0x4
B30=0x80000b40 B31=0x4
NTSR=0x1020f
ITSR=0x800640
IRP=0x0
SSR=0x0
AMR=0x0
RILC=0x800664
ILC=0xc2f3e7c
Exception at 0xbc
EFR=0x2 NRP=0xbc
Internal exception: IERR=0x1
Instruction fetch exception
ti.sysbios.family.c64p.Exception: line 256: E_exceptionMax: pc = 0x00000000, sp = 0x0c2dc5b8.
xdc.runtime.Error.raise: terminating execution

It may happen in the function "Data_process".It is called in Data_flow.c

Sparrow_core0.rar

  • And this is another imformation:

    A0=0x0 A1=0x0
    A2=0x0 A3=0xc8
    A4=0x9 A5=0xc2dbe26
    A6=0xc2db648 A7=0x0
    A8=0xe A9=0x800001e0
    A10=0x800640 A11=0x800500
    A12=0x0 A13=0x0
    A14=0xc2f3e7c A15=0x0
    A16=0xc0001e0 A17=0x0
    A18=0xc0001a8 A19=0x30
    A20=0x0 A21=0x0
    A22=0xebdfbfe3 A23=0x0
    A24=0xafcebdbf A25=0xbe6cc649
    A26=0x9f95faef A27=0x1
    A28=0x70 A29=0x20
    A30=0xdb A31=0xdb
    B0=0x1 B1=0x1
    B2=0xc2db648 B3=0x0
    B4=0x0 B5=0xc7
    B6=0xc2dbe16 B7=0x0
    B8=0xc2dbe26 B9=0x0
    B10=0xc000178 B11=0x0
    B12=0x0 B13=0x0
    B14=0xc2f4980 B15=0xc2dc5f8
    B16=0x800500 B17=0x37ae3d00
    B18=0x800640 B19=0x3feff266
    B20=0x0 B21=0x0
    B22=0x0 B23=0x0
    B24=0xc2f3e7c B25=0x0
    B26=0x0 B27=0x0
    B28=0xc2ea0b0 B29=0x0
    B30=0x80000b40 B31=0x0
    NTSR=0xc2dc688
    ITSR=0xc2dc694
    IRP=0xc2dc69c
    SSR=0xc2dc6a4
    AMR=0xc2dc6a0
    RILC=0xc2dc6ac
    ILC=0xc2dc6a8
    Exception at 0x0
    EFR=0x2 NRP=0x0
    Internal exception: IERR=0x1
    Instruction fetch exception
    ti.sysbios.family.c64p.Exception: line 256: E_exceptionMax: pc = 0x0c2dc690, sp = 0x0c2dc5f8.
    xdc.runtime.Error.raise: terminating execution

  • Hi,

    It's hard to say exactly what's going on, maybe your stack or code memory is getting corrupted or something like that and this could be caused by a buffer overflow, for example.

    How often does the exception happen? Is it possible to set a breakpoint in your function and run until it crashes?

    Also, check this post. It has some debugging tips that might help you:

    BR

    J

  • ,

    As "Johannes" posted above, you might need to debug your program to find the root cause. This is something to do with buffer/memory handling on the program.

    ,

    Thank you for the quick and appropriate response.

  • There are many threads discussed on this subject, please refer them for faster debugging.

    Thank you.
  • Mainly these two parts:

    "
    BIOS without asserts/diags is fully qualified and it should work.

    Which version of SYS/BIOS are you using? Are you able to use ROV? If so, you should be able to look in the Exception module and get register information. The 'NRP' register contains the nmi return pointer. NRP contains the address at/near the code that caused the exception. Put 'NRP' address in disassembly window. This should give a good clue as to what went wrong.

    -Karl-
    "

    "
    Hi,

    NRP = 0x0 means that your code branched to address 0x0 and tried to execute there....thus giving you the Instruction Fetch Exception.

    Are you getting any print outs from the Exception? If so can you paste that information here. The value of B3 when the Exception occurs can tell you a lot since this is the return addr. It should give you a clue as to where your code was expecting to return. Once you have that, you should be able to determine how the code was branching to address 0x0 [most likely branching through another register that is set to 0x0].

    Have you used ROV to check your stacks to make sure they are not overflowing?

    Judah
    "
  • I thought about the stack overflowing problem so i doubled the size of the stack , but it seems it's useless.

    Thank you.

  • Hi Minghao

    I too getting the same as mentioned below:

    Internal exception: IERR=0x1
    Instruction fetch exception
    ti.sysbios.family.c64p.Exception: line 256: E_exceptionMax: pc = 0x00000000, sp = 0x00875e28


    Please suggests me if you have already resolved this issue.

    Regards

  • Hi hemsbond
    I didn't solve the problem actually. However, I found very time It went wrong, it was always in the data-process function. I don't know why, that function ran very well on my STM32 board, just much more slower. I rewrote that data-process function, And there was no error. I got some problems like that, which the TI-RTOS just went wrong and gave me some info. But many of them were coding bugs, I fixed them. Hope you can work it out soon.
  • Hi Minghao,

    Thanks for your reply. My issue have got resolved.

    This is because, text segment was mapped onto MSMCRAM and as well as DDR memory area which is used for global buffers are overlapped if I configure for multi-core.

    After changing text segment to L2SRAM and creating separate DDR heap segment for each cores, my problem got rectified.

    Thanks,

    Hemsbond.