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.

MSP432P401V: Flash Erase/Write with non-blocking API calls..

Part Number: MSP432P401V

Hi Team '432,

I have a customer question..

The Datasheet says “The main memory can be viewed as two independent identical banks of up to 1MB each, allowing simultaneous read or execute from one bank while the other bank is undergoing a program or erase operation.“

In addition, if the Flash erase or program function is located in ROM, then you should be able to erase/program either bank without blocking. However, DriverLib only supports blocking APIs.

 What is the preferred method for implementing non-blocking flash erase/program code?

Thanks, Merril

  • Hi Merril,

    thank you for reaching out to us. We'll try to clarify this point as soon as possible. We will probably come back to you on Monday.

    Best regards

    Peter

  • Hi Team -

    Can someone please advise on this?

    Thank you, 

    Dan

  • Hello Merril,

    sorry for the delay in our response. The technical aspects on this are as described in the Technical Reference Manual

    The FALSH controller related functions, which come with the device's ROM based library are described in this document

    The FLASH functions, as described, can be executed from either ROM or SRAM.

    When looking for non-blocking examples on FLASH operations, please go to our TI-Resource Explorer and checkout respective code example (please see the screen shots below).

    Best regards

    Peter

  • Thanks Peter,

    I have a follow-up question about this customer's application.

    If I understand this correctly, I can use the initiateSectorErase function to do a non-blocking erase on one back while resuming execution on another bank. After the interrupt fires for an erase, I should then use the blocking verifyMemory function to check that erase completed successfully, and retry if necessary until I reach the number of tries specified in the TLV.

    I see that interrupts must be disabled in the notes at the bottom of section 10.3.3.1 in SLAU356I. Do you know if there's any danger in doing a non-blocking erase to sector 0 of bank 1, and then calling programMemory on a different sector of the same Memory bank?

    Thanks,
    Michael

  • Hello Michael,

    the Bank being erased is not accessible for code execution or any other accesses to this memory. If violating this restriction, this would result in an error flag, and unsuccessful completion of the respective operation.

    For further details please consult the previously attached documents.

    Best regards

    Peter

**Attention** This is a public forum