реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> stm32f407 хранение настроек
jcxz
сообщение May 7 2015, 08:04
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(mantech @ May 6 2015, 23:05) *
Ни разу не терялись,

Это не довод. Вероятность низкая, но всё равно не годится если нужна надёжность. 1000раз не случилось в 1001й раз попадёт сбой во время записи.
Если не проблема переконфигурить устройство при таком случае - то тогда на страшно.
Но если ответственная область, где важна надёжность работы и трудно будет переконфигурить заново - не годится.
Go to the top of the page
 
+Quote Post
Quasar
сообщение May 7 2015, 09:46
Сообщение #17


Местный
***

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




Цитата(jcxz @ May 7 2015, 11:04) *
Это не довод. Вероятность низкая, но всё равно не годится если нужна надёжность. 1000раз не случилось в 1001й раз попадёт сбой во время записи.
Если не проблема переконфигурить устройство при таком случае - то тогда на страшно.
Но если ответственная область, где важна надёжность работы и трудно будет переконфигурить заново - не годится.


Ну в таком случае, конечно хорошо бы иметь резервную копию последних настроек, запись основных и запись копии происходит соответственно в разное время. Я такое делал, но правда не с целью защитить от потери, а с целью защитить пользователя от неумелых действий. Настроил что-то не то, откатил назад, на предыдущую конфигурацию.
Go to the top of the page
 
+Quote Post
sergey sva
сообщение May 7 2015, 10:44
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Буду использовать внутреннюю память. Скачал исходники eeprom emulation протестировал немного мне не подходит как там реализовано, переделал вроде все работает, только почему то FLASH_EraseSector() не стирает, стирание должно заполнять сектор 0xff ? А там прошлая запись остается. Если вначале стираю потом записываю данные, данные сохраняются проблем нет. Но после стирания должно же быть 0xff? Не писать же в цикле 0xff если есть стирание.
Код
FLASH_Unlock();

    while(FLASH_EraseSector(FLASH_Sector_2,VoltageRange_3)!=FLASH_COMPLETE);
    for(copyf = SECTOR2_ADRESS_0,dtaindex = 0; copyf<(SECTOR2_ADRESS_0+SIZE_ROM_DATA);copyf++,dtaindex++){
        while(FLASH_ProgramByte(copyf,DBROM.byte[dtaindex])!=FLASH_COMPLETE);
    }//for
FLASH_Lock();
Go to the top of the page
 
+Quote Post
mantech
сообщение May 8 2015, 08:34
Сообщение #19


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(jcxz @ May 7 2015, 11:04) *
1000раз не случилось в 1001й раз попадёт сбой во время записи.


Это запись в обычную память, вероятность сбоя не больше, чем запись в любую ячейку памяти и уж куда меньше, чем процедура записи во флеш, т.к. там пишет не байтами, а страницами. Если произойдет сбой при записи в память, то потеряете байт или 4 байта, а в случае флеши - всю страницу.
Go to the top of the page
 
+Quote Post
scifi
сообщение May 8 2015, 08:42
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(mantech @ May 8 2015, 11:34) *
Если произойдет сбой при записи в память, то потеряете байт или 4 байта, а в случае флеши - всю страницу.

Забавная выдумка. Не обманывайте неокрепшие умы.
Флеш стирается постранично. А запись происходит гораздо меньшими порциями. У тех же STM32 в зависимости от подсемейства может быть и побайтовая запись, и запись 16-битными словами. Это очень удобно для эмуляции EEPROM, реализации всяческих журналов и т.п.
Это только убогие флеши типа как у LPC требуют записывать гораздо более крупными пачками, потому что каждая пачка защищается кодом коррекции ошибок.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 8 2015, 08:50
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(scifi @ May 8 2015, 11:42) *
Это только убогие флеши типа как у LPC требуют записывать гораздо более крупными пачками, потому что каждая пачка защищается кодом коррекции ошибок.

О как! Оказывается, наличие ECC свидетельствует об убогости.

Пачка 16 байт всего. Не сказал бы, что это сильно мешает эмулировать EEPROM.
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 8 2015, 08:59
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(mantech @ May 8 2015, 14:34) *
Это запись в обычную память, вероятность сбоя не больше, чем запись в любую ячейку памяти и уж куда меньше, чем процедура записи во флеш, т.к. там пишет не байтами, а страницами. Если произойдет сбой при записи в память, то потеряете байт или 4 байта, а в случае флеши - всю страницу.

Под "сбоем" я имел в виду сбой питания (или перезагрузку по иной причине: помеха и т.п.).
И вообще это относилось к Вашему подужать до 4кб, и используете встроенные часы с батарейкой, то можно просто писать в backup RAM
Если так сделать, то при любом прерывании записи потеряется вся структура хранения (так как резерва по ёмкости нет).
Будут потеряны все настройки и устройство возможно перестанет функционировать.
Если использовать журнал, с несколькими записями и несколькими минимальными элементами стирания (>=2), то потеряется только последняя структура хранения.
Но всегда будет валидная предыдущая.
И при сбое питания не портится вся страница, только записываемая часть её.
Go to the top of the page
 
+Quote Post
adnega
сообщение May 8 2015, 08:59
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(scifi @ May 8 2015, 11:42) *
потому что каждая пачка защищается кодом коррекции ошибок.

Ирония в том, что при эмуляции EEPROM в STM32 я это тоже делаю, но своими ручками.
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 8 2015, 09:03
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(aaarrr @ May 8 2015, 14:50) *
Пачка 16 байт всего. Не сказал бы, что это сильно мешает эмулировать EEPROM.

Если в такой флешь хранится журнал, минимальным элементом хранения (запись) которого является структура с настройками устройства,
то такая запись обычно имеет размер десятки байт (или больше). Ничего не мешает её размер подровнять до 16 байт - потери минимальны.
Go to the top of the page
 
+Quote Post
scifi
сообщение May 8 2015, 09:53
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(aaarrr @ May 8 2015, 11:50) *
О как! Оказывается, наличие ECC свидетельствует об убогости.

Именно так. Приблизительно как калека легко распознаётся по наличию костылей. А здоровый человек и без костылей может передвигаться.

Цитата(adnega @ May 8 2015, 11:59) *
Ирония в том, что при эмуляции EEPROM в STM32 я это тоже делаю, но своими ручками.

Что, прямо настоящий код, исправляющий ошибки? Или банальная контрольная сумма, как у всех?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 8 2015, 09:54
Сообщение #26


Гуру
******

Группа: Модераторы
Сообщений: 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)
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 8 2015, 09:58
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(scifi @ May 8 2015, 12:53) *
Именно так. Приблизительно как калека легко распознаётся по наличию костылей. А здоровый человек и без костылей может передвигаться.

То, что выглядит как костыль, совсем не обязательно таковым является.
Go to the top of the page
 
+Quote Post
scifi
сообщение May 8 2015, 10:02
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(aaarrr @ May 8 2015, 12:58) *
То, что выглядит как костыль, совсем не обязательно таковым является.

Конечно, калека может внушить себе, что его костыли - вовсе не костыли, и вообще это классно и модно. Но это его личные проблемы :-)
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 8 2015, 10:06
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 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, или не заниматься домыслами.
Go to the top of the page
 
+Quote Post
scifi
сообщение May 8 2015, 10:20
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(aaarrr @ May 8 2015, 13:06) *
Тут уж надо или представлять данные о (не)надежности флеш NXP, или не заниматься домыслами.

У нас свобода слова, так что извините. Что хочу, то и говорю.
Ну и то, что мнения по этому вопросу у нас отличаются, - тоже не проблема, у нас же разрешён плюрализм мнений :-)
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th June 2025 - 06:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01492 секунд с 7
ELECTRONIX ©2004-2016