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.

  • TI Thinks Resolved

Another Flash BSL question - where did 'Bank Erase' go?

Prodigy 30 points

Replies: 3

Views: 1001

In SLAU319b section 3.4.2, the text describes the 'bank erase' command, but it's missing from the command table 3-4.  (A likely suspect, 0x14, is marked as 'reserved'.)  I'm guessing that the device errata for FLASH34 (no concurrent read of code flash while bank erasing another bank) is involved.

Being able to erase a flash bank from BSL would be handy - the workaround (issuing a LOT of segment erase commands) looks like it will be much more time consuming.  Anyone have knowledge of whether this will eventually get implemented?  it might have some bearing on software design choices I make for future revision parts.

Dave

  •  

    David Boyd
    In SLAU319b section 3.4.2, the text describes the 'bank erase' command, but it's missing from the command table 3-4.
    In SLAU319b the term Erase Bank only appears in section 3.5.1 Protected Commands. The rest of the document uses the term Erase Block instead.

    David Boyd
    (A likely suspect, 0x14, is marked as 'reserved'.)

    Looking in the BSL source code SLAA450 does shows:

    //Received commands
    #define ERASE_BLOCK 0x14

    The code which handles ERASE_BLOCK command is contained in #ifdef SUPPORTS_ERASE_BLOCK blocks. SUPPORTS_ERASE_BLOCK isn't #defined in any of the projects within SLAA450 which confirms the ERASE_BLOCK command isn't yet supported, but from SLAA450 not immediately obvious why.

  • Guru 15690 points
    Same question here. Is BANK erase supported by a BSL command for the MSP430F5515?

    Thx,

    MikeH

     

  • In reply to MikeH:

    Hi,

    The Bank erase command is not supported by the F5xx/F6xx BSL. The code doesn't define SUPPORTS_ERASE_BLOCK, which is used in the following code:
    #ifdef SUPPORTS_ERASE_BLOCK
    case ERASE_BLOCK: // Erase Block
    eraseLocation(1, addr);
    break;
    #endif


    BSL430_eraseLocation also mentions the following about the parameter block_erase:
    * *Parameters:
    * char block_erase currently unused 1: erase block 0: erase segment


    If I remember correctly, this functionality was removed due to bug FLASH34 which doesn't allow code execution from flash concurrently with bank erases. This complicates the implementation in BSL since the device needs to jump to RAM, and then return via Z-Area. It's not impossible to do though, but it's just not implemented in the current BSL.

    The implementation would be simpler in devices not affected by FLASH34, but even in these cases, the functionality is not supported by current BSLs.

    Regards,
    Luis R

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.