Dale Cunningham wrote: ...
So far, looking at the assembler output, it seems that calls are my only problem - they use direct addressing. So, I can just "fix" these few lines in the assembler or try indirect calls in C or just inline everything.
you could make your own linker script that links the program into the RAM address range. then just insert that data as a const char * array in your application a small copy and execute assembler function "StartBSL(void * src)" can then copy and execute that code from RAM.
see in our CVS, the jtag code uses "funclets" and the sources have such a linker script like the mentioned above.
http://cvs.sourceforge.net/viewcvs.py/mspgcc/jtag/funclets/ i guess i have to implement somthing like that in the "examples" section ;-) chris