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

 
 
> Ресурс SPI DataFlash, AT45DB041B
prottoss
сообщение Oct 24 2006, 00:19
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Всем доброго времени суток! Вот такая проблема:

Есть некий девайс, собранный на МК AVR, в качестве энергонезависимой памяти на борту присутствует SPI DataFlash AT45DB041B. МК мониторит несколько датчиков и производит запись в DataFlash. Данные записываются в память с интервалом от 1 секунды до 3 минут, в зависимости от состояния датчиков, круглые сутки... Вопрос: стоит ли включать в управляющую программу AVR проверку сбойных ячеек, составлять соответствующие таблицы сбойных ячеек и т.п.? Существует мнение, что для современной флэш памяти проблема сбойных блоков не актуальна. Так ли это на самом деле? Или, возможно, не для данного конкретного типа памяти? В даташите на AT45DB041B что то я не нашел максимальное количество циклов перезаписи.

Спасибо.


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
xemul
сообщение Oct 25 2006, 11:14
Сообщение #2



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Для любого семейства кодов с обнаружением/исправлением ошибок сначала задаются длина блока данных и требуемое число обнаруживаемых/исправляемых битов, а по этим данным рассчитываются требуемая длина блока коррекции и функции свертки/проверки.
По скорости смотрите сами - имхо, поиск по таблице сбойных байтов и ремап будут ой не быстрыми. А когда предполагается производить поиск сбойных байтов? При записи блока данных с проверкой по факту сбоя (все равно как минимум CRC как предельный случай упомянутых кодов) или предварительно/периодически?
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 25 2006, 11:51
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(xemul @ Oct 25 2006, 19:14) *
Для любого семейства кодов с обнаружением/исправлением ошибок сначала задаются длина блока данных и требуемое число обнаруживаемых/исправляемых битов, а по этим данным рассчитываются требуемая длина блока коррекции и функции свертки/проверки.
Хм...если мне память не изменяет, Хэмминг предполагает защиту одного n-разрядного слова...

Цитата(xemul @ Oct 25 2006, 19:14) *
По скорости смотрите сами - имхо, поиск по таблице сбойных байтов и ремап будут ой не быстрыми. А когда предполагается производить поиск сбойных байтов? При записи блока данных с проверкой по факту сбоя (все равно как минимум CRC как предельный случай упомянутых кодов) или предварительно/периодически?
Поиск сбойных байтов произвести очень легко. В данной серии есть команда Main Memory Page to Buffer Compare , что облегчает контроль. Так как размер блока данных, относительно, не большой, можно производить запись только в буфер, а, в случае переполнения буфера, проверять целостность записанных данных. Кроме того, делать то же самое при пропадании питания (в устройстве два питания). Вот только не определился с таблицей сбойных...чего? Толи сбойных страниц, то ли страницу разбить на сектора размерности структуры данных. Смысла контролировать отдельные ячейки я не вижу...


--------------------
Go to the top of the page
 
+Quote Post
xemul
сообщение Oct 25 2006, 14:28
Сообщение #4



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(prottoss @ Oct 25 2006, 15:51) *
Цитата(xemul @ Oct 25 2006, 19:14) *
Для любого семейства кодов с обнаружением/исправлением ошибок сначала задаются длина блока данных и требуемое число обнаруживаемых/исправляемых битов, а по этим данным рассчитываются требуемая длина блока коррекции и функции свертки/проверки.
Хм...если мне память не изменяет, Хэмминг предполагает защиту одного n-разрядного слова...

И? Давайте считать Ваш блок данных n-разрядным словом (кста, Вы поминали 12 байтов - блок данных 8-15 байтов требует 8 дополнительных битов для исправления 1-кратных ошибок).
Цитата
Цитата(xemul @ Oct 25 2006, 19:14) *
По скорости смотрите сами - имхо, поиск по таблице сбойных байтов и ремап будут ой не быстрыми. А когда предполагается производить поиск сбойных байтов? При записи блока данных с проверкой по факту сбоя (все равно как минимум CRC как предельный случай упомянутых кодов) или предварительно/периодически?
Поиск сбойных байтов произвести очень легко. В данной серии есть команда Main Memory Page to Buffer Compare , что облегчает контроль. Так как размер блока данных, относительно, не большой, можно производить запись только в буфер, а, в случае переполнения буфера, проверять целостность записанных данных. Кроме того, делать то же самое при пропадании питания (в устройстве два питания). Вот только не определился с таблицей сбойных...чего? Толи сбойных страниц, то ли страницу разбить на сектора размерности структуры данных. Смысла контролировать отдельные ячейки я не вижу...

Посмотрите AT45DB041B Reliability Qualification Report (http://www.atmel.com/dyn/resources/prod_documents/45DB041B.pdf), но как-то оно там слишком шоколадно.
А выполнять проверку целостности при чтении блока Вы не предполагаете? Хозяин - баринsmile.gif.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 25 2006, 14:44
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(xemul @ Oct 25 2006, 22:28) *
Цитата(prottoss @ Oct 25 2006, 15:51) *

Цитата(xemul @ Oct 25 2006, 19:14) *
Для любого семейства кодов с обнаружением/исправлением ошибок сначала задаются длина блока данных и требуемое число обнаруживаемых/исправляемых битов, а по этим данным рассчитываются требуемая длина блока коррекции и функции свертки/проверки.
Хм...если мне память не изменяет, Хэмминг предполагает защиту одного n-разрядного слова...

И? Давайте считать Ваш блок данных n-разрядным словом (кста, Вы поминали 12 байтов - блок данных 8-15 байтов требует 8 дополнительных битов для исправления 1-кратных ошибок).
Цитата
Цитата(xemul @ Oct 25 2006, 19:14) *
По скорости смотрите сами - имхо, поиск по таблице сбойных байтов и ремап будут ой не быстрыми. А когда предполагается производить поиск сбойных байтов? При записи блока данных с проверкой по факту сбоя (все равно как минимум CRC как предельный случай упомянутых кодов) или предварительно/периодически?
Поиск сбойных байтов произвести очень легко. В данной серии есть команда Main Memory Page to Buffer Compare , что облегчает контроль. Так как размер блока данных, относительно, не большой, можно производить запись только в буфер, а, в случае переполнения буфера, проверять целостность записанных данных. Кроме того, делать то же самое при пропадании питания (в устройстве два питания). Вот только не определился с таблицей сбойных...чего? Толи сбойных страниц, то ли страницу разбить на сектора размерности структуры данных. Смысла контролировать отдельные ячейки я не вижу...

Посмотрите AT45DB041B Reliability Qualification Report (http://www.atmel.com/dyn/resources/prod_documents/45DB041B.pdf), но как-то оно там слишком шоколадно.
А выполнять проверку целостности при чтении блока Вы не предполагаете? Хозяин - барин smile.gif .
Я не понял сначала Ваш ход мыслей...Счас понял...Но копаться с битами, на первый взгляд, геморно... Хотя, глаза боятся - руки печатают))) Может быть проще вместо UCHAR объявить UINT...?Объем расходуемой памяти, правда увеличится в два раза...

По поводу проверки при чтении - а что, есть ситуэйшн, когда будучи уже записанны, данные могут испортиться? Я имею ввиду не глобальные катаклизмы с питанием, или вследствии упавшей рядом ядреной бомбы, а в следствии порчи ячеек...


--------------------
Go to the top of the page
 
+Quote Post
xemul
сообщение Oct 25 2006, 15:10
Сообщение #6



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(prottoss @ Oct 25 2006, 18:44) *
Я не понял сначала Ваш ход мыслей...Счас понял...Но копаться с битами, на первый взгляд, геморно... Хотя, глаза боятся - руки печатают))) Может быть проще вместо UCHAR объявить UINT...?Объем расходуемой памяти, правда увеличится в два раза...

UCHAR удобнее, т.к. используемый Вами контроллер скорее всего работает с 1-байтовыми данными.
Любой алгоритм контроля целостности предполагает неудобную (скрытую) операцию вычисления номера бита. Использование таблиц делает ее скрытой. Но для блока данных в 12 байт таблица получится немерянной.
Т.к. у Вас частота записи во флеш невысока, то вычисление контрольного кода можно вести в фоне.
Цитата
По поводу проверки при чтении - а что, есть ситуэйшн, когда будучи уже записанны, данные могут испортиться? Я имею ввиду не глобальные катаклизмы с питанием, или вследствии упавшей рядом ядреной бомбы, а в следствии порчи ячеек...

Дык именно это враги и проверяют при всяких endurance test памяти - частоту искажения информации. А чем оно (искажение) вызвано - взрывом ядреной бомбы, отказом ячейки или преждевременной утечкой заряда с затвора транзистора - дело следующее. Я почему и сказал, что результаты тестов ну очень шоколадные - ни одного сбоя ни в одном тесте. Если исходить из этого, то можно вообще ничего не контролироватьsmile.gif.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 25 2006, 15:29
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(xemul @ Oct 25 2006, 23:10) *
Дык именно это враги и проверяют при всяких endurance test памяти - частоту искажения информации. А чем оно (искажение) вызвано - взрывом ядреной бомбы, отказом ячейки или преждевременной утечкой заряда с затвора транзистора - дело следующее. Я почему и сказал, что результаты тестов ну очень шоколадные - ни одного сбоя ни в одном тесте. Если исходить из этого, то можно вообще ничего не контролировать smile.gif .
Тгда, может быть проще, добавить к структуре два байта CRC? Расформатировать флэшину на сектора по размерности структуры (к примеру размером, допустим, в степени 2, или чтобы размер точно делился на размер буфера/страницы), да и шут с ним. Пишем - проверяем цеостность данных сравнивая с буфером, читаем - у нас есть CRC...


--------------------
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- prottoss   Ресурс SPI DataFlash   Oct 24 2006, 00:19
- - aaarrr   Ресурс DataFlash около 100К циклов на страницу. Пр...   Oct 24 2006, 00:39
|- - prottoss   Цитата(aaarrr @ Oct 24 2006, 08:39) Ресур...   Oct 24 2006, 01:09
||- - zltigo   Цитата(prottoss @ Oct 24 2006, 04:09) Мож...   Oct 24 2006, 06:40
|- - IgorKossak   Цитата(aaarrr @ Oct 24 2006, 03:39) Ресур...   Oct 24 2006, 06:40
|- - prottoss   Цитата(IgorKossak @ Oct 24 2006, 14:40) Ц...   Oct 24 2006, 08:41
|- - mse   Цитата(prottoss @ Oct 24 2006, 12:41) А е...   Oct 24 2006, 09:53
|- - prottoss   Цитата(mse @ Oct 24 2006, 17:53) ...Так ч...   Oct 24 2006, 10:06
- - Igor26   FM20L08 - параллельная, 128кб FM25L265 - SPI 32кб ...   Oct 24 2006, 05:31
|- - prottoss   Цитата(Igor26 @ Oct 24 2006, 13:31) FM20L...   Oct 24 2006, 06:04
- - Igor26   ЦитатаХм, речь я здесь завел про DataFlash 4MBit.....   Oct 24 2006, 06:28
- - aaarrr   Цитата(prottoss @ Oct 24 2006, 05:09) Мож...   Oct 24 2006, 10:07
|- - prottoss   Цитата(aaarrr @ Oct 24 2006, 18:07) Вот с...   Oct 24 2006, 10:19
|- - SasaVitebsk   Цитата(prottoss @ Oct 24 2006, 13:19) Цит...   Oct 24 2006, 11:44
|- - prottoss   Цитата(SasaVitebsk @ Oct 24 2006, 19:44) ...   Oct 24 2006, 12:24
- - at90   Мы работали с 45db081. На некоторых микросхемах по...   Oct 24 2006, 12:24
|- - prottoss   Цитата(at90 @ Oct 24 2006, 20:24) Мы рабо...   Oct 24 2006, 12:28
- - CD_Eater   Цитата(at90 @ Oct 24 2006, 16:24) Мы рабо...   Oct 24 2006, 14:51
- - at90   в них было одно и тоже значение.   Oct 24 2006, 16:14
|- - CD_Eater   Цитата(at90 @ Oct 24 2006, 20:14) в них б...   Oct 24 2006, 19:18
- - proba   чтото трудно поверить что появляются битые биты - ...   Oct 24 2006, 17:33
|- - prottoss   Цитата(proba @ Oct 25 2006, 01:33) чтото ...   Oct 25 2006, 04:30
|- - acex2   Цитата(prottoss @ Oct 25 2006, 08:30) Цит...   Oct 25 2006, 04:55
|- - prottoss   Цитата(acex2 @ Oct 25 2006, 12:55) Коды Х...   Oct 25 2006, 07:12
|- - acex2   Цитата(prottoss @ Oct 25 2006, 11:12) Да,...   Oct 25 2006, 07:35
|- - mse   Цитата(acex2 @ Oct 25 2006, 11:35) Вообще...   Oct 25 2006, 08:51
|- - prottoss   Цитата(acex2 @ Oct 25 2006, 15:35) Вообще...   Oct 25 2006, 09:29
|- - mse   Цитата(prottoss @ Oct 25 2006, 13:29) Цит...   Oct 25 2006, 10:01
|- - prottoss   Цитата(mse @ Oct 25 2006, 18:01) Цитата(p...   Oct 25 2006, 10:06
- - proba   кодировку можно делать с look-up table, 2x256 баит...   Oct 25 2006, 09:43
- - xemul   Если нужно только контролировать целостность данны...   Oct 25 2006, 15:56
|- - prottoss   Цитата(xemul @ Oct 25 2006, 23:56) Если н...   Oct 25 2006, 16:05
- - Nanobyte   Так, вдогонку ... Когда-то делал контроллер для пе...   Oct 25 2006, 20:03
|- - xemul   Цитата(Nanobyte @ Oct 26 2006, 00:03) Так...   Oct 26 2006, 11:12
- - Shum1   если вы читаете данные из флэшины раз в сутки, то ...   Oct 26 2006, 09:41
|- - prottoss   Цитата(Shum1 @ Oct 26 2006, 17:41) если в...   Oct 26 2006, 10:47
- - evg123   Если писать данные в сектор последовательно то все...   Jan 23 2007, 14:54


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 01:32
Рейтинг@Mail.ru


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