Цитата(Intel4004 @ Oct 20 2011, 05:57)

Задача следующая: после ресета получить информацию из "прошлой жизни". Информация эта лежит в глобальных переменных.
Снять галочку NoInit в Options->Target (т.е. отключить zero-init для всей памяти) нельзя: используются сторонние библиотеки, а как они переживут такое - разбираться не хочется.
Т.е. надо что-то прямо противоположное __attribute__((zero_init))
Пока обошелся костылем - урезал в настройках размер памяти, и положил эти переменные по фиксированным адресам, про которые линкер не знает. Но это именно костыль. Некошерный. А как сделать красиво - не представляю...
В микрочиповском C30, который по-сути GCC, есть такие атрибуты, как
__attribute__((noload)) - выделить место под переменную, но не инициализировать ее
__attribute__((persistent)) - не инициализировать и не обнулять переменную при старте
Наверное и в Keil-е должно быть что-то похожее.
Альтернативный вариант - определить в файле линкера область памяти с атрибутом "без инициализации".
К сожалению, более конкретно не скажу - нет Keil-а под рукой