igorbounov писал(а):
...During a write operation to the Flash memory any attempt to read the Flash memory will stall the bus. The read operation will proceed correctly once the write operation has completed. This means that code or data fetches cannot be made while a write/erase operation is ongoing."
Но тем не менее, я нигде не вижу в прогрммах, как во время записи в память программа могла загружаться не из самой же флэш-памяти
Я, если честно, не вижу тут никакого противоречия. То, что шина стопориться означает только то, что шина стопориться. Я понял это так, что когда идет запись, процессор просто не может считать инструкцию и ждет. И все. Это, конечно, тоже важно - так можно прерывание пропустить, но ничего само по себе не ломается.
В аппноте нигде не написано, что код нужно помещать в RAM и в SPL для stm нигде нет никаких отметок вида __attribute__((section("EXECUTABLE_MEMORY_SECTION")));
В даташите на миландр же написано явно:
Цитата:
В режиме программирования Flash-память программ не может выдавать инструкции и данные процессору, поэтому перевод памяти в режим программирования (установка бита CON = 1) возможен только программой, исполняемой из памяти, установленной на внешней системной шине, или ОЗУ.