Все разобрался
Цитата(aesok @ Mar 13 2009, 12:56)

Похоже линкер выкидывает .initX секции.
Нет не выкидывает.
При включении оптимизации линкер раскидывает данные по разным секциям. Получается куча секций: ".bss.fin_counter1", ".bss.fin_counter2" и т. д. Причем эти секции не входят в .bss. Линковщик добавляет (не выкидывает) эти секции уже после секции bss, соответственно они и не инициализируются при старте. Добавил в скрипт линкера строку (выделена красным) и все заработало.
CODE
/*Кусок из скрипта линкера*/
/* collect all uninitialized .bss sections that go into FLASH */
.bss : {
. = ALIGN(4);
_sbss = .;
*(.bss)
*(.bss*)
*(COMMON)
. = ALIGN(4);
_ebss = .;
}
Теперь кажется все, всем спасибо.