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.

bug in DSP/BIOS PWRM module

Hello Relevant Person,

We are using TMS320VC5509A in our custom board and we created our project using DSP/BIOS 5.41.11.38 in CCSv5. Our problem was that  we could not achieve SDRAM to put in self-refresh mode. We have done lots of tests and analysis to find out the source of the problem. And then we figured out the problem is issued after we called PWRM_sleepDSP(...) function for going down the DSP to deep sleep.  We analysed deeper and deeper to get a more specific point and we disassembled the PWRM_sleepDSP(...) function and then we saw a critical bug inside PWRM_5509a_deepSleep(...) function. Near the end of this function, External Bus Selection Register(XBSR or EBSR) is set 0xFFFFC000 value. The expression is like that 'MOV 0x6C00, AC3' then 'MOV 0xFFFFC000, port(*AC3)'. In our opinion 'OR' must be used instead of second 'MOV'. At least for us, this is a critical bug  because we are set EBSR to put our SDRAM Chip Into the Self-Refresh Mode before going down to deep sleep but we could not achieve. It is very urgent. Could you help us about to solve this bug.

Note  :  SDRAM CKE pin is connected to XF pin of C5509A.

Thanks and Best Regards,

Kemal OVER
kover@aselsan.com

  • Kemal,

    I looked at the source code and think you are right, the two upper bits should be OR-ed to the EBSR register, versus the whole register being written.
     
    I filed a bug report on this (SDOCM00087595). I don’t know when the next DSP/BIOS release will be.  In the meantime, I’ve zipped and attached the relevant C source file with the change, and a header file.  I think that if you compile this file and link it before the PWRM library then this should serve as a workaround until there is a bug fix in a future release.  Please let me know if this does not work for you…

    Regards,
    Scott

    workaround_SDOCM00087595.zip
  • Hi Scott,

    First of all I thank you for your help and quick reply.

    Firstly, I compiled and it didn't work. So I changed line 611 in "pwrm_slp.c",  #if !defined(_5509_) || defined(_5509A_)  as  #if !( defined(_5509_) || defined(_5509A_) ). After this minor change, it would worked.Thanks alot again.

    Regards,

    Kemal OVER