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.

DSP/BIOS functions stopped working? How can I track down the problem?

Guru 15580 points

I have managed to do something to my DSP/BIOS 5.47.01.24 based application to cause all of the BIOS function to stop working. It has been working well for months up until now. 

I can place breakpoints on my tasks and none of them are triggered.

I can place breakpoints on my SEM_post() and see that it is reached during execution, but when I place a break point on the corresponding SEM_pend() it does not get triggered.

I can place a breakpoint on my PRD_start() but the function called by the PRD does not execute.

All of the above worked until I did whatever I did today. Can any one suggest what may have caused all of this to stop working?

(note to self.....make one change to your code at a time....:)

Thx,

MikeH

 

  • MikeH,

    I hope you had that previous version saved somewhere?

    If none of those things are running, where's the program going?  are you getting an exception or a bogus interrupt or jumping to abort?

    Judah

  • Judah,

    judahvang said:
    If none of those things are running, where's the program going? 

    It appears to be in the Idle loop.

     

                _IDL_lat1beg, IDL_F_busy:

    0x118237C0:   00000312            B.S2          hwid$1$ (PC+24 = 0x118237d8)

    0x118237C4:   006803E2            MVC.S2        TSR,B0

    0x118237C8:   020018F0            OR.D1X        0,B0,A4

    0x118237CC:   0003C9F2            AND.D2        -2,B0,B0

    0x118237D0:   0D0003A2            MVC.S2        B0,TSR

    0x118237D4:   00000000            NOP

    judahvang said:
    are you getting an exception

    No exceptions.

    judahvang said:
    or a bogus interrupt

    judahvang said:
    or jumping to abort?

    Not sure. How can I tell?

     

     

  • Mike,

    When the program is in the idle loop, typically this means there's nothing else going on in your system.  Are you sure your Tasks aren't blocked?  Are you using CCS v4 for debugging?  If so, there's a tools called ROV pluginwhich shows the state of the system...like what task are running or block or terminated.  If you're using CCS v3 then you might be able to use KOV plugin which is pretty much the same thing as ROV but for CCS v3x.

    Other than that, without additional info, its hard to say whats going on in your system.

    Judah

  • Judah,

    judahvang said:
    Are you using CCS v4 for debugging?

    Yes.

    judahvang said:
      If so, there's a tools called ROV pluginwhich shows the state of the system...like what task are running or block or terminated.

    Can you help me interpret this?

    The tasks TSK_transfer_to_codec and TSK_encode_frame are the tasks of interest. I don't know what the red background means.

    Also the SEMs appear to be broken, or at least not visible by ROV.

    Also, the PRD is not working. Is there some way to view its state?

    Thx,

    MikeH

     

     

  • Mike,

    The highlighted red means there's something wrong.  Can you make sure your Task stacks aren't overflowed? There should be a field called "stack peak" or something along those lines.  Also could you check to make sure your ISR stack didn't overflow either.  Check under the "Hwi" for the ISR stack.

    Can you try reloading your program, go to main, and then open up the ROV for SEM and see if you still get that error?  If its okay, then something in your program is corrupting the SEM module.  If its not okay, then there could be some compatibility issue.  What device/platform are you trying this on?  Perhaps attach your .out file if its something we can try to reproduce here.

    Judah

  • judahvang said:
    Can you make sure your Task stacks aren't overflowed?

    Here's the ROV output showing the stacks. The stacks appear OK.

    HOWEVER, when I swap the BIOS code & data to a different memory location, everything works as expected. I was using IRAM (DSP L2 IRAM) when things stopped working. I switched BIOS cod & data to Shared RAM and everything works again. Is there some way to figure out why the IRAM didn't work? I know the allocation is somewhat tight, but I did not receive any error messages from compile or linking.

     

  • Mike,

    Typically IRAM can be configured as CACHE/RAM.  It sounds to me like perhaps you've placed code/data into an area that might be set as CACHE?

    What device are you running on again?  Couple things I would do:

    1.  Check what your Cache Settings for IRAM.  This can be found at the address 0x01840000 (0 = 0K cache, 1 = 32K cache, 2 = 64K cache, etc... to the max RAM there is)

    2.  Check to see how much IRAM you are using.

    Judah

  • Judah,

    I believe I had my cache memory mis-configured. All is working now with BIOS data/code in DDR.

    Thanks,

    MikeH