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.

CCS/PROCESSOR-SDK-AM437X: QSPIUtilsQuadEnable issue

Part Number: PROCESSOR-SDK-AM437X

Tool/software: Code Composer Studio

Hi all,

I have merged the AM437x Industrial Development Kit example for QSPI flashing (..\starterware\examples\qspi\flash_writer)
into my IDK AM437x based project an its working fine when loading the code by CCS and executing directly.
The FATFS is part of the setup, supporting an SD card to provide an (optional) application update.
But after flashing the project, I have a deadlock within QSPIUtilsQuadEnable() during start.
Forcing a return after '/* Read Status register */' routine (= skip the writing of the enable bit),
it seems that there is the problem. Do I need to skip writing if enable bit is already set?
Most likely one of the while loops is not returning (TIRTOS not started at this time).

Best Regards,
Thomas

  • Hi Thomas,

    I'm investigating this issue.

    Regards,
    Frank

  • Hi Thomas,

    >>  loading the code by CCS and executing directly

    Do you mean your application works when loaded from JTAG?

    >> But after flashing the project

    Do you mean you've programmed your application into QSPI flash and are bootloading via QSPI boot?

    >>  I have a deadlock within QSPIUtilsQuadEnable().

    Do you mean starterware/library/qspilib/qspi_lib.c:378:void QSPILibQuadEnable()? I don't see any function in PDK named QSPIUtilsQuadEnable().

    >> during start

    Do you mean sometime during your application initialization after boot load is complete? 

    >> Forcing a return after '/* Read Status register */' routine (= skip the writing of the enable bit),
    it seems that there is the problem. Do I need to skip writing if enable bit is already set?

    Can you please provide more detail? What routine? What QSPI register is being read/written?

    >> TIRTOS not started at this time

    Do you mean you have your code for checking the SD card & update the QSPI before RTOS has started?

    Does the OOB example work when:

    • loaded from JTAG / CCS?
    • boot loaded from QSPI? 

    Regards,
    Frank

  • Hi Frank,

    I am not able to reproduce the problem any longer, flashing seems to work perfectly now.
    Maybe it was a problem with my sequence of calling QSPI functions...
    Anyway, to complete your questions I have added my comments below.

    Thanks for supporting me.

    Regards, Thomas


    >>  loading the code by CCS and executing directly
    Do you mean your application works when loaded from JTAG?
    Thomas:>Yes.

    >> But after flashing the project
    Do you mean you've programmed your application into QSPI flash and are bootloading via QSPI boot?
    Thomas:>Sorry, I meant loading not flashing.

    >>  I have a deadlock within QSPIUtilsQuadEnable().
    Do you mean starterware/library/qspilib/qspi_lib.c:378:void QSPILibQuadEnable()? I don't see any function in PDK named QSPIUtilsQuadEnable().
    Thomas:>I made a local copy of the file qspi_lib.c and renamed the function names - you are right.

    >> during start
    Do you mean sometime during your application initialization after boot load is complete?
    Thomas:>It should read "RUN after loading by debugger".

    >> Forcing a return after '/* Read Status register */' routine (= skip the writing of the enable bit),
    >>it seems that there is the problem. Do I need to skip writing if enable bit is already set?
    Can you please provide more detail? What routine? What QSPI register is being read/written?
    Thomas:>My intention was to read the enable bit before calling QSPILibQuadEnable() to verify if bit is already set.

    >> TIRTOS not started at this time
    Do you mean you have your code for checking the SD card & update the QSPI before RTOS has started?
    Thomas:>Yes.