Hello,
I'm playing with the new MSP432 Launchpad, and want to implement a Boot Override Flash Mailbox configuration to use the hardware invoked TI BSL. But when trying to read the contents of the Boot Override Flash Mailbox, I'm getting a lot of 0xFFFFFFFF's instead of the Mailbox Start 0x0116ACF6 for example. In the Datasheet is described, that this area is not protected. So possibly it has been deleted sometime. My first question is, if it has been designed for 'self-reconsturction', i.e. writing the Mailbox Start content on my own etc.?
Besides, I'm sure, that the BSL is erased either. Is there a possibility to get the the original BSL back into Flash?
And last but not least, I'm missing the preprocessor defines for the Boot Override Flash Mailbox in msp432p401r.h. I think there should be added something like it has been done for the TLV:
typedef struct { __IO uint32_t rMB_START; __IO uint32_t rCMD; __IO uint32_t rFAC_RESET_ACK; __IO uint32_t rRESERVED0; __IO uint32_t rJTAG_SWD_LOCK_SECEN; __IO uint32_t rJTAG_SWD_LOCK_AES_INIT_VECT_0; __IO uint32_t rJTAG_SWD_LOCK_AES_INIT_VEC_1; __IO uint32_t rJTAG_SWD_LOCK_AES_INIT_VEC_2; __IO uint32_t rJTAG_SWD_LOCK_AES_INIT_VEC_3; __IO uint32_t rJTAG_SWD_LOCK_AES_SECKEYS_0; __IO uint32_t rJTAG_SWD_LOCK_AES_SECKEYS_1; __IO uint32_t rJTAG_SWD_LOCK_AES_SECKEYS_2; __IO uint32_t rJTAG_SWD_LOCK_AES_SECKEYS_3; __IO uint32_t rJTAG_SWD_LOCK_AES_SECKEYS_4; __IO uint32_t rJTAG_SWD_LOCK_AES_SECKEYS_5; __IO uint32_t rJTAG_SWD_LOCK_AES_SECKEYS_6; __IO uint32_t rJTAG_SWD_LOCK_AES_SECKEYS_7; __IO uint32_t rJTAG_SWD_LOCK_UNENC_PWD_0; __IO uint32_t rJTAG_SWD_LOCK_UNENC_PWD_1; __IO uint32_t rJTAG_SWD_LOCK_UNENC_PWD_2; __IO uint32_t rJTAG_SWD_LOCK_UNENC_PWD_3; __IO uint32_t rJTAG_SWD_LOCK_PARAMS_ACK; __IO uint32_t rRESERVED1; __IO uint32_t rRESERVED2; __IO uint32_t rSEC_ZONE0_SECEN; __IO uint32_t rSEC_ZONE0_START_ADDR; __IO uint32_t rSEC_ZONE0_LENGTH; __IO uint32_t rSEC_ZONE0_AESINIT_VECT_0; __IO uint32_t rSEC_ZONE0_AESINIT_VECT_1; __IO uint32_t rSEC_ZONE0_AESINIT_VECT_2; __IO uint32_t rSEC_ZONE0_AESINIT_VECT_3; __IO uint32_t rSEC_ZONE0_SECKEYS_0; __IO uint32_t rSEC_ZONE0_SECKEYS_1; __IO uint32_t rSEC_ZONE0_SECKEYS_2; __IO uint32_t rSEC_ZONE0_SECKEYS_3; __IO uint32_t rSEC_ZONE0_SECKEYS_4; __IO uint32_t rSEC_ZONE0_SECKEYS_5; __IO uint32_t rSEC_ZONE0_SECKEYS_6; __IO uint32_t rSEC_ZONE0_SECKEYS_7; __IO uint32_t rSEC_ZONE0_UNENC_PWD_0; __IO uint32_t rSEC_ZONE0_UNENC_PWD_1; __IO uint32_t rSEC_ZONE0_UNENC_PWD_2; __IO uint32_t rSEC_ZONE0_UNENC_PWD_3; __IO uint32_t rSEC_ZONE0_ENCUPDATE_EN; __IO uint32_t rSEC_ZONE0_DATA_EN; __IO uint32_t rSEC_ZONE0_PARAMS_ACK; __IO uint32_t rRESERVED3; __IO uint32_t rRESERVED4; __IO uint32_t rSEC_ZONE1_SECEN; __IO uint32_t rSEC_ZONE1_START_ADDR; __IO uint32_t rSEC_ZONE1_LENGTH; __IO uint32_t rSEC_ZONE1_AESINIT_VECT_0; __IO uint32_t rSEC_ZONE1_AESINIT_VECT_1; __IO uint32_t rSEC_ZONE1_AESINIT_VECT_2; __IO uint32_t rSEC_ZONE1_AESINIT_VECT_3; __IO uint32_t rSEC_ZONE1_SECKEYS_0; __IO uint32_t rSEC_ZONE1_SECKEYS_1; __IO uint32_t rSEC_ZONE1_SECKEYS_2; __IO uint32_t rSEC_ZONE1_SECKEYS_3; __IO uint32_t rSEC_ZONE1_SECKEYS_4; __IO uint32_t rSEC_ZONE1_SECKEYS_5; __IO uint32_t rSEC_ZONE1_SECKEYS_6; __IO uint32_t rSEC_ZONE1_SECKEYS_7; __IO uint32_t rSEC_ZONE1_UNENC_PWD_0; __IO uint32_t rSEC_ZONE1_UNENC_PWD_1; __IO uint32_t rSEC_ZONE1_UNENC_PWD_2; __IO uint32_t rSEC_ZONE1_UNENC_PWD_3; __IO uint32_t rSEC_ZONE1_ENCUPDATE_EN; __IO uint32_t rSEC_ZONE1_DATA_EN; __IO uint32_t rSEC_ZONE1_PARAMS_ACK; __IO uint32_t rRESERVED5; __IO uint32_t rRESERVED6; __IO uint32_t rSEC_ZONE2_SECEN; __IO uint32_t rSEC_ZONE2_START_ADDR; __IO uint32_t rSEC_ZONE2_LENGTH; __IO uint32_t rSEC_ZONE2_AESINIT_VECT_0; __IO uint32_t rSEC_ZONE2_AESINIT_VECT_1; __IO uint32_t rSEC_ZONE2_AESINIT_VECT_2; __IO uint32_t rSEC_ZONE2_AESINIT_VECT_3; __IO uint32_t rSEC_ZONE2_SECKEYS_0; __IO uint32_t rSEC_ZONE2_SECKEYS_1; __IO uint32_t rSEC_ZONE2_SECKEYS_2; __IO uint32_t rSEC_ZONE2_SECKEYS_3; __IO uint32_t rSEC_ZONE2_SECKEYS_4; __IO uint32_t rSEC_ZONE2_SECKEYS_5; __IO uint32_t rSEC_ZONE2_SECKEYS_6; __IO uint32_t rSEC_ZONE2_SECKEYS_7; __IO uint32_t rSEC_ZONE2_UNENC_PWD_0; __IO uint32_t rSEC_ZONE2_UNENC_PWD_1; __IO uint32_t rSEC_ZONE2_UNENC_PWD_2; __IO uint32_t rSEC_ZONE2_UNENC_PWD_3; __IO uint32_t rSEC_ZONE2_ENCUPDATE_EN; __IO uint32_t rSEC_ZONE2_DATA_EN; __IO uint32_t rSEC_ZONE2_PARAMS_ACK; __IO uint32_t rRESERVED7; __IO uint32_t rRESERVED8; __IO uint32_t rSEC_ZONE3_SECEN; __IO uint32_t rSEC_ZONE3_START_ADDR; __IO uint32_t rSEC_ZONE3_LENGTH; __IO uint32_t rSEC_ZONE3_AESINIT_VECT_0; __IO uint32_t rSEC_ZONE3_AESINIT_VECT_1; __IO uint32_t rSEC_ZONE3_AESINIT_VECT_2; __IO uint32_t rSEC_ZONE3_AESINIT_VECT_3; __IO uint32_t rSEC_ZONE3_SECKEYS_0; __IO uint32_t rSEC_ZONE3_SECKEYS_1; __IO uint32_t rSEC_ZONE3_SECKEYS_2; __IO uint32_t rSEC_ZONE3_SECKEYS_3; __IO uint32_t rSEC_ZONE3_SECKEYS_4; __IO uint32_t rSEC_ZONE3_SECKEYS_5; __IO uint32_t rSEC_ZONE3_SECKEYS_6; __IO uint32_t rSEC_ZONE3_SECKEYS_7; __IO uint32_t rSEC_ZONE3_UNENC_PWD_0; __IO uint32_t rSEC_ZONE3_UNENC_PWD_1; __IO uint32_t rSEC_ZONE3_UNENC_PWD_2; __IO uint32_t rSEC_ZONE3_UNENC_PWD_3; __IO uint32_t rSEC_ZONE3_ENCUPDATE_EN; __IO uint32_t rSEC_ZONE3_DATA_EN; __IO uint32_t rSEC_ZONE3_PARAMS_ACK; __IO uint32_t rRESERVED9; __IO uint32_t rRESERVED10; __IO uint32_t rBSL_ENABLE; __IO uint32_t rBSL_START_ADDRESS; __IO uint32_t rBSL_HARDWARE_INVOKE; __IO uint32_t rRESERVED11; __IO uint32_t rRESERVED12; __IO uint32_t rBSL_PARAMS_ACK; __IO uint32_t rJTAG_SWD_LOCK_ENCPAYLOADADR; __IO uint32_t rJTAG_SWD_LOCK_ENCPAYLOADLEN; __IO uint32_t rJTAG_SWD_LOCK_DST_ADDR; __IO uint32_t rJTAG_SWD_LOCK_ENC_UPDATE_ACK; __IO uint32_t rRESERVED13; __IO uint32_t rSEC_ZONE0_PAYLOADADDR; __IO uint32_t rSEC_ZONE0_PAYLOADLEN; __IO uint32_t rSEC_ZONE0_UPDATE_ACK; __IO uint32_t rRESERVED14; __IO uint32_t rSEC_ZONE1_PAYLOADADDR; __IO uint32_t rSEC_ZONE1_PAYLOADLEN; __IO uint32_t rSEC_ZONE1_UPDATE_ACK; __IO uint32_t rRESERVED15; __IO uint32_t rSEC_ZONE2_PAYLOADADDR; __IO uint32_t rSEC_ZONE2_PAYLOADLEN; __IO uint32_t rSEC_ZONE2_UPDATE_ACK; __IO uint32_t rRESERVED16; __IO uint32_t rSEC_ZONE3_PAYLOADADDR; __IO uint32_t rSEC_ZONE3_PAYLOADLEN; __IO uint32_t rSEC_ZONE3_UPDATE_ACK; __IO uint32_t rRESERVED17; __IO uint32_t rMB_END; } BootOverrideFlashMailbox_Type; #define FLMAILBOX_BASE (0x00200000) #define FLMAILBOX ((BootOverrideFlashMailbox_Type *) FLMAILBOX_BASE)