Устройство имеет бутлоадер, который умеет самопрограммировать флеш память (AVRMega64a).
Бутлоадер расположен в верхних адресах, основная программа - в начале области памяти программ.
Основная программа получает прошивку по некоторому каналу связи и записывает прошивку во внешнюю EEPROM память. Проверяет ее целостность и рестартует процессор watchdog-ом. Управление получает бутлоадер. Он самопрограммирует AVRMega данными из внешней EEPROM. Но к сож. некорректно. Я вычитываю флеш память и вижу несоответствие данных из ЕЕПРОМ и собственно того что у меня в дампе памяти.
В то же самое время если рестартовать процессор аппаратно, то все так как и ожидается: самопрограммирование проходит успешно и все данные точно соответствуют информации в ЕЕПРОМ. Фьюзы настроены, биты совместимости установлены. Если бы не этот момент, то все бы вполне себе устраивало
Я понимаю, что связано это скорее всего с инициализацией периферии, но пока не могу понять в чем моя ошибка. Еще нужно отметить, что в софтрестарт уходит процессор после работы основной программы и соответственно нужно учитывать и ее этапы по работе с периферией..
Выслушаю любые соображения на данный счет, спасибо!