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

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> stm32f407 хранение настроек
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 Текстовая версия Сейчас: 2nd July 2025 - 22:55
Рейтинг@Mail.ru


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