QUOTE (Sirko @ Feb 25 2011, 02:01)

т.е. в моем случае сторка будет выглядеть так:static int __attribute((section(".progmem.something"))) Var = -628;
Я делаю
CODE
__attribute__((section(".progmem.filename.variable_name")))
static int Var = -628;
Т.е. располагаю атрибут строкой выше и имя секции начинается (обязательно) c .progmem, а далее идет либо просто имя переменной для глобальной, либо имя_файла.имя_переменной для глобальной статической либо имя_класса::имя_переменной. Т.е. имя секции для каждой переменной должно быть уникальным - это позволит линкеру выкинуть неиспользуемые (ключ --gc-sections).
QUOTE (Sirko @ Feb 25 2011, 02:01)

Эффект действительно есть, предупреждение не выводится, значение константы теперь не в озу, но где оно???
Можно поискать в листинге.
QUOTE (Sirko @ Feb 25 2011, 02:01)

int x = *((int*)(pgm_read_word(&Var)));
на экране мусор.
Оно и понятно - вы запутались в указателях. Все проще. int x = pgm_read_word(&Var);