Other Parts Discussed in Thread: MSP430F2618
Greetings all,
I am trying to implement the type of field update as described by Jens in a previous post. That is, write the binary to upper memory 0x10000, erase app in lower memory and rewrite with the new. Then erase the upper. Everything will be double checked with CRC16 checksums to ensure correctness.
I am using MSP430F2618, IAR and am writing it in C. My approach is to have main() be the bootloader section in the first flash segments and the app be a function in some upper segments. Interrupt vectors to be left alone. If unit comes out of reset and sees 0xFFFF @ 0x1FFFF it simply jumps to the app.
The application has a mode wherein it listens for commands via radio, then UART. If the command is to update the firmware it calls the function to upload a (massaged) TI.TXT file, convert it to binary and store it in upper memory.
I know that the bootloader and app must be "unlinked" as it were - not sharing any variables, functions, etc. What should I be on the lookout for? Any gotchas? I am not a compiler/linker guy so I'm unsure of all the things that go on. Does this sound reasonable? Any links to applicable documents or examples?
Thanks for any tips and advice.