Цитата(Airy @ Apr 26 2009, 20:47)

Нужен конкретный пример или конкретный совет
Конкретно с AVR не работал, на сколько я понимаю, у WinAVR есть скрипты линкеры под конкретные микроконтроллеры.
Найдите тот, что для Вашего.
Найдите в нем описание секции .text
Незнаю, как выглядит ее описание в Вашем случае, но это будет что-то похоже на
Код
.text :
{
*(.text .stub .text.* .gnu.linkonce.t.*)
KEEP (*(.text.*personality*))
}
Предположим Вам нужно зарезервировать 512 байт в конце секции. Размер флеша (как я понял 2048К)
Код
.text :
{
*(.text .stub .text.* .gnu.linkonce.t.*)
KEEP (*(.text.*personality*))
. = 1536;
KEEP(*(.my_data*))
}
Строка
. = 1536
Говорит, что текущий указатель смещается в позицию 1536 байт от начала секции.
Строка
KEEP(*(.my_data*))
говорит, что дальше следует размещать все переменные, константы, ф-ции и т.п. (в терминах LD - символы) из секции с именем .my_data
Размещение структуры в этой секции
Код
#define MY_ARRAY_SIZE 510
typedef struct {
short datasize;
char myarray[MY_ARRAY_SIZE];
} __attribute__((section(".my_data"))) My_Struct_t;
My_Struct_t my_struct;
Примерно так.