This section contains static data which was defined in your code. Things like the following would end up in .data:

char err_str[] = "Your program has died a horrible death!";

struct point pt = { 1, 1 };

It is possible to tell the linker the SRAM address of the beginning of the .data section. This is accomplished by adding -Wl,-Tdata,addr to the avr-gcc command used to the link your program. Not that addr must be offset by adding 0x800000 the to real SRAM address so that the linker knows that the address is in the SRAM memory space. Thus, if you want the .data section to start at 0x1100, pass 0x801100 at the address to the linker. [offset explained]


When using malloc() in the application (which could even happen inside library calls), additional adjustments are required.