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.

MSP430FR2311: I2C BSL Example

Part Number: MSP430FR2311
Other Parts Discussed in Thread: MSPBSL

Hello,

Are there any examples for how to use the BSL on the MSP430FR2311?  

I read through this document  and all I can see from it is that you can jump to the bootloader with the following:

__disable_interrupt(); // disable interrupts
((void (*)())0x1000)(); // jump to BSL

Then send I2C commands to the device using address 0x48 to install new firmware.  Is that all I need to include in my code?  I guess I was thinking of having a function call that would get it into bootloader mode and then if I need to implement a remote update from the master end, I could always add that later to my master device.

Is this assumption correct?

Are there any software examples that show how this is done from the master end of things?

  • Hey Andrew,

    All the BSL information can be found on the MSPBSL page.  It links all the documents that explain the BSL for FRAM devices, and gives you different options and examples on how to envoke it. 

    Please read through the page and let me know if you have any specific questions. 

    Thanks,

    JD 

  • JD,

    3.3.1.2 and 3.3.1.2.1 are not very clear in http://www.ti.com/lit/ug/slau550w/slau550w.pdf

    So I understand you must do:

    __disable_interrupt(); // disable interrupts ((void (*)())0x1000)(); // jump to BSL

    to start the BSL, but I don't understand the "action" function.  Where is the list of function numbers and their descriptions?

    Also, it isn't clear if when you are bootloader on a already programmed device and nothing was ever done and then power was cycled will it return to running the main application.

  • Hey Andrew,

    Reading through that section, I think it's being slightly high level to cover all the FRAM Devices.  Some have I2C BSL, others have UART, ect.  This is specified for each device in the datasheet and usually of the ti.com part selector.  

    There are 2 ways to invoke the built-in BSL.  Either via your application software or externally via a hardware invoke.  

    The sections you asked about are for when your application code is trying to invoke the BSL.  The important thing to remember to invoke the BSL from software is to disable interrupts and then jump to address 0x1000.  The BSL will take over from there. 

    Edit: Those sections of the FRAM BSL User's Guide, it does specify that the peripherals used by BSL need to have their registers reset.  

    Hope that helps.

    JD  

**Attention** This is a public forum