Presumably changing the "RAM settings" involves writing specific values to specific addresses;compiling with "-O2 -g+" will have the effect of causing accesses to behave as though volatile, whilst this behaviour will be optimised out with "-O2 -Otime"; for example:void foo(void){ unsigned char *f = (unsigned char *)0x100; *f = 2; *f = 4; *f = 6;}Generates three write accesses with debug, but only writes "6" without debug enabled.Declaring f as "volatile unsigned char*", will result in all three writes always being generated.If you are talking to peripherals, are you sure you're using the volatile specifier correctly?hths.
void foo(void){ unsigned char *f = (unsigned char *)0x100; *f = 2; *f = 4; *f = 6;}