Other Parts Discussed in Thread: MSP-FET
I am building a board around an MSP430FR5969 which will be used as the controller on a platform, with individual units getting different hardware configurations. As an example, there are several heaters, and some units may have 4 heaters, while others may have 8 (just an example). I have been reading up on how to use the FRAM here: www.ti.com/.../slaa628.pdf
I'd like to program the boards, and leave them on a shelf until we are ready to build up a full system. During the final assembly checkout, I would like to write values to several constants, (such as numHeaters and productSerialString[16]), and then never let those values be written to again.
Would this approach work?
Initial code is setup with placeholders in the respective constants, and the linker file puts those constants into the Constants MPU memory segment. In the _system_pre_init() function, I would actually set the MPUSAM register using a constant itself, which allows writing to the constants section. I am interfacing with my MSP430 through I2C, and I can create a command which allows updating the values of the constants. At board checkout time, I could run the commands to assign the serial number and configuration values, and finally update the MPUSAM constant to turn off write access to the Constants memory segment. Then, after a hard-reset, the _system_pre_init() function would shut off write access to that memory segment.
This should effectively shutoff the possibility of code overwriting the constants, right? I'm not too worried about someone plugging a debugger in and changing constants, but I do want to avoid the possibility of a software update overwriting these values. I haven't learned how to do an I2C SW update yet, but that is on my list of future functionality.
Thanks,
Paul