Написал в WINAVR bootloader для меги8. По усарту принимаю данные и пишу их в flash (это как должно быть).
А в реальность flash не меняется как я не пытался ее изменить.
Подскажите, пожалуйста, что я забыл сделать.
// flash заполняю так
void BootFlashPage(uint32_t page, uint8_t *buf){
boot_page_erase(page); // стирание страницы
boot_spm_busy_wait(); // ждать окончание стирания
for(uint8_t i = 0; i < BootPageSize; i += 2){
uint16_t Data =0;// *buf++; // формирование слова данных
Data |=0;// (*buf++) << 8; // формирование слова данных
boot_page_fill(page + i, Data); // записать в буфер bootloader-а
}
boot_page_write(page); // запись страницы во FLASH
boot_spm_busy_wait(); // ждать окончания записи
}
после этого пишу
boot_rww_enable();
считываю flash программатором и своими глазами вижу, что состояние памяти не изменилось