I am trying to embed a CAN bootloader into my application. In the linker command file I've reserved an area of flash to "bootFuncs" where I intend to place the bootloader functions, and after it executes it would call the application main() which I've assigned in linker file to 0x8000. Right now my bootloader is empty and simply just calls main. This only works if I do not add the #pragma CODE_SECTION(main,"appEntry"); As soon as my pragma is inserted my application does not boot.
- Are there areas of flash that should be avoided, since it appears the linker is avoiding 0x8000 (or so it would appear from the .map file)
- Are we not allowed to specify the memory location for main? Linker seems to want to put it at 0x11C98.
- Also, are there restrictions regarding initialization code and where it needs to reside? If I move it out of c_int00 (lets say SystemStartup()) but c_int00 calls SystemStartup() my program does not boot.
Any help, extra documentation or guidelines will be greatly appreciated.