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.

TMS320F2800137: Interrupt stop while running checkFsmForReady()

Part Number: TMS320F2800137

Tool/software:

Customer find the other interrupt will stop while running checkFsmForReady(), we sure both flash operation api and interrupt function are running from RAM, may we double confirm if checkFsmForReady suspend the interrupt inside the API?

As below code, we use GPIO to indicate the flash API and interrupt function, we could see GPIO in interrupt function stop toggle while GPIO is high in the flash API running.  

  • Hi,
    checkFsmForReady() does not disable any interrupt. It just reads the STATCMD register CMDINPROGRESS bit and sets the busy or ready status and returns.

    Could you please ask customer to comment the call and add some delay see issue still exists?


    Regards,
    Rajeshwary

  • Hi Rajeshwary

    I have do test according your advice and it look interrupt still stop while flash under erase, my understand the interrupt should not be stop, could you help double confirm my idea? attachment my firmware for reference, it enable flash bank erase and timer interrupt which both running on RAM. https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/171/flashapi_5F00_ex1_5F00_programming.7z

    1)  below code wait flash erase completed by using "fapi_checkFsmForReady()", interrupt stop before erase completed and recover after "fapi_checkFsmForReady()"

    2) below code remove "fapi_checkFsmForReady()" and waiting forever by using while(1), interrupt still stop for erase operation and then recover later. 

  • Hi, 

    I will review and get back to you.

    Regards,

    Rajeshwary

  • Hi,

    Flash API execution is interruptible. However, there should not be any read/fetch access from the Flash bank when an erase/program operation is in progress. Therefore, the Flash API functions, the user application functions that call the Flash API functions, and any Interrupt service routines (ISRs) must be executed from RAM.

    Can you please place all the function that are called in ISR in RAM instead of defining it as static inline?

    Regards,

    Rajeshwary