Написал в 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 программатором и своими глазами вижу, что состояние памяти не изменилось
|