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

STM32h743 стирание данных из флешь

Поправите меня если не прав.

Читал reference manual и как понял стирается перед записью только сектор размером 128 кБайт. Если мне надо записать кластер размером 4096 байт то мне нужно сначала удалить 128 кбайт только потом записать 4096 байт, как-то неправильно мне кажется. В ранних сериях были размеры куда меньше. 

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


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

Ну я RM не смотрел.
Но Flash стирается страницами (page).
У разных контроллеров разная гранулярность страниц.
Так что, если в вашем МК страница 128кБ, то да, стирается сразу 128кБ.

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


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

1 hour ago, Alex_Golubev said:

Поправите меня если не прав.

Читал reference manual и как понял стирается перед записью только сектор размером 128 кБайт. Если мне надо записать кластер размером 4096 байт то мне нужно сначала удалить 128 кбайт только потом записать 4096 байт, как-то неправильно мне кажется. В ранних сериях были размеры куда меньше. 

Все верно, стирается только по 128 кБайт.

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


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

1 hour ago, Alex_Golubev said:

как-то неправильно мне кажется

Конечно неправильно. Напишите претензию в ST - пусть они для Вас сделают страницу в 4096. И построже с ними. А то делают черти что.

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


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

58 минут назад, Alex_Golubev сказал:

Есть что-то типа обновление байта без стирания сектора в stm32h743 ?

Да. Прочитать и посмотреть какие единички можно изменить на нолики.

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


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

22 minutes ago, Alex_Golubev said:

Так не интересно, не все единичке можно заменить на нолики.

Не пытаетесь ли вы использовать внутренню флешку для хранения данных? Тогда да, наверное проблема, потому что найти 128 кБ ОЗУ, чтобы вычитать сектор, стереть его, изменить некоторые данные и записать назад - не так просто. Может быть подумаете о внешенй SPIFI NOR? Типа n25q128 какой-нить? Они и на обычном SPI могут работать.

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


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

Да вы правы я хочу использовать внутреннею флешь для записи данных. Которые могут меняться со временем. И да нужно куда-то резервировать данные из флешки. Внешнею ставить не хочу. Может есть какой режим для модификации данных без стирания. 

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


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

7 minutes ago, Alex_Golubev said:

Может есть какой режим для модификации данных без стирания. 

Да какой же режим, это же физика) Ну невозможно вернуть единички только в определённуй байт FLASH-памяти. Её нужно стереть куском, в который входит N байт. Точно не помню, как это работает, но почитайте как устроена эта память. Поэтому, в вашем случае только внешняя NOR, NAND или EEPROM. Смотря, сколько вам данных нужно хранить, и как часто их модифицировать.

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


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

10 минут назад, Alex_Golubev сказал:

Может есть какой режим для модификации данных без стирания. 

Если бы он был, он был бы описан.

Выделяйте один сектор целиком под ваши данные. Пишите новые данные рядом со старыми, когда заполните весь сектор - стирайте его и пишите новые данные опять с начала сектора. Ну и сами придумывайте варианты поиска последнего записанного блока и проверки коректности его записи. У ST есть пример применения, назывался примерно как "эмуляция ЭСПЗУ (EEPROM) во флеше контроллеров STM32", поищите у них на сайте. Не скажу, что описанное там решение идеально, но какие-то идеи взять оттуда можно.

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


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

Во! В тему:

1. Ссыль раз.

2. Вторую ссыль не могу найти. Но там тоже было про организацию отказоустойчивого хранения  данных.

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


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

1 час назад, haker_fox сказал:

Не пытаетесь ли вы использовать внутренню флешку для хранения данных? Тогда да, наверное проблема, потому что найти 128 кБ ОЗУ, чтобы вычитать сектор, стереть его, изменить некоторые данные и записать назад

128кБ ОЗУ нужно только если совсем фантазии нет. :wink:

А если зарезервировать 2 сектора flash и хранить в них кольцевой буфер из записей, то никаких 128кБ ОЗУ не нужно. Нужно изменить данные? Читаем запись, модифицируем её и пишем обратно в кольцо. ОЗУ нужно только == размеру записи.

PS: Сколько уж раз обсуждали способы хранения во флешь в кольце и опять по-новой.... :russian_ru:

2 часа назад, HardEgor сказал:

Да. Прочитать и посмотреть какие единички можно изменить на нолики.

Скорее всего так не получится, потому как flash программ МК как правило имеет ECC-защиту с дискретностью в несколько байт (например ==16). И изменить данные меньше этой дискретности не затронув остальные будет невозможно.

Так что: делаем кольцевой буфер из записей кратных по размеру блоку ECC-защиты и работаем с кольцом.

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


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

6 minutes ago, jcxz said:

128кБ ОЗУ нужно только если совсем фантазии нет:wink:

Закончилась сегодня:angel:

7 minutes ago, jcxz said:

PS: Сколько уж раз обсуждали способы хранения во флешь в кольце и опять по-новой.... 

Ну я их не использую, поэтому забываю нюансы. Но ссылку на статью я автору дал. Да и сам он уже наверное выполнил гуглом поиск по форуму, нашёл 100500 этих тем и теперь читает и анализирует. Я обычно для себя таки делаю: ищу все доступные материалы сначала.

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


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

6 минут назад, jcxz сказал:

Скорее всего так не получится, потому как flash программ МК как правило имеет ECC-защиту с дискретностью в несколько байт (например ==16). И изменить данные меньше этой дискретности не затронув остальные будет невозможно.

Так что: делаем кольцевой буфер из записей кратных по размеру блоку ECC-защиты и работаем с кольцом.

Да ладно, надо же человеку чем-то заняться, а вы ему в лоб сразу решением :)

У stm32h7 64-битный блок.

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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