Is there any way to tell GCC to not initialize a particular global array to zero?
I want to reserve a large chunk of memory for storing a large data structure that my code manages, so I say:
#define SIZE_16_MB 0x01000000
BYTE mChunkSpace[SIZE_16_MB];
The problem is that crtinit() takes a million years to initialize this space to zero, and it is not at all necessary.
Is there any way I can force it not to initialize that space?
Currently I am hard-coding a memory address that is outside what the linker knows about, but that is not a particularly robust way of doing things.
Additionally, this is a slow embedded proc (50MHz Microblaze), so don’t assume that i am talking about a PC. It really does take a long time to zero that space.
You can use the
gccattributes to store the object in another new memory section, like for example in the.noinitmemory section.