md5sum писал(а):При стирании/записи в NRWW CPU останавливается, до окончания операции.
То есть, к примеру pagesize 32 слова (64 байт), то можно, находясь в пределах страницы, затереть всю остальную область NRWW и последней командой затереть "свою" область.
После чего CPU вернется из останова в чистую флешь и сбросится на начало памяти
Т.е., правильно понимаю, что функция, которая будет затирать область NRWW, должна физически находиться в пределах одной страницы, т.е. в пределах 64 байт (для Атмеги8, в данном случае)?
md5sum писал(а):
Только непонятно зачем это надо? Фьюзы ведь из бутлоадера не поменяешь и МК при каждом последующем запуске будет пытаться запуститься из секции bootloader.
В область бутлоадера можно попасть не только при запуске МК (и выставленном фьюзе BOOTRST), но и из кода прикладной программы, собственно, я так и собираюсь сделать. Переключение между прикладной программой и бутлоадером у меня получилось и стабильно работает. Обновление прикладной программы тоже получается, но есть еще мысль реализовать изменение области NRWW - в том числе и полностью эту область очистить. Пока получается стереть (и обновить) только одну страницу в области NRWW, и больше ничего - затереть вторую страницу не получается, ничего не происходит.
md5sum писал(а):
А вот, если секция бутлоадера не залочена, то можно в основную память залить временный "прошивальщик" и затем с его помощью заменить основной bootloader. Один раз пришлось так изголяться - ISP выводы были физически не доступны, а в старом butloader-е была критическая ошибка...
А как такое возможно? Ведь функция, которая меняет данные в памяти программ (в обеих областях - RWW и NRWW), должна быть расположена в области NRWW?