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

 
 
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

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

 


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


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