In our ASIC, we have multiple cores: a cortex M series, plus a DSP. The separate DSP core is getting it's memory poplulated by it's output elf into several arrays that are located (using the __attribute__((at(x)) method) at the correct shared memory location as seen by the Cortex, and that C file is compiled into the cortex image.
We do this so that uVision can load the DSP's memory as well.
Unfortunately, it seems like the linker trickery used to make this happen doesn't put the sections that should be zero init in the list of things to be initialized by __scatterload_zeroinit (or i.__scatterload_zeroinit).
These .bss-ish sections do end up in the elf file (because our post processing tool that converts the cortex mcu AXF to a flash image knows what to do), but when loading from the debugger all these specifically placed .bss sections (initialized arrays of all zeros) don't end up being initialized by __scatterload during startup.
Any help with this? Is this a keil tool bug? Am I doing it wrong?