Есть старый проект для MCS-51, причем написан на ассемблере. Потребовалось в этом проекте кое что поменять. И захотел я под это дело переписать его на Си. Но тут возникла загвоздка. Используется в этой программе один прием детектирования резета. В некоторую определенную область ОЗУ пишется определенная сигнатура. При старте этот кусок памяти проверяется на сравнение с сигнатурой. Если совпадение, то считается что процессор стартовал после подачи резета. Если несовпадение то был старт по включению питания.
И вот в чем проблема. Компилятор KEIL делает в самом начале программы заполнение ОЗУ нулями. То есть этот прием детектирования резета не работает! Необходимо как то отключить очистку памяти.
Железо менять нельзя - устройство в серии, можно только программу.