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.

MSP430F6659: Assistance implementing a custom main flash memory solution containing multiple images and custom bootloader

Part Number: MSP430F6659
Other Parts Discussed in Thread: UNIFLASH

Hello TI Forums,

I am trying to design a solution that will allow me to have my device contain two images (image A and image B) where I store the most up-to-date firmware (lets say in image A) along with the previous version for fallback in case there are bugs or power outages while downloading new firmware (lets say in image B).

In order to do this, I plan on creating a custom bootloader / minimal image in flash that will select between image A and image B and perform basic communication with the server in case of errors or image issues (invalid images); I was also thinking the minimal image could update the firmware update code in case there are bugs in the way firmware is updated (but I can move this into the main application images, image A or image B, if this is too complex to implement).

I was thinking of having three CCS projects: one for my custom bootloader, one for my main application (will serve as either Image A or Image B), and another one for my firmware update code.


How would I go about storing each of these pieces of code (the binary output of the CCS project) into their respective locations in memory? Would I need to modify the linker file of each project to place their respective flash within predefined zones? Would I have to use uniflash to image the whole device before sending it to the field (like flashing 3 separate images in three different locations, one for the bootloader, main app image, and firmware update code)? Is there a way I could package all three pieces of code into one binary file, and send that over the air to replace the whole main code flash for any devices out in the field that are not currently implementing this solution?

I am planning on issuing firmware updates through the cloud, so I would like to send the device a binary bitstream that represents the bits of data to put into a specific flash region (whether it be for temp image that will replace image A or image B, or if it represents new firmware update code).

Attached I have a PDF I made that is showing what I am trying to implement.Proposed Memory Map.pdf

Any help on how to implement this the best way or any examples that do what I am trying to do, would be greatly appreciated.

Thank you!

**Attention** This is a public forum