I am designing an application where we compile our code and link it with code from 2 TP (third party) sources.
I am attempting to edit a linker.cmd file to place the RAM variables from the third party sources into specific memory areas so that we can use the MPU to ensure the TP code will not change any of our data and vice versa.
Placing the RAM variables is no problem what is causing me problems is making sure the TP .bss and .data sections are properly auto and zero initialized.
I am somewhat confused by the documentation of NOLOAD, to me if you are using rom_model all RAM sections should be NOLOAD but making some sections NOLOAD seems to supress auto initialization.
I am having problem using --zero_init=on as this will zero init our stack, after we have started using it. The call to __TI_auto_init uses the stack at the same time zeros it and thus cannot return. I wanted to apply NOINIT to the stack section but it seems you can apply only 1 special section type to a section and it already type NOLOAD.
Am I correct in that the special sections types affect auto and zero initialization and if yes can I get a better explanation of how.
Can I apply both NOLOAD and NOINIT to a section, and if yes what is the syntax?
Using ARM code generation tools 5.1.1.