Стерло ли ядро ​​Cortex-M3 STM32F103 во время удаления страницы флэш-памяти, поскольку FPEC занят и не может получить дополнительные инструкции из флэш-памяти? - PullRequest
7 голосов
/ 10 августа 2010

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

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

Спасибо

1 Ответ

7 голосов
/ 10 августа 2010

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

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

Так что, чтобы было ясно, чтобы ответить на вопрос в конце вашего поста:

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

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

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

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

и

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

...