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.

MSP430FR5739 Self Programming FRAM Firmware Update

Other Parts Discussed in Thread: MSP430FR5739

Hello,

I would like to write a firmware update function on my FR5739 board, and would like some advice on the best approach.

I'm using CCS with TI v4.4.1 compiler.

I need to do firmware updates via the uart with a custom protocol.

I will not have access to the test/reset/JTAG lines once deployed, so can't use the BSL functionality or JTAG.

I am happy that I can get the firmware to the MSP via the serial link, but where do I put it and how do I make it run?

Since it is FRAM based can I just put it in an array and then somehow change the address the code runs from followed by a soft reset?

Is this possible?

Are there any documents describing how to do this, I've found a couple about self programming EEPROM but not FRAM?

Also which file would I send to the MSP, i.e which file output by the compiler contains the firmware and would I need to convert it or could i just copy it byte for byte to the FRAM?


Thanks

  • Hi Morgan,

    We have an application note that should fit your need perfectly I think: MSP-BOOT www.ti.com/lit/pdf/slaa600 It also has associated code linked from the app note. This app note is for doing a main memory bootloader when you need to do something custom different from the BSL that's already in ROM. There is even an example included with the app note for an MSP430FR5739 device. You could use it as a starting point and modify the communications interface to match whatever custom protocol you are needing.

    As an FYI there's another thread going on right now with some detailed questions about this app note, including a question about how the interrupt vectors are handled when doing this on an FRAM part: http://e2e.ti.com/support/microcontrollers/msp430/f/166/t/396551

    Regards,

    Katie

  • In theory, yes, you can simply fetch the new code somehow and store it in an unused portion of FRAM. However, this usually won't work as expected, because the code needs to be compiled to run from this location. (most code is no relocatable). Also, you will have to update the interrupt vector table to match the new location.
    But you can download the new code into unused FRAM, put a copy function somewhere and then copy it from the storage location to the real destination. Then perform hard reset (a soft reset won't initialize all hardware to power-on defaults, which might cause trouble if the new software uses it differently and expects it to be in default condition at startup)
    For 5x family devices (F and FR), the power management module provides a bit to trigger a BOW (like a real reset). Be sure to use the proper password, or you'll only get an access violation PUC.
  • I think this is an old post... were you able to get this done? i would like to do the same thing.. Thanks

**Attention** This is a public forum