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.

FXN_F_selfLoop() crash

r software crashes non-deterministically. The last crash was after 3 hours with no external events (i.e. the control loop is just idling).

F28335. Bios 5.32. CGTs 5.0.2 CPU load ca 25%. Four tasks, invocations triggered using PRDs and SEMs. Debug compiled.

PC = FXN_F_selfLoop()

RPC = SWI_F_run() + 0x53

No stack overruns (plenty of 0xBEEF).

What kind of problem can cause this?

 

Details are below:

Dissassembly of SWI_F_run() up to the LCR command.

315AD5      SWI_RUNFXN, SWI_F_run:
315AD5 3B30        SETC       INTM,DBGM
315AD6 8D00ED67    MOVL       XAR0,#0x00ED67
315AD8 0EC0        MOVU       ACC,*+XAR0[0]

.. snipp ...

315B1F 76715B5D    LCR        logBegin
315B21 8EA6        MOVL       XAR0,@XAR6
315B22 761B        ASP       
315B23 7609        PUSH       DP:ST1
315B24 C580        MOVL       XAR7,*XAR0++
315B25 8380        MOVL       XAR5,*XAR0++
315B26 8A80        MOVL       XAR4,*XAR0++
315B27 3E67        LCR        *XAR7


Registers:

ACC    00000000
P    569E4E20
XT    C001016D
XAR0    0000000A
XAR1    00000052
XAR2    00000220
XAR3    00000000
XAR4    0000ED66
XAR5    0000F09E
XAR6    00000004
XAR7    0000EDAC
PC    315D3C
RPC    315B28
ST0    04D8
ST1    0A1B
DP    03B4
SP    00AF
IER    6185
IFR    6005
DBGIER    0000

Value at 0xEDAC = 0x0000 0000 (symb HWID_stkbottomadr)

  • I recommend thoroughly checking your power and clocking.

     

    Power - put a scope on the power rails and set the scope to infinite persistence so you can see how high/low the power rail goes.  Be certain that it is within the recommended operating conditions, i.e. no big glitches.a

     

    Clocking - make sure input clocks are in the right frequency range and the right voltage levels.  Make sure PLL settings are all within spec, including any intermediate frequencies.

     

    If all that checks out you might want to check your software.  Try to make the most stripped down project possible and see if it ever crashes.

  • Some DSP/BIOS debugging tips are posted here that might be helpful, http://tiexpressdsp.com/wiki/index.php?title=DSP_BIOS_Debugging_Tips

  • Thank you, both.

     

    We are "pretty" confident that it is not a power or clocking issue in our case.

    We tried removing parts of the code to try to pinpoint what causes it to crash. The problem with this approach (in our case) is that the crash can occur anywhere from immediately to days after the start. :/ ... we can never be sure unless we are really sure. ;)

     

    To clarify my question; what can cause the jump to FXN_F_selfLoop() while the return PC is pointing to the SWI_F_run()?

     

    Additionally:

    What is the purpose of FXN_F_selfLoop()? Or rather, what exactly has happened when this function is executing? Is this indicative of a DSP/BIOS crash - FXN_F_selfLoop() being executed when DSP/BIOS is not? How can a user application cause this (any examples of doing this on purpose)?

    (Try googling "FXN_F_selfLoop()")

  • Upgraded to DSP\BIOS 5.32.04 to see if that solves the problem.

    Same application, just recompiled with the new DSP\BIOS version. Crashed after 24:33 hours: in FXN_F_selfLoop() with the RPC pointing to the same place in SWI_F_run().

     

    Also, the value in XAR7 is the same. And the instruction at 0xEDAC is TRAP0 as before. Further, 0xEDAC falls within the .sysdata (uninitialized) section, bios.a28FP : biosdata.o28FP (.sysdata).

     

    Any DSP\BIOS developers in here? Is the SWI_F_run() connection just a coincidence?

     

     

  • FYI:

    Resolved in DSP/BIOS 5.33.03 (SDOCM00050676)

     

     

    *Davor slaps DSP/BIOS team around a bit with a large trout* :P

  • Hello Davor, how do you solve de problem? I meet the same to you. Thank you

    1. Go to https://www-a.ti.com/downloads/sds_support/targetcontent/bios/index.html.
    2. Download BIOS 5.33.03 or later.
    3. Install.
    4. In CCS go to Help -> About -> Component Manager.
    5. Under the DSP BIOS section go to 28xx and choose your newly installed version.
    6. Do File -> Save and then File -> Exit in Component Manager.
    7. Restart CCS.