stm32f405 запись конфигурации во flash

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

stm32f405 запись конфигурации во flash

Сообщение pokk »

Из серии F1 стянул алгоритм работы в лоб считал модифицировал стер всю страницу записал.
Но на F4 страницы гораздо большего размера и стирания страницы занимает приличное время.
Подумываю сделать запись в кольце типа, записал сдвинул адрес, записал.. и так далее но, от стирания не куда не деться, вот думаю как его в фоне можно сделать.
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: stm32f405 запись конфигурации во flash

Сообщение VladislavS »

Что останавливает?
Аватара пользователя
AlanDrakes
Прорезались зубы
Сообщения: 236
Зарегистрирован: Пн июл 04, 2016 16:51:22
Откуда: Россия, Омск

Re: stm32f405 запись конфигурации во flash

Сообщение AlanDrakes »

В фоне - никак.
Во время стирания/записи страницы доступ к flash памяти будет автоматически приостановлен.
Плюс, размеры страниц довольно большие - 64кБ+, а это значит что для надёжного хранения потребуется вдвое больше (кольцевой буфер на две страницы).
Как вариант - могу подсказать использование первых страниц для хранения данных (страницы 0-3 чаще всего имеют меньший размер). В нулевой, естественно, будет загрузчик, который будет переводить исполнение кода после сброса на то место, где находится собственно, код (например, 4 страница).
Хотя и это тоже не самый рациональный вариант. Удобнее использовать внешнюю микросхему EEPROM.
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

Re: stm32f405 запись конфигурации во flash

Сообщение pokk »

AlanDrakes писал(а):В фоне - никак.

Это я имел ввиду что бы для пользователя было не заметно, после того как записал и выдал что ок записал, проверил свободное место и если его мало то стер. Но я уже отбросил такой вариант, так как он может не неожиданно, остановить программу это не очень хорошо.
Да на начальные страницы, я тоже смотрел, но там bootloader сидит, а без дефолтных настроек устройство не работает, ну и самая проблема то что не всегда надо перезаписывать дефолтные настройки , по этому, их надо выделить в отдельную секцию и линкеру как-то указать что в этот секцию нечего больше не помешать ну и размер как-то задать, чего особо не получилось.
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: stm32f405 запись конфигурации во flash

Сообщение Eddy_Em »

В линкере указываем после секции data точку с выравниванием на размер страницы — это будет начало свободного флеша.
В структуре данных, которую надо писать, добавляем в самое начало magick number, отличный от 0xffffffff, например, 0xdeadbeef. Используем бинарный поиск, чтобы найти последнюю запись. Как флеш кончилась, стираем нафиг все страницы и начинаем с первой. В этом случае операция стирания флеша будет производиться достаточно редко.
Если поможет, вот мой сниппет.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Ответить

Вернуться в «ARM»