Перейти к содержанию
    

AT32F437: при стирании FLASH программа не работает

Здравствуйте, уважаемые любители и специалисты!

Я использую ArteryTek AT32F437. Описание м/к позволяет понять, что процессор исполняет команды с 0WS. Если почитать reference manual, то можно понять, почему:

.thumb.png.6f2c4cc27a213e6ac9e6f5a3ec7dc164.png

Здесь указано, что размер области flash-памяти, исполняемой с 0WS, ограничен тем, сколько будет предоставлено места для памяти SRAM.

Например, если хотим память SRAM 512 кБ, то получим FLASH 0WS 128 кБ; хотим SRAM 128 кБ - получим FLASH 0WS 128 кБ...

Отсюда напрашивается вывод, что та FLASH 0WS - это просто ее имитация на SRAM общим объемом на 640 кБ, которая разделяется на SRAM и FLASH 0WS, а до начала исполнения данные переносятся из FLASH в SRAM.

Действительно, все работает очень быстро. Но...

Напрашивается желание получить стирание/запись в FLASH-память, чтобы мк не останавливался. Ведь шина FLASH не используется. Но нет! Процессор встаёт. Как будто здесь имеется какая-то синхронизация между SRAM и FLASH.

Вопросы:

1. Имел ли кто опыт, можно ли как-нибудь сделать так, чтобы программа не останавливалась? Возможно, есть какая-то зависимость, которую можно отключить? Может быть, кто-то более детально понимает суть проблемы и знает, как ее решить.

Зачем мне такая память, если мне тогда проще загрузить программу в SRAM и оттуда пустить ее и не париться.

2. Можно ли каким-то образом получить все 640 кБ SRAM, а вся FLASH пусть не 0WS?

Изменено пользователем dmitrykhom
орфография

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. Исполнять код из одного банка, писать в другой. Все как на STM32 с двумя банками памяти.

2. Можно. Надо поправить битики в "User system data".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 5/31/2024 at 7:32 PM, dmitrykhom said:

2. Можно ли каким-то образом получить все 640 кБ SRAM, а вся FLASH пусть не 0WS?

Поправочка к предыдущему ответу, можно максимально 512Кб ОЗУ и 128 на 0WS. Полностью на ОЗУ не перераспределить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 часов назад, Dron_Gus сказал:

1. Исполнять код из одного банка, писать в другой. Все как на STM32 с двумя банками памяти.

Вы имеете ввиду другой банк, где банк - это 2 МБ для м/к с 4 МБ FLASH и 512 кБ для м/к с 1 МБ FLASH?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, dmitrykhom said:

Вы имеете ввиду другой банк, где банк - это 2 МБ для м/к с 4 МБ FLASH и 512 кБ для м/к с 1 МБ FLASH?

Да. Насколько я помню, запись/стирание одного банка не блокирует доступ ко второму.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

5 часов назад, Dron_Gus сказал:

Да. Насколько я помню, запись/стирание одного банка не блокирует доступ ко второму.

Нет, финт с ушами не прошел!

Не пробовал, как там у STM...

У меня AT32F437ZMT7, т.е. 4032 кБ flash. Пишу по адресу 0x08202160 слово 32х (предварительно стерто), программа вся находится в пределах нескольких десятков кБ, начиная с адреса 0x08000000... прерывание, которое запускается приблизительно один раз в 10 мкс, задержалось значительно, а так всегда работает без проблем.

Так что рано обрадовался, придется либо ставить внешнюю память, либо, что скорее всего, кэшировать всё и вся в SRAM.

Изменено пользователем dmitrykhom

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...