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.

MSP432 FLASH BOOT-OVERRIDE FLASH MAILBOX

Hi

    Now i am using msp432 to realise code refresh self. I have some question as follows:

1:whether or not the whole xxx.bin can be refreshed by the way of boot override of flash mailbox ? such as interrupt vector table, .text,  .const,  .cinit and so on.

2:i received whole xxx.bin  file to ram  by uart of GPRS,then write the whole xxx.bin file to bank1 of flash(0x00200000),then set up the structure  of mailbox,then initiate a REBOOT using the SYS_RESET_REQ,but it does not work, i did not find something more about this way to refresh,is somthing i make wrong or it does not support this way?

   i confused this  long time , please give me some advice or demo code if you konw ,thank you! 

 

  • Hi shaotu zhu,

    I'm not aware of an example code like that but you can take a look at our BSL code software-dl.ti.com/.../MSP432BSL_1_00_00_00.zip and this app note www.ti.com/.../slaa659

    If that does not work, please let me know and I'll try put something together for you.

    Best regards,

    David
  • thankyou David
    I have runing the demo code of slaa659 good,but in the demo code,it was update one IP protection section which only one function is defined in this section,what i want to do is update all the xxx.bin file by the way of boot override of flash mailbox, in the datasheet,it described as follows:
    IP protection must not be enabled for the first sector(address location:0x0,length:4KB) if in-field updates and use of TI BSL is desired;
    so in the xxx.cmd file ,i define the section of ".text"and others from 0x00001000, if i want to update all of my code,first i received xxx.bin file in ram,then write xxx.bin file except interrupt vector table to free flash spcae,then setup the mailbox to update this section from 0x00001000,last disable all the ISR,erase the first sector from 0x00000000,then write the interrupt vector table to first sector,then reboot,but is seems bad.
    so is there something wrong in this way? or it can not update all? if i want to update the code of myself by the way of wiress(first received the xxx.bin file by the way of wiress,then set up mailbox,then reboot ),how can i realized?
    i confused this question long time ,please give me your advice if you know,thank you!
  • Hi shaotu zhu,

    shaotu zhu said:
    what i want to do is update all the xxx.bin file by the way of boot override of flash mailbox,

    If I'm understanding correctly, the xxx.bin image is the new application that you would like to program into the flash. What is the size of this image?? > than 64KB??

    shaotu zhu said:
    if i want to update all of my code, first I received xxx.bin file in ram, then write xxx.bin file except interrupt vector table to free flash space, then setup the mailbox to update this section from 0x00001000, last disable all the ISR, erase the first sector from 0x00000000,then write the interrupt vector table to first sector, then reboot,

    This could work, my only concern with this flow, is what would happen if you lost power before you are able to program the interrupt vector table?? How would you recover from that??

    shaotu zhu said:
    if i want to update the code of myself by the way of wiress(first received the xxx.bin file by the way of wiress,then set up mailbox,then reboot ),how can i realized?

    It seems to me that you will need to implement a "custom" BSL or a Boot Loader (MSPBoot) and there are a few ways that you can accomplish this, you may want to take a look at this http://processors.wiki.ti.com/index.php/Custom_MSP430_BSL this is for a MSP430, but you could also apply it to a MSP432 

     Please keep in mind that the custom BSL size needs to be less than 8KB (fixed space reserved in the MSP432), so the size of your wireless stack may dictate the path that you will need to follow (custom BSL or a boot loader). For a boot loader you will need to partition your memory map, for example 16KB for your boot loader and 240KB for your application and the architecture should look something like this:

    Hopefully this makes some sense.

      Best regards,

        David

  • Hi shaotu zhu,

    I'm going to close the thread due to inactivity, but please post back if you have more information to re-open the thread.

    Best regards,

    David

**Attention** This is a public forum