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

 
 
> Ресурс 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
3 страниц V   1 2 3 >  
Start new topic
Ответов (1 - 42)
aaarrr
сообщение Oct 24 2006, 00:39
Сообщение #2


Гуру
******

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



Ресурс DataFlash около 100К циклов на страницу. При частоте записи около 1 раза в минуту, ИМХО, следует озаботится контролем состояния памяти.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 24 2006, 01:09
Сообщение #3


Гуру
******

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



Цитата(aaarrr @ Oct 24 2006, 08:39) *
Ресурс DataFlash около 100К циклов на страницу. При частоте записи около 1 раза в минуту, ИМХО, следует озаботится контролем состояния памяти.
Может есть какая то ссылка, или я в даташите, по усталости, просмотрел? Не ткнете носом?


--------------------
Go to the top of the page
 
+Quote Post
Igor26
сообщение Oct 24 2006, 05:31
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544



FM20L08 - параллельная, 128кб
FM25L265 - SPI 32кб
У обоих количество циклов записи не ограничено, да и цикл записи равен циклу чтения.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 24 2006, 06:04
Сообщение #5


Гуру
******

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



Цитата(Igor26 @ Oct 24 2006, 13:31) *
FM20L08 - параллельная, 128кб
FM25L265 - SPI 32кб
У обоих количество циклов записи не ограничено, да и цикл записи равен циклу чтения.
Хм, речь я здесь завел про DataFlash 4MBit...


--------------------
Go to the top of the page
 
+Quote Post
Igor26
сообщение Oct 24 2006, 06:28
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544



Цитата
Хм, речь я здесь завел про DataFlash 4MBit...

Я просто предложил альтернативу.
Извините, несколько по теме. cheers.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 24 2006, 06:40
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(prottoss @ Oct 24 2006, 04:09) *
Может есть какая то ссылка, или я в даташите, по усталости, просмотрел?

А умалчивают :-(. Однако число 10,000 до "освежения" командой "Auto Page Rewrite" официально фигурирует. Других чисел тоже не нашел, хотя слишком сильно и не искал, поскольку ресурса в моих условиях явно должно хватить - даже "освежение" только на страницу с FAT заложил. Все остальные только при "форматировании".


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Oct 24 2006, 06:40
Сообщение #8


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(aaarrr @ Oct 24 2006, 03:39) *
Ресурс DataFlash около 100К циклов на страницу....

В своё время я запрашивал эту информацию у Atmel.
И получил ответ - 50000 циклов на страницу.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 24 2006, 08:41
Сообщение #9


Гуру
******

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



Цитата(IgorKossak @ Oct 24 2006, 14:40) *
Цитата(aaarrr @ Oct 24 2006, 03:39) *

Ресурс DataFlash около 100К циклов на страницу....

В своё время я запрашивал эту информацию у Atmel.
И получил ответ - 50000 циклов на страницу.
То есть, при такой интенсивности записи, проверка, все таки нужна... А есть какая то альтернатива данному типу памяти, желательно подешевле?... :-)))


--------------------
Go to the top of the page
 
+Quote Post
mse
сообщение Oct 24 2006, 09:53
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693



Цитата(prottoss @ Oct 24 2006, 12:41) *
А есть какая то альтернатива данному типу памяти, желательно подешевле?... :-)))

А зачем альтернатива? Датафлэш, по Атымельим рекомендаццыям, ориентирована на потоковые приложения. Типа диктофона. Вот и пиши аналогично. Размер страницы там тоже неспроста такой горбатый. Там может храниться служебная инфа для адресации. Рядом с данными. Так что, при толковой организации, 50000циклов хватит до полного физицкого износа устройства.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 24 2006, 10:06
Сообщение #11


Гуру
******

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



Цитата(mse @ Oct 24 2006, 17:53) *
...Так что, при толковой организации, 50000циклов хватит до полного физицкого износа устройства.
Ладно, будем пробовать и толково организовывать...Пошел за пивом...


--------------------
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 24 2006, 10:07
Сообщение #12


Гуру
******

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



Цитата(prottoss @ Oct 24 2006, 05:09) *
Может есть какая то ссылка, или я в даташите, по усталости, просмотрел? Не ткнете носом?

Вот ссылка. Но дело темное: количество циклов зависит от технологии изготовления, и раньше действительно упоминались цифры 10К и 50К.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 24 2006, 10:19
Сообщение #13


Гуру
******

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



Цитата(aaarrr @ Oct 24 2006, 18:07) *
Вот ссылка. Но дело темное: количество циклов зависит от технологии изготовления, и раньше действительно упоминались цифры 10К и 50К.
Спасибо, че то я ходил-бродил по Атмелю вчера ночью, и не видел этого. На самом деле упоминается цифра в "...100K program/erase cycles per page..."


--------------------
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Oct 24 2006, 11:44
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(prottoss @ Oct 24 2006, 13:19) *
Цитата(aaarrr @ Oct 24 2006, 18:07) *
Вот ссылка. Но дело темное: количество циклов зависит от технологии изготовления, и раньше действительно упоминались цифры 10К и 50К.
Спасибо, че то я ходил-бродил по Атмелю вчера ночью, и не видел этого. На самом деле упоминается цифра в "...100K program/erase cycles per page..."


Ожидаю волны критики или уточнений, так как сам не использовал ни разу. Ну не было таких задач. smile.gif

Ребята, соседи делали. Но они точно не проверяли. Проблем вроде не было.

А вот где-то проскочила инфа, как данную проблему решали на заре создания во флэш карандашах какой-то израильской фирмы. Там отслеживается количество записи в ту или иную страницу. И соответственно всё время ползёт указатель. То есть даже если ты будешь писать в одну и ту же область, то на самом деле инфа ложится постоянно в разные места.
Ну а на вскидку рекомендации такие. Пытаться предварительно буферизовать чтобы уменьшить колличество записей. Сжимать или кодировать инфу для этого же. Ну и типа кольцевой буфер.
Раз в минуту - это на байт или на страницу??? Тут посчитать нужно.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 24 2006, 12:24
Сообщение #15


Гуру
******

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



Цитата(SasaVitebsk @ Oct 24 2006, 19:44) *
Ожидаю волны критики или уточнений, так как сам не использовал ни разу. Ну не было таких задач. smile.gif
))) Я сам ни разу не пользовал сей девайс...
Цитата(SasaVitebsk @ Oct 24 2006, 19:44) *
А вот где-то проскочила инфа, как данную проблему решали на заре создания во флэш карандашах какой-то израильской фирмы. Там отслеживается количество записи в ту или иную страницу. И соответственно всё время ползёт указатель. То есть даже если ты будешь писать в одну и ту же область, то на самом деле инфа ложится постоянно в разные места.
Это, в принципе, не ново...Ладна, пусть пальма первенства достанется евреям)

Цитата(SasaVitebsk @ Oct 24 2006, 19:44) *
Ну а на вскидку рекомендации такие. Пытаться предварительно буферизовать чтобы уменьшить колличество записей. Сжимать или кодировать инфу для этого же. Ну и типа кольцевой буфер.
Раз в минуту - это на байт или на страницу??? Тут посчитать нужно.
Раз в минуту - это структура данных, пока имеющая размер в 12 байт...Так как все еще в стадии разработки, то размер может и уползти немного вверх, но это не принципиально ) Буферизировать ничего, скорее всего не надо будет, так как в данном чипе есть два буфера по 264 байта, - данные можно и там собирать...К тому же имеются отдельные команды для доступа к буферу и слива данных из него в обе стороны, и даже есть команда сравнения содержимого буфера и страницы. Так что проблема потихоньку становится прозрачной )))


--------------------
Go to the top of the page
 
+Quote Post
at90
сообщение Oct 24 2006, 12:24
Сообщение #16


Знающий
****

Группа: Свой
Сообщений: 866
Регистрация: 31-03-05
Из: Краснодар
Пользователь №: 3 814



Мы работали с 45db081. На некоторых микросхемах появлялись битые ячейки на страницах. Пришлось делать проверку на сбойные ячейки.


--------------------
<<Первая производная от чужой идеи - уже твоя идея.>>
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 24 2006, 12:28
Сообщение #17


Гуру
******

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



Цитата(at90 @ Oct 24 2006, 20:24) *
Мы работали с 45db081. На некоторых микросхемах появлялись битые ячейки на страницах. Пришлось делать проверку на сбойные ячейки.
Это уже серъезный довод... Ладно, буду делать Bad Sector Allocation Table (((


--------------------
Go to the top of the page
 
+Quote Post
CD_Eater
сообщение Oct 24 2006, 14:51
Сообщение #18


Частый гость
**

Группа: Новичок
Сообщений: 173
Регистрация: 3-09-04
Из: Moscow
Пользователь №: 595



Цитата(at90 @ Oct 24 2006, 16:24) *
Мы работали с 45db081. На некоторых микросхемах появлялись битые ячейки на страницах. Пришлось делать проверку на сбойные ячейки.
Как вели себя сбойные биты ? Залипали на 0, на 1 или были и такие, и такие ?
Go to the top of the page
 
+Quote Post
at90
сообщение Oct 24 2006, 16:14
Сообщение #19


Знающий
****

Группа: Свой
Сообщений: 866
Регистрация: 31-03-05
Из: Краснодар
Пользователь №: 3 814



в них было одно и тоже значение.


--------------------
<<Первая производная от чужой идеи - уже твоя идея.>>
Go to the top of the page
 
+Quote Post
proba
сообщение Oct 24 2006, 17:33
Сообщение #20


Местный
***

Группа: Участник
Сообщений: 358
Регистрация: 29-05-05
Пользователь №: 5 526



чтото трудно поверить что появляются битые биты - это своиственно NAND flash, а AT45D - NOR flash. AT45D чувствителнь к сбоям по питанию и нередко появляются аномалии при стыковке его с 5вольтовым контроллером. исползовал 04,08,16 и пока не было проблем , при том сохраняю фаилы с контролем. если обязательно надо контрол за исправность данных то хемминг лучше чем таблица неисправных ячеек т.к. кол-во последних будет расти при эксплуатации.
Go to the top of the page
 
+Quote Post
CD_Eater
сообщение Oct 24 2006, 19:18
Сообщение #21


Частый гость
**

Группа: Новичок
Сообщений: 173
Регистрация: 3-09-04
Из: Moscow
Пользователь №: 595



Цитата(at90 @ Oct 24 2006, 20:14) *
в них было одно и тоже значение.
Какое ?
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 25 2006, 04:30
Сообщение #22


Гуру
******

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



Цитата(proba @ Oct 25 2006, 01:33) *
чтото трудно поверить что появляются битые биты - это своиственно NAND flash, а AT45D - NOR flash. AT45D чувствителнь к сбоям по питанию и нередко появляются аномалии при стыковке его с 5вольтовым контроллером. исползовал 04,08,16 и пока не было проблем , при том сохраняю фаилы с контролем. если обязательно надо контрол за исправность данных то хемминг лучше чем таблица неисправных ячеек т.к. кол-во последних будет расти при эксплуатации.
Поясните пожалуйста про хэмминг - что то знакомое со второго курса универа))) Имеете ввиду кодирование данных перед записью?


--------------------
Go to the top of the page
 
+Quote Post
acex2
сообщение Oct 25 2006, 04:55
Сообщение #23


Адепт
****

Группа: Свой
Сообщений: 520
Регистрация: 15-02-05
Пользователь №: 2 656



Цитата(prottoss @ Oct 25 2006, 08:30) *
Цитата(proba @ Oct 25 2006, 01:33) *
чтото трудно поверить что появляются битые биты - это своиственно NAND flash, а AT45D - NOR flash. AT45D чувствителнь к сбоям по питанию и нередко появляются аномалии при стыковке его с 5вольтовым контроллером. исползовал 04,08,16 и пока не было проблем , при том сохраняю фаилы с контролем. если обязательно надо контрол за исправность данных то хемминг лучше чем таблица неисправных ячеек т.к. кол-во последних будет расти при эксплуатации.
Поясните пожалуйста про хэмминг - что то знакомое со второго курса универа))) Имеете ввиду кодирование данных перед записью?


Коды Хэмминга - это одно из семейств кодов с восстановлением поврежденных данных.
Подробности с математикой есть на Википедии: http://en.wikipedia.org/wiki/Hamming_code
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 25 2006, 07:12
Сообщение #24


Гуру
******

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



Цитата(acex2 @ Oct 25 2006, 12:55) *
Коды Хэмминга - это одно из семейств кодов с восстановлением поврежденных данных.
Подробности с математикой есть на Википедии: http://en.wikipedia.org/wiki/Hamming_code
Да, хорошая штука, исправляет однократные ошибки в байте, сигнализирует (но не исправляет) о двукратных... Правда, размер данных увеличивается в два раза... Надо с заказчиком посоветоваться...


--------------------
Go to the top of the page
 
+Quote Post
acex2
сообщение Oct 25 2006, 07:35
Сообщение #25


Адепт
****

Группа: Свой
Сообщений: 520
Регистрация: 15-02-05
Пользователь №: 2 656



Цитата(prottoss @ Oct 25 2006, 11:12) *
Да, хорошая штука, исправляет однократные ошибки в байте, сигнализирует (но не исправляет) о двукратных... Правда, размер данных увеличивается в два раза... Надо с заказчиком посоветоваться...


Вообще-то, в полтора раза для байта. Если возьмете размер побольше, скажем 16 бит, то накладные расходы будут еще меньше (<1/3). Правда, и вероятность обнаружения/исправления ошибок при этом уменьшится.
Go to the top of the page
 
+Quote Post
mse
сообщение Oct 25 2006, 08:51
Сообщение #26


Знающий
****

Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693



Цитата(acex2 @ Oct 25 2006, 11:35) *
Вообще-то, в полтора раза для байта. Если возьмете размер побольше, скажем 16 бит, то накладные расходы будут еще меньше (<1/3). Правда, и вероятность обнаружения/исправления ошибок при этом уменьшится.

Если склероз не подводит, то в своё время у нас делали платы с контролем по Хэммингу. С однократным восстановлением и двукратной сигнализаццыей. Стояла 555ВЖ1 на 16 бит данных и 4 бита синдрома. На байт нуна 3 бита синдрома. Во...Кажысь не перепутал.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 25 2006, 09:29
Сообщение #27


Гуру
******

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



Цитата(acex2 @ Oct 25 2006, 15:35) *
Вообще-то, в полтора раза для байта. Если возьмете размер побольше, скажем 16 бит, то накладные расходы будут еще меньше (<1/3). Правда, и вероятность обнаружения/исправления ошибок при этом уменьшится.
Я, вообще-то, изобретаю не кодировщик по Хэммингу, а соооовсем другое изделие, и мне еще важна производительность, которая не сопоставима с, допустим, ARM. Если еще я начну все уплотнять...Возможно, производительности МК не хватит... Эх...А у заказчика, похоже, кабель Езернет вырубили, не могу связаться второй день...

Цитата(mse @ Oct 25 2006, 16:51) *
... Стояла 555ВЖ1 на 16 бит данных и 4 бита синдрома. На байт нуна 3 бита синдрома. Во...Кажысь не перепутал.
Ага, ага, а вместо МК комплект AMD 1804 применить, супер!!! )))


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


Местный
***

Группа: Участник
Сообщений: 358
Регистрация: 29-05-05
Пользователь №: 5 526



кодировку можно делать с look-up table, 2x256 баит берет, но задержка незаметная получается. правда, декодирование не так быстрая получается. а какие еще варианты? мажоритание 2 из 3-х жрет 3 раза больше flash. еще есть цикловые счетчики но они годятся для счета каких то событии а не для даталоггера.
Go to the top of the page
 
+Quote Post
mse
сообщение Oct 25 2006, 10:01
Сообщение #29


Знающий
****

Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693



Цитата(prottoss @ Oct 25 2006, 13:29) *
Цитата(mse @ Oct 25 2006, 16:51) *
... Стояла 555ВЖ1 на 16 бит данных и 4 бита синдрома. На байт нуна 3 бита синдрома. Во...Кажысь не перепутал.
Ага, ага, а вместо МК комплект AMD 1804 применить, супер!!! )))

Дык...в те времена оно само то и было. Правда, ставили в машину на 8086.
Зато на ходу отвёрткой РУ5 из панельки - цмык! А оно работает! Зелёных человечков впечатляло...
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 25 2006, 10:06
Сообщение #30


Гуру
******

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



Цитата(mse @ Oct 25 2006, 18:01) *
Цитата(prottoss @ Oct 25 2006, 13:29) *

Цитата(mse @ Oct 25 2006, 16:51) *
... Стояла 555ВЖ1 на 16 бит данных и 4 бита синдрома. На байт нуна 3 бита синдрома. Во...Кажысь не перепутал.
Ага, ага, а вместо МК комплект AMD 1804 применить, супер!!! )))

Дык...в те времена оно само то и было. Правда, ставили в машину на 8086.
Зато на ходу отвёрткой РУ5 из панельки - цмык! А оно работает! Зелёных человечков впечатляло...
Я в ТЕ времена читать еще не умел....И учился писать не мимо горшка))) Счас надо чтоб все желательно одном чипе и дырдочек на плате тока чтоб закрепить...И то не всегда.)


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



*****

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



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


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #33



*****

Группа: Свой
Сообщений: 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
Сообщение #34


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #35



*****

Группа: Свой
Сообщений: 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
Сообщение #36


Гуру
******

Группа: Свой
Сообщений: 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
xemul
сообщение Oct 25 2006, 15:56
Сообщение #37



*****

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



Если нужно только контролировать целостность данных, то, естесно, достаточно контрольной суммы какого-либо вида. Если же хочется их и восстанавливать, то... Ну Вы сами знаетеsmile.gif.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 25 2006, 16:05
Сообщение #38


Гуру
******

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



Цитата(xemul @ Oct 25 2006, 23:56) *
Если нужно только контролировать целостность данных, то, естесно, достаточно контрольной суммы какого-либо вида. Если же хочется их и восстанавливать, то... Ну Вы сами знаете smile.gif .
Данные считываются с нескольких датчиков, с некоторых циклически, с некоторых по событию, раз в сутки предполагается эти данные снимать, за тем все повторяется. Так что, ИМХО, защиту восстанавливающими кодами, вводить не стоит, ограничусь CRC на структуру...


--------------------
Go to the top of the page
 
+Quote Post
Nanobyte
сообщение Oct 25 2006, 20:03
Сообщение #39


За битами по регистрам гоняюсь
***

Группа: Свой
Сообщений: 457
Регистрация: 24-04-06
Из: Таганрог
Пользователь №: 16 446



Так, вдогонку ...
Когда-то делал контроллер для пейджингового передатчика, пришлось кодировать кодом БЧХ. 20 битов данных защищались 10 битами кода, исправлял пять ошибок и от шести обнаруживал. Кодирование БЧХ очень простое, набор полиномов, Z80 справлялся на лету. Декодирование чуть сложнее. Но, наверное, это для параноиков smile.gif


--------------------
Курсор влево, курсор вправо - считается хакерством. FORMAT C: производится без предупреждения
Go to the top of the page
 
+Quote Post
Shum1
сообщение Oct 26 2006, 09:41
Сообщение #40





Группа: Участник
Сообщений: 13
Регистрация: 9-06-06
Пользователь №: 17 933



если вы читаете данные из флэшины раз в сутки, то видимо за сутки вы сделаете максимум один цикл её записи......... даже если брать минимальный ресурс приведённый в этой теме 10к - то получается 27 лет............ из практики использования флэшин ат45db321 ошибок не было....... правда до 10к дело ещё не дошло........))))) а контроль ошибок в качестве CRC на буфер вводить помойму целесообразно..... ресурсов ест немного, а на душе спокойней))))))
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 26 2006, 10:47
Сообщение #41


Гуру
******

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



Цитата(Shum1 @ Oct 26 2006, 17:41) *
если вы читаете данные из флэшины раз в сутки, то видимо за сутки вы сделаете максимум один цикл её записи......... даже если брать минимальный ресурс приведённый в этой теме 10к - то получается 27 лет............ из практики использования флэшин ат45db321 ошибок не было....... правда до 10к дело ещё не дошло........))))) а контроль ошибок в качестве CRC на буфер вводить помойму целесообразно..... ресурсов ест немного, а на душе спокойней))))))
Чего то я не понял... Я собираюсь записывать данные во флэш с интервалом от 1 сек до 1(3) мин. Об этом я написал в первом посте. Пусть я буду кэшировать данные в обоих буферах пока они не заполнятся... Как у меня получится всего один цикл записи, если я сливаю данные круглосуточно?


--------------------
Go to the top of the page
 
+Quote Post
xemul
сообщение Oct 26 2006, 11:12
Сообщение #42



*****

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



Цитата(Nanobyte @ Oct 26 2006, 00:03) *
Так, вдогонку ...
Когда-то делал контроллер для пейджингового передатчика, пришлось кодировать кодом БЧХ. 20 битов данных защищались 10 битами кода, исправлял пять ошибок и от шести обнаруживал. Кодирование БЧХ очень простое, набор полиномов, Z80 справлялся на лету. Декодирование чуть сложнее. Но, наверное, это для параноиков smile.gif

Алгоритм Хемминга - частный случай алгоритма BCH. В POCSAG'е используется BCH(32,21,5) - 32-бит. блок = 21 бит данных + 11 бит контроля, до 2 ошибок исправляется, до 5 - обнаруживается.
Go to the top of the page
 
+Quote Post
evg123
сообщение Jan 23 2007, 14:54
Сообщение #43


Местный
***

Группа: Свой
Сообщений: 353
Регистрация: 11-09-06
Из: Минск
Пользователь №: 20 282



Если писать данные в сектор последовательно то все должно работать OK, никаких сбоев не наблюдалось, по крайней мере у меня работает.
Более подробно можно поммотреть -> http://www.gaw.ru/html.cgi/txt/ic/Atmel/me.../at45/about.htm
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 Текстовая версия Сейчас: 20th July 2025 - 07:09
Рейтинг@Mail.ru


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