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.

RTOS/TMS320C6678: SYS/BIOS Crashes

Part Number: TMS320C6678
Other Parts Discussed in Thread: SYSBIOS,

Tool/software: TI-RTOS

Hi all,

CCS: 5.5.0.00077

Bios_6_37_05_35

pdk_C6678_1_1_2_6

xdctools_3_25_06_96

We are using the TMS320C6678L EVM and our application works fine MOST of the time. When we recycle the power, sometimes the BIOS crashes and nothing will bring the system up again except power recycle. We added a Watch Dog Timer to the application and that doesn't help neither. We added "platform_write()" to our code and noticed that the system continue running until we call "BIOS_start()". When we debugged the project using CCS/JTAG (No boot), we got the following results:

 A0=0x1 A1=0x81da2a8e
A2=0x0 A3=0x81da284c
A4=0xc350 A5=0x81e48b3c
A6=0xc350 A7=0x2530008
A8=0x1 A9=0x9
A10=0x10 A11=0x81e48b2c
A12=0x81e48b2c A13=0xff80
A14=0x0 A15=0x0
A16=0x81e48b5c A17=0x0
A18=0x81e48ac8 A19=0x90
A20=0xd005111d A21=0x1436302f
A22=0x804b09a0 A23=0x1a09392c
A24=0xa0018000 A25=0x92a8026
A26=0xac2ec20b A27=0x898a0820
A28=0x80 A29=0x83
A30=0x80 A31=0x2e0
B0=0xf B1=0x518574f2
B2=0xc350 B3=0x81e03358
B4=0x81e48b2c B5=0x2530024
B6=0x2530024 B7=0x2530024
B8=0x1d B9=0x838710
B10=0x0 B11=0x0
B12=0x0 B13=0x0
B14=0x85ff50 B15=0x83e330
B16=0x85f858 B17=0x0
B18=0xff B19=0x20
B20=0x20 B21=0x0
B22=0x0 B23=0x40000000
B24=0x838cec B25=0x4210299a
B26=0x28f58a6 B27=0x10414c13
B28=0x82803c02 B29=0x0
B30=0x0 B31=0x81d82e74
NTSR=0x10204
ITSR=0xf
IRP=0x81d82e92
SSR=0x0
AMR=0x0
RILC=0x0
ILC=0x0
Exception at 0x860de8
EFR=0x2 NRP=0x860de8
Internal exception: IERR=0x9
Instruction fetch exception
Opcode exception
ti.sysbios.family.c64p.Exception: line 256: E_exceptionMax: pc = 0x00860de8, sp = 0x0083e330.
xdc.runtime.Error.raise: terminating execution

Questions:

1-Why the BIOS crashes?

2-Why the WDT is not causing the system to reset (we tested the WDT and it resets the system if not reset in our application)

3-How can we force the system to reset when BIOS crashes (exception handler?)

Regards,

Murad

  • Hi,

    I've notified the RTOS team. Their feedback will be posted directly here.

    Best Regards,
    Yordan
  • Hi,

    Internal exception: IERR=0x9
    Instruction fetch exception

    Do you enable the L2 EDC? if yes, can you disable that and try again?

    Regards, Eric
  • Hi Eric,

    I don't know what L2 EDC means, so most likely I didn't change the default!
  • PS: We also noticed that the C6678LXE boards don't crash...but C6678L boards do...we have 3 LXE and 6 L and same observation on all of them!
  • Hi,

    I looked at the www2.advantech.com/.../6678le_of.aspx. There is only L and LE EVM:
    TMDXEVM6678L - TMS320C6678 Lite Evaluation Module
    The TMDXEVM6678L EVM comes with XDS100 onboard emulation capability. In addition, an external emulator via JTAG emulation header can be also be used.
    TMDXEVM6678LE - TMS320C6678 Lite Evaluation Module with XDS560V2 Emulation
    The TMDXEVM6678LE EVM comes with XDS560V2 onboard emulation capability. The included XDS560 mezzanine card uses the TI 60-pin JTAG emulation header.

    What is the LXE EVM, maybe the DSP chip came with SA (security accelerator)? What kinds of program you ran on the EVM? Will a simple SYSBIOS hello world crash? And the crash is 100% or sometimes?

    Do you use the default GEL file for DSP initialization? If yes, there is function called EnableEDC_OneforAll(). Can you remove it for test?

    Regards, Eric
  • Hi Eric,
    -LXE is TMDSEVM6678LXE - TMS320C6678 Lite Evaluation Module with Encryption and XDS560V2. We got it from ti directly I believe
    -The application is a MAD (multicore Application Development) that uses 6 cores for our custom application (processing ADC samples). crash happens when we recycle the power once every 5 to 10 times. on the LXE (3 different boards), we recycle the power 100 times and system boots fine.
    -we use the default GEL. I see "DisableEDC_OneforAll". But I use the MAD utilities to build a .bin file that we store in NOR and we boot using IBL/I2C...how can I call this function?

    Regards,

    Murad
  • Also,
    I added the following to the .cfg file:

    var Error = xdc.module('xdc.runtime.Error');
    Error.raiseHook = "&MyErrorHandler";

    and in the .c file, I added:

    Void MyErrorHandler(Error_Block *eb)
    {
    // blink 5 times to indicate default state has been set
    int counter = 0;
    for(counter = 0; counter < 5; counter++){
    (void) platform_led(0, PLATFORM_LED_ON, PLATFORM_USER_LED_CLASS);
    (void) platform_led(1, PLATFORM_LED_ON, PLATFORM_USER_LED_CLASS);
    (void) platform_led(2, PLATFORM_LED_ON, PLATFORM_USER_LED_CLASS);
    (void) platform_led(3, PLATFORM_LED_ON, PLATFORM_USER_LED_CLASS);
    (void) platform_delay(50000);
    (void) platform_led(0, PLATFORM_LED_OFF, PLATFORM_USER_LED_CLASS);
    (void) platform_led(1, PLATFORM_LED_OFF, PLATFORM_USER_LED_CLASS);
    (void) platform_led(2, PLATFORM_LED_OFF, PLATFORM_USER_LED_CLASS);
    (void) platform_led(3, PLATFORM_LED_OFF, PLATFORM_USER_LED_CLASS);
    (void) platform_delay(50000);
    }
    platform_write("MyErrorHandles%d\n", eb->id);
    (void) platform_delay(50000);

    return;
    }


    EVERY Time we recycle power, led flashes and rs232 terminal displays:
    MyErrorHandles390135808

    and the system reset and repeat the above (we have a WDT enable)