2010-08-10 4 views
7

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

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

Спасибо,

ответ

6

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

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

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

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

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

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

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

и

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

+0

Удивительный, спасибо. То, что я делаю в данный момент, пытается загрузить код нарушения в ОЗУ, чтобы попробовать это. Я дам вам знать, как я себя чувствую. Я просто хочу, чтобы PM00042 был так же ясен, как и ваш PM ... –

+0

PM00042 исчез - попробуйте найти PM0056 или PM0063. Вы также можете перейти на сайт ST, найти раздел STM32 и найти документацию «Руководство по программированию». –