Ядро Коры-M3 STM32F103 останавливается во время стирания Flash-страницы, потому что FPEC занят и не может больше выбирать инструкции от флэш-памяти?

На STM32F103 стирание Flash-страницы берет 20 мс, во время которых ядро останавливается для меня. Не ясно из руководства по программированию PM00042 Flash ST, останавливалось ли ядро всегда при стирании Flash-страницы или останавливается ли это просто, потому что сам поток команд находится во флэш-памяти (в моем проекте), и FPEC (интерфейс флэш-памяти) занят и не может выбрать больше инструкций.

Другой способ задать этот вопрос, "был бы, выполняя мой код программы флэш-памяти от RAM, избегают останова стирания Flash-страницы?".

Спасибо,

7
задан Captain NedD 10 August 2010 в 02:22
поделиться

1 ответ

Я считаю, что во время программирования флэш-памяти любая попытка доступа к флэш-памяти остановит процессор.

Итак, что вы хотите сделать, так это убедиться, что критический код (возможно, обработчики прерываний, средство контроля сторожевого таймера и т. Д.) Может быть запущен из ОЗУ во время работы программы. В последний раз я использовал STM32 (вероятно, ~ 2 года назад) именно так и поступил.

Чтобы внести ясность, ответим на вопрос в конце вашего сообщения:

Другой способ задать этот вопрос - "запустил бы мой флеш-программирование код из ОЗУ, избегайте флэш-страницы стирание стойла? ».

Я считаю, что ответ -« нет ». Не имеет большого значения, где находится драйвер флэш-программирования, важно то, что делает ваш код , пока выполняется операция стирания / программирования. progress . Если ЦП пытается получить доступ к флеш-памяти во время операции, даже для чтения инструкций вашей программы или чтения таблицы констант, я считаю, что он остановится.

Я точно знаю, что именно так NXP flash работает на их ARM uC, но я хотел бы также процитировать главу и стих для STM32. По какой-то причине руководство по программированию flash сейчас кажется недоступным, но я нашел следующий язык в аналогичном документе (PM0068, I считают):

Текущая операция флэш-памяти не будет блокировать ЦП, пока ЦП не обращается к флэш-памяти.

и

Если во время программирования инициируется операция чтения / записи [во флэш-память], (Установлен бит BSY), ЦП останавливается, пока не завершится текущее программирование основной флэш-памяти.

7
ответ дан 7 December 2019 в 07:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: