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.

TMS570LC4357: A simple Boot Up Routine

Part Number: TMS570LC4357

Assume the following:

  • We have a self contained application ("APP") that has been running at start address 0x0 during development.
  • When we go to production, it shall reside at address 0x0001_0000.
  • When we go to production, a boot up routine application ("BUR") shall reside at 0x0. It will do some checks and if they all pass, control will be given to the application at 0x0001_0000.
    • This is the BUR's memory config in its linker command file:

      VECTORS (X)  : origin=0x00000000 length=0x00000020
      FLASH0  (RX) : origin=0x00000020 length=0x00008000
      FLASH1  (RX) : origin=0x00200000 length=0x00200000
      STACKS  (RW) : origin=0x08000000 length=0x00001500
      RAM     (RW) : origin=0x08001500 length=0x00008000

Questions:

1. Is relocating the APP to 0x0001_0000 a matter of making this change to the linker command file:

VECTORS (X)  : origin=0x00010000 length=0x00000020
FLASH0  (RX) : origin=0x00010020 length=0x001effe0
FLASH1  (RX) : origin=0x00200000 length=0x00200000
STACKS  (RW) : origin=0x08009500 length=0x00001500
RAM     (RW) : origin=0x0800aa00 length=0x0007d600

2. Can the BUR then call the APP with: 

uint32 appLoc = 0x00010000;
((void (*)(void))appLoc)();

3. Are there any changes/gotchas to be aware of in order for the APP to function as it did when it resided at 0x0?

This is the approach I've taken, but it doesn't seem to work.