|
|
  |
stm32f407 хранение настроек |
|
|
|
May 7 2015, 09:46
|

Местный
  
Группа: Свой
Сообщений: 257
Регистрация: 2-12-06
Из: Default City
Пользователь №: 23 021

|
Цитата(jcxz @ May 7 2015, 11:04)  Это не довод. Вероятность низкая, но всё равно не годится если нужна надёжность. 1000раз не случилось в 1001й раз попадёт сбой во время записи. Если не проблема переконфигурить устройство при таком случае - то тогда на страшно. Но если ответственная область, где важна надёжность работы и трудно будет переконфигурить заново - не годится. Ну в таком случае, конечно хорошо бы иметь резервную копию последних настроек, запись основных и запись копии происходит соответственно в разное время. Я такое делал, но правда не с целью защитить от потери, а с целью защитить пользователя от неумелых действий. Настроил что-то не то, откатил назад, на предыдущую конфигурацию.
|
|
|
|
|
May 8 2015, 08:42
|
Гуру
     
Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136

|
Цитата(mantech @ May 8 2015, 11:34)  Если произойдет сбой при записи в память, то потеряете байт или 4 байта, а в случае флеши - всю страницу. Забавная выдумка. Не обманывайте неокрепшие умы. Флеш стирается постранично. А запись происходит гораздо меньшими порциями. У тех же STM32 в зависимости от подсемейства может быть и побайтовая запись, и запись 16-битными словами. Это очень удобно для эмуляции EEPROM, реализации всяческих журналов и т.п. Это только убогие флеши типа как у LPC требуют записывать гораздо более крупными пачками, потому что каждая пачка защищается кодом коррекции ошибок.
|
|
|
|
|
May 8 2015, 08:59
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(mantech @ May 8 2015, 14:34)  Это запись в обычную память, вероятность сбоя не больше, чем запись в любую ячейку памяти и уж куда меньше, чем процедура записи во флеш, т.к. там пишет не байтами, а страницами. Если произойдет сбой при записи в память, то потеряете байт или 4 байта, а в случае флеши - всю страницу. Под "сбоем" я имел в виду сбой питания (или перезагрузку по иной причине: помеха и т.п.). И вообще это относилось к Вашему подужать до 4кб, и используете встроенные часы с батарейкой, то можно просто писать в backup RAMЕсли так сделать, то при любом прерывании записи потеряется вся структура хранения (так как резерва по ёмкости нет). Будут потеряны все настройки и устройство возможно перестанет функционировать. Если использовать журнал, с несколькими записями и несколькими минимальными элементами стирания (>=2), то потеряется только последняя структура хранения. Но всегда будет валидная предыдущая. И при сбое питания не портится вся страница, только записываемая часть её.
|
|
|
|
|
May 8 2015, 09:53
|
Гуру
     
Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136

|
Цитата(aaarrr @ May 8 2015, 11:50)  О как! Оказывается, наличие ECC свидетельствует об убогости. Именно так. Приблизительно как калека легко распознаётся по наличию костылей. А здоровый человек и без костылей может передвигаться. Цитата(adnega @ May 8 2015, 11:59)  Ирония в том, что при эмуляции EEPROM в STM32 я это тоже делаю, но своими ручками. Что, прямо настоящий код, исправляющий ошибки? Или банальная контрольная сумма, как у всех?
|
|
|
|
|
May 8 2015, 09:54
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(aaarrr @ May 8 2015, 11:50)  Пачка 16 байт всего. Не сказал бы, что это сильно мешает эмулировать EEPROM. LPC177x, 178x вроде достаточно свежий? Упоминания про 16 байт в руководстве пользователя не нашел. Цитата Param2: Number of bytes to be written. Should be 256 | 512 | 1024 | 4096. Нет, я помню про раскрученный много лет назад встроенный загрузчик, и тем не менее 16 байт можно записать только недокументированными методами. Или я что-то неправильно понял?
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
May 8 2015, 10:06
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(Сергей Борщ @ May 8 2015, 12:54)  LPC177x, 178x вроде достаточно свежий? Упоминания про 16 байт в руководстве пользователя не нашел. Действительно, у них такого нет. Для LPC11, LPC13 написано явно. Цитата(scifi @ May 8 2015, 13:02)  Конечно, калека может внушить себе, что его костыли - вовсе не костыли, и вообще это классно и модно. Но это его личные проблемы :-) То есть серверную технику и всякие поделия на Cortex-R4 с ECC всего и вся записываем в калеки автоматом? Тут уж надо или представлять данные о (не)надежности флеш NXP, или не заниматься домыслами.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|