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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> stm32f407 хранение настроек
sergey sva
сообщение May 5 2015, 20:21
Сообщение #1


Гуру
******

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



Какую память использовать для хранение настроек в stm32f407? Думал прицепить память spi но в самом микроконтроллере 1мб памяти, для всех настроек 10кб хватит вполне. Опасение если использовать память программ вдруг в момент записи пропадет питание или еще что то, не хотелось бы что бы повредилась программа, как правильнее сделать?
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение May 5 2015, 20:30
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Вообще делать контроллер без еепрома это свинство (не могу опять не пнуть СТМ), но если у вас именно настройки, значит они пишутся под контролем юзера (при подключении к хосту через юсб, скажем), так что вполне можно во флэш писать.
Go to the top of the page
 
+Quote Post
adnega
сообщение May 5 2015, 20:59
Сообщение #3


Гуру
******

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



Цитата(Dr.Alex @ May 5 2015, 23:30) *
Вообще делать контроллер без еепрома это свинство (не могу опять не пнуть СТМ)

Дык, эстешники вам в ответ апликуху - "эмуляция eeprom". Если питание пропало и какая-то настройка не сохранилась остается ее предыдущее значение.
Я правда, эмулирую eeprom по-своему (не как ST предлагают), но за много лет использования косяков не заметил.
Даже циклический журнал событий держу в контроллере. Кста, с записью событий "появилось питание", "пропало питание" - по сработке PVD,
времени сохранить запись хватает.
Go to the top of the page
 
+Quote Post
Эдди
сообщение May 5 2015, 21:06
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 825
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250



Я тоже изменяемые данные сохраняю во флеш. Правда, в отличие от, скажем, STM8, STM32 не позволяют перезаписывать области произвольного размера — только кратные размеру страницы.
На STM32F103 о 100 ногах мне пришлось пойти на хитрость: выравнять не только размер структуры на 2кБ, но и ее начало (чтобы четко 1 страницу заняла). И вот так из-за десятка новых байт приходится 2кБ перезаписывать. Благо, нечасто.
Кстати, для обозначения конца структуры (а также выравнивания) мне подсказали интересную штуку, которую я и использовал: "массив нулевого размера".
Go to the top of the page
 
+Quote Post
adnega
сообщение May 5 2015, 21:16
Сообщение #5


Гуру
******

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



Цитата(Эдди @ May 6 2015, 00:06) *
приходится 2кБ перезаписывать

В F407 страница вообще по 16кБ, а настройки у меня 64 байта занимают (степень 2).
Страниц минимум две (больше - лучше).
Находим первое пустое место после записей. Пишем туда. Если при этом запись попадает на новую страницу, то предыдущую стираем.
Все разумеется в терминах "кольца".

Надежность (10к перезаписей страницы) * (16к размер страницы / 64 байта размер структуры) * (2 число страниц) > 5М перезаписей.
Go to the top of the page
 
+Quote Post
Эдди
сообщение May 5 2015, 21:33
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 825
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250



Если писать по кругу, то где-то придется как-то сохранять указатель на актуальную запись. Как?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 6 2015, 02:41
Сообщение #7


Гуру
******

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



Цитата(Эдди @ May 6 2015, 00:33) *
Если писать по кругу, то где-то придется как-то сохранять указатель на актуальную запись. Как?

Не придется, если записи внутри пронумерованы.
Go to the top of the page
 
+Quote Post
Эдди
сообщение May 6 2015, 04:24
Сообщение #8


Знающий
****

Группа: Участник
Сообщений: 825
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250



И как узнать номер последней актуальной? Перебирать по NULL-terminated все?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 6 2015, 05:03
Сообщение #9


Гуру
******

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



Да, перебрать все. Выполняется один раз на старте и много времени не занимает.
Go to the top of the page
 
+Quote Post
kolobok0
сообщение May 6 2015, 06:51
Сообщение #10


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(Эдди @ May 6 2015, 07:24) *
И как узнать...?


Поддерживаю мысль.
Так-же реализовал. Кольцевой, по три банки. одну пишем, вторую переносим в ту что пишем(лениво), третью по надобности стираем.
Хвост ищем при подъёме. Времени не очень много занимает. Для бОльшей скорости записи делаю индекс в памяти на существующую картину.
Go to the top of the page
 
+Quote Post
mantech
сообщение May 6 2015, 07:14
Сообщение #11


Гуру
******

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



Цитата(sergey sva @ May 5 2015, 23:21) *
Думал прицепить память spi но в самом микроконтроллере 1мб памяти, для всех настроек 10кб хватит вполне.


Если подужать до 4кб, и используете встроенные часы с батарейкой, то можно просто писать в backup RAM.

Сообщение отредактировал mantech - May 6 2015, 07:15
Go to the top of the page
 
+Quote Post
adnega
сообщение May 6 2015, 07:17
Сообщение #12


Гуру
******

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



Цитата(mantech @ May 6 2015, 10:14) *
Если подужать до 4кб, и используете встроенные часы с батарейкой, то можно просто писать в backup RAM.

Ой. Так не всегда годится. Что будет при смене батарейки? Все настройки потеряются?
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 6 2015, 10:46
Сообщение #13


Гуру
******

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



Цитата(mantech @ May 6 2015, 13:14) *
Если подужать до 4кб, и используете встроенные часы с батарейкой, то можно просто писать в backup RAM.

Ненадёжно. При сбое питания/перезагрузке в момент записи потеряете все данные.
Журнал с несколькими записями однозначно надёжнее: если не валидна последняя запись (из-за прерывания записи перезагрузкой), читаете предыдущую, валидную.
Go to the top of the page
 
+Quote Post
mantech
сообщение May 6 2015, 17:05
Сообщение #14


Гуру
******

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



Цитата(jcxz @ May 6 2015, 13:46) *
Ненадёжно. При сбое питания/перезагрузке в момент записи потеряете все данные.


Ни разу не терялись, батарейку меняю при включенном основном питании, и ее очень надолго хватает.
Go to the top of the page
 
+Quote Post
Quasar
сообщение May 6 2015, 18:43
Сообщение #15


Местный
***

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



Я во флеш храню настройки как на старых железках на LPC23xx, так и на новых на процессорах STM 407/417, целостность данных контролирую CRC, жалоб на пропадание настроек пока не поступало. Партии около 1000 изделий, но это правда на LPC23xx, думаю на STM будет результат не хуже.
Go to the top of the page
 
+Quote Post
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
adnega
сообщение May 8 2015, 10:32
Сообщение #31


Гуру
******

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



Цитата(scifi @ May 8 2015, 12:53) *
Что, прямо настоящий код, исправляющий ошибки? Или банальная контрольная сумма, как у всех?

Банальная сумма, т.к. модель сбоев flash в STM32 мне неизвестна, и шансы скорректировать отдельные битые биты ничтожны.
Я готовлю запись, считаю сумму, записываю во flash, считываю. Если считанные данные совпали с записанными, то возвращаю "успех", иначе "ошибка".

Смысл в том, что без контроля нельзя использовать ни одну flash.
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 8 2015, 12:27
Сообщение #32


Гуру
******

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



Цитата(Сергей Борщ @ May 8 2015, 15:54) *
LPC177x, 178x вроде достаточно свежий? Упоминания про 16 байт в руководстве пользователя не нашел.

И тем не менее - так и есть. При попытке дописать к 16 байтам ранее записанным, получите мусор. Так что писать только кратно 16.
Цитата(Сергей Борщ @ May 8 2015, 15:54) *
Нет, я помню про раскрученный много лет назад встроенный загрузчик, и тем не менее 16 байт можно записать только недокументированными методами. Или я что-то неправильно понял?

Прочитать эти самые 256 | 512 | 1024 | 4096, модифицировать в них требуемый участок, выровненный на 16 и записать. Только документированные методы.
Go to the top of the page
 
+Quote Post
sergey sva
сообщение May 8 2015, 12:32
Сообщение #33


Гуру
******

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



В lpc использовал для хранения настроек внешнюю память в некоторых есть модуль spif.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 8 2015, 12:41
Сообщение #34


Гуру
******

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



Цитата(jcxz @ May 8 2015, 15:27) *
Прочитать эти самые 256 | 512 | 1024 | 4096, модифицировать в них требуемый участок, выровненный на 16 и записать. Только документированные методы.

Для LPC17 этот метод все же не является документированным. Сравните с LPC13/11, где есть явное описание.
Go to the top of the page
 
+Quote Post
adnega
сообщение May 11 2015, 08:01
Сообщение #35


Гуру
******

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



Господа, не отвлекаемся от темы: LPC, а уж тем более страны к сути топика не имеют никакого отношения.

Напомню исходный вопрос: есть stm32f407, где хранить настройки? во внутренней flash или во внешней. Большинством голосов пришли к выводу,
что во внутренней можно. Страницы, ECC и т.п. большой роли не играют, т.к. при грамотной реализации у людей, использующих эмуляцию eeprom
в stm32, нет проблем с надежностью.

Из тонких моментов можно обсудить: "большие" страницы у некоторых МК; задержка(?) доступа к flash при стирании/записи.
Go to the top of the page
 
+Quote Post
scifi
сообщение May 11 2015, 09:14
Сообщение #36


Гуру
******

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



Цитата(adnega @ May 11 2015, 11:01) *
Из тонких моментов можно обсудить: "большие" страницы у некоторых МК; задержка(?) доступа к flash при стирании/записи.

Да, есть такое. А ещё бывает dual bank, когда длительное стирание не создаёт задержки в выполнении программы. Ну что тут сказать? Всё зависит от требований в конкретном применении. Может статься, что длительная задержка неприемлема. Тогда уж извините.
И ещё я бы не стал недооценивать сложность кода эмуляции EEPROM. В зависимости от сложности схемы эмуляции там может быть много разных условий и граничных случаев. Напрашивается автоматизированное тестирование. Иначе глюк может вылезти в поле в самый неподходящий момент.
Go to the top of the page
 
+Quote Post
adnega
сообщение May 11 2015, 09:58
Сообщение #37


Гуру
******

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



Цитата(scifi @ May 11 2015, 12:14) *
А ещё бывает dual bank

И соответствующий пункт в ES (правда, для f42x, f43x):
Цитата
When PA12 is used as GPIO or alternate function in input or output mode, the data read
from Flash memory can be corrupted. This behavior is observed only when the following
conditions are met:
• The device operates from a 2.7 to 3.6 V VDD power supply whatever the temperature
range
• Flash memory Bank2 is used or the dual bank feature is enabled.
Go to the top of the page
 
+Quote Post
scifi
сообщение May 11 2015, 10:05
Сообщение #38


Гуру
******

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



Цитата(adnega @ May 11 2015, 12:58) *
И соответствующий пункт в ES (правда, для f42x, f43x):

Ага. Почесал за ухом - аукнулось в пятке. Бывает, что уж там. Это не повод посыпать голову пеплом и уходить в монастырь :-)
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение May 11 2015, 11:27
Сообщение #39


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



круто что эта нога вообще ничто... как так они умудрились...
Go to the top of the page
 
+Quote Post
adnega
сообщение May 12 2015, 07:12
Сообщение #40


Гуру
******

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



Цитата(Golikov A. @ May 11 2015, 14:27) *
круто что эта нога вообще ничто... как так они умудрились...

В ревизии 3 пофиксили. Мне интересно как вообще обнаружили такое поведение?
Go to the top of the page
 
+Quote Post
Rash
сообщение May 12 2015, 08:01
Сообщение #41


Знающий
****

Группа: Свой
Сообщений: 639
Регистрация: 5-09-05
Пользователь №: 8 231



Цитата(adnega @ May 11 2015, 12:58) *
И соответствующий пункт в ES (правда, для f42x, f43x):


Интересно, такое проявлялось только в f42x, f43x. Т.к. использовал Эмуляцию eeprom от ST, изменив её выбором через дефайны какой тип данные используется для записи/чтения 8/16/32 бит. А также изменил оптимизировал некоторые ф-ции при вкл./выкл. блокировки флешь.
Отладил, всё заработало, но в устройствах на 405 и аккумуляторном питании, периодически наблюдается сброс всех настроек и перезапись непонятными данными по 2-м используемым страницам флеша. Использовались 2-ая и 3-ая страницы. Вычитывал их ST-Link(ом) после сбоя. И стационарное устройство на 407 на нём всё в порядке.
На 405 ножка PA12 используется, на 407 ножка PA12 не используется. На аккумуляторном устройстве (тот что на 405) стал думать, что в момент разряда аккумулятора (такое может быть хоть каждый день) мк часто перезапускается внешним супервизором (хотя задержка такого запуска ~ 1 сек.) и я, где-то, что-то в программе не учёл, и поэтому портятся данные. Но при включении записи нет есть только чтение, откуда берется перезапись 2-х страниц флеша мне не понятно. Пока эксперименты были отставлены из-за других дел. Но как вернусь к ним обязательно буду смотреть в сторону ножки PA12 в том числе.
Go to the top of the page
 
+Quote Post
adnega
сообщение May 12 2015, 10:08
Сообщение #42


Гуру
******

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



Цитата(Rash @ May 12 2015, 11:01) *
буду смотреть в сторону ножки PA12 в том числе.

В ES описано, что данные из flash могут быть вычитаны с ошибкой. К стиранию/записи это не относится.
Чтение с ошибкой из flash скорее всего проявится как сбой программы, т.к. будет вычитана некорректная инструкция.
Лучше прочитать всю ES.
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 Текстовая версия Сейчас: 28th June 2025 - 17:08
Рейтинг@Mail.ru


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