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.

SIMPLELINK-MSP432-SDK: Bootloader_BSL by software

Part Number: SIMPLELINK-MSP432-SDK
Other Parts Discussed in Thread: CC2640, MSP430FR6047

Hi, at this point not so much a question but some remarks:

  • It should be nice if the MSP432Pxxx could also be selected!

  • We are using the 2 * MSP432P4011, an CC2640(module) and a MSP430FR6047 in our design. Its composed of two pcb's:
    pcb 1: CC2640+MSP432P4011 and, pcb 2: MSP432P4011 + MSP430FR6047
    Both pcb are connecte through rs485 between both MSP432P4011
    We wrote lots of software on all chips and, everything works fine!
    Sofar so good.

We started to implementation of OAD four months ago and succeeded to upgrade the CC2640 as well as its companion MSP432P4011(using custom BSL reprogramming the MSP432P4011 like the existing sample of 'oad_firmware_update'. Then we continued to implement the MSP432P4011 as well as the MSP430FR6047 residing on pcb 2. For hardware we selected the advised or mandatory serial ports(UART's). Since the MSP430FR6047 will be updated via the MSP432P4011, the latter one was considered first! Then trouble starts!!

We find what goes wrong just today, after a few weeks! We red 'slau622j'.

From the pcb1's MSP432P4011 we send a commend to go to BSL. The MSP432P4011(pcb2) then executes:

case MSG_RS485_CMD_MC_OAD:
{
    Display_print0(displayOut, 0, 0, "MSG_RS485_CMD_MC_OAD received");

    MAP_Interrupt_disableMaster();

    // Setup interrupt priorities into 0x00 before entering boot loader
    int i;
    for ( i=0; i < 240; i++) NVIC->IP[i] = 0;

    NVIC->ICER[0] = 0xFFFF;
    NVIC->ICPR[0] = 0xFFFF;
    NVIC->ICER[1] = 0xFFFF;
    NVIC->ICPR[1] = 0xFFFF;

    // Call the BSL with given BSL parameters
    ((void (*)())BSL_ENTRY_FUNCTION)((uint32_t)BSL_PARAM);

    // At this point the BSL should take control and will this application be void!
    // Transmit 0xFF from CC and wait there for 0x00!
}
break;

Then we excute sending 0xff (pcb1) and receive 0x00 ack(pcb2), which is ok!
Then we send password 0xff(256*) and recive '0x3B 0x05' which is not ok while the chip is mass erased!

Because we also use the MSP430FR6047 we also red its papers and found a different approach, sending password TWICE!!

We then discovered that our on board BSL is not version 00430044(as inthe documentation) but 00430045!!

So we tried the method described for the MSP430FR6047 and: IT WORKS!!!!

Question: Is this accidental or are the manuals not updated or something else??

rgds.,

Laurent van Poppelen
2M Engineering 
the Netherands

  • Hi Laurent van Poppelen,

    I'm glad you were able to figure out the solution to your issue. I would say this is just a coincidence, but there could've been an update that pushed those device to the other BSL version. It would be interesting if this "using custom BSL reprogramming the MSP432P4011 like the existing sample of 'oad_firmware_update'" had anything to do with the change as well. 

    Regards,

    Luke

  • Hi Luke,

    no, has nothing to do with the sample 'oad_firmware_update' since that sample uses a custom bsl which reads/writes from internal flash! That bsl resides at mem location 0x0000 0000, the user application starts at 0x0000 2000! The uploaded new firmware resides at 0x0010 0000 up to the end. In my case I do use the chips internal BSL!

    rgds,

    Laurent