I discovered the hard way that the Kinetis K series parts I'm using (K22FN1M0 and K22DX256) have two banks of RAM and that objects can't span banks.
The default linker file creates two memory regions:
m_data (RW) : ORIGIN = 0x1FFFC000, LENGTH = 0x00004000
m_data_20000000 (RW) : ORIGIN = 0x20000000, LENGTH = 0x00004000
It's apparently left to the user to manually place objects in the .m_data_20000000 section to make use of the second bank. I can certainly do that, but the same application code is used across two different Kinetis MCUs and one ColdFire MCU. I'd rather not have to explicitly place everything in the linker file or have to add macros to the code for section placement.
It seems like a simple solution ought to be to place a dummy variable at the boundary. Is there a down side to doing this? What's the easiest way to do this with the GNU linker? I'm not running any code from RAM (bootloader pieces notwithstanding) so performance isn't a concern.
Thanks,
Scott