|
Ресурс SPI DataFlash, AT45DB041B |
|
|
3 страниц
1 2 3 >
|
 |
Ответов
(1 - 42)
|
Oct 24 2006, 06:40
|

Гуру
     
Группа: Свой
Сообщений: 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
|
|
|
|
|
Oct 24 2006, 11:44
|
Гуру
     
Группа: Свой
Сообщений: 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..." Ожидаю волны критики или уточнений, так как сам не использовал ни разу. Ну не было таких задач. Ребята, соседи делали. Но они точно не проверяли. Проблем вроде не было. А вот где-то проскочила инфа, как данную проблему решали на заре создания во флэш карандашах какой-то израильской фирмы. Там отслеживается количество записи в ту или иную страницу. И соответственно всё время ползёт указатель. То есть даже если ты будешь писать в одну и ту же область, то на самом деле инфа ложится постоянно в разные места. Ну а на вскидку рекомендации такие. Пытаться предварительно буферизовать чтобы уменьшить колличество записей. Сжимать или кодировать инфу для этого же. Ну и типа кольцевой буфер. Раз в минуту - это на байт или на страницу??? Тут посчитать нужно.
|
|
|
|
|
Oct 24 2006, 12:24
|

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

|
Цитата(SasaVitebsk @ Oct 24 2006, 19:44)  Ожидаю волны критики или уточнений, так как сам не использовал ни разу. Ну не было таких задач.  ))) Я сам ни разу не пользовал сей девайс... Цитата(SasaVitebsk @ Oct 24 2006, 19:44)  А вот где-то проскочила инфа, как данную проблему решали на заре создания во флэш карандашах какой-то израильской фирмы. Там отслеживается количество записи в ту или иную страницу. И соответственно всё время ползёт указатель. То есть даже если ты будешь писать в одну и ту же область, то на самом деле инфа ложится постоянно в разные места. Это, в принципе, не ново...Ладна, пусть пальма первенства достанется евреям) Цитата(SasaVitebsk @ Oct 24 2006, 19:44)  Ну а на вскидку рекомендации такие. Пытаться предварительно буферизовать чтобы уменьшить колличество записей. Сжимать или кодировать инфу для этого же. Ну и типа кольцевой буфер. Раз в минуту - это на байт или на страницу??? Тут посчитать нужно. Раз в минуту - это структура данных, пока имеющая размер в 12 байт...Так как все еще в стадии разработки, то размер может и уползти немного вверх, но это не принципиально ) Буферизировать ничего, скорее всего не надо будет, так как в данном чипе есть два буфера по 264 байта, - данные можно и там собирать...К тому же имеются отдельные команды для доступа к буферу и слива данных из него в обе стороны, и даже есть команда сравнения содержимого буфера и страницы. Так что проблема потихоньку становится прозрачной )))
--------------------
|
|
|
|
|
Oct 24 2006, 14:51
|
Частый гость
 
Группа: Новичок
Сообщений: 173
Регистрация: 3-09-04
Из: Moscow
Пользователь №: 595

|
Цитата(at90 @ Oct 24 2006, 16:24)  Мы работали с 45db081. На некоторых микросхемах появлялись битые ячейки на страницах. Пришлось делать проверку на сбойные ячейки. Как вели себя сбойные биты ? Залипали на 0, на 1 или были и такие, и такие ?
|
|
|
|
|
Oct 24 2006, 19:18
|
Частый гость
 
Группа: Новичок
Сообщений: 173
Регистрация: 3-09-04
Из: Moscow
Пользователь №: 595

|
Цитата(at90 @ Oct 24 2006, 20:14)  в них было одно и тоже значение. Какое ?
|
|
|
|
|
Oct 25 2006, 04:55
|

Адепт
   
Группа: Свой
Сообщений: 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
|
|
|
|
|
Oct 25 2006, 07:35
|

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

|
Цитата(prottoss @ Oct 25 2006, 11:12)  Да, хорошая штука, исправляет однократные ошибки в байте, сигнализирует (но не исправляет) о двукратных... Правда, размер данных увеличивается в два раза... Надо с заказчиком посоветоваться... Вообще-то, в полтора раза для байта. Если возьмете размер побольше, скажем 16 бит, то накладные расходы будут еще меньше (<1/3). Правда, и вероятность обнаружения/исправления ошибок при этом уменьшится.
|
|
|
|
|
Oct 25 2006, 09:29
|

Гуру
     
Группа: Свой
Сообщений: 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 применить, супер!!! )))
--------------------
|
|
|
|
|
Oct 25 2006, 10:01
|
Знающий
   
Группа: Свой
Сообщений: 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 из панельки - цмык! А оно работает! Зелёных человечков впечатляло...
|
|
|
|
|
Oct 25 2006, 10:06
|

Гуру
     
Группа: Свой
Сообщений: 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 из панельки - цмык! А оно работает! Зелёных человечков впечатляло... Я в ТЕ времена читать еще не умел....И учился писать не мимо горшка))) Счас надо чтоб все желательно одном чипе и дырдочек на плате тока чтоб закрепить...И то не всегда.)
--------------------
|
|
|
|
|
Oct 25 2006, 11:51
|

Гуру
     
Группа: Свой
Сообщений: 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 , что облегчает контроль. Так как размер блока данных, относительно, не большой, можно производить запись только в буфер, а, в случае переполнения буфера, проверять целостность записанных данных. Кроме того, делать то же самое при пропадании питания (в устройстве два питания). Вот только не определился с таблицей сбойных...чего? Толи сбойных страниц, то ли страницу разбить на сектора размерности структуры данных. Смысла контролировать отдельные ячейки я не вижу...
--------------------
|
|
|
|
|
Oct 25 2006, 14:28
|
    
Группа: Свой
Сообщений: 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), но как-то оно там слишком шоколадно. А выполнять проверку целостности при чтении блока Вы не предполагаете? Хозяин - барин  .
|
|
|
|
|
Oct 25 2006, 14:44
|

Гуру
     
Группа: Свой
Сообщений: 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), но как-то оно там слишком шоколадно. А выполнять проверку целостности при чтении блока Вы не предполагаете? Хозяин - барин  . Я не понял сначала Ваш ход мыслей...Счас понял...Но копаться с битами, на первый взгляд, геморно... Хотя, глаза боятся - руки печатают))) Может быть проще вместо UCHAR объявить UINT...?Объем расходуемой памяти, правда увеличится в два раза... По поводу проверки при чтении - а что, есть ситуэйшн, когда будучи уже записанны, данные могут испортиться? Я имею ввиду не глобальные катаклизмы с питанием, или вследствии упавшей рядом ядреной бомбы, а в следствии порчи ячеек...
--------------------
|
|
|
|
|
Oct 25 2006, 15:10
|
    
Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731

|
Цитата(prottoss @ Oct 25 2006, 18:44)  Я не понял сначала Ваш ход мыслей...Счас понял...Но копаться с битами, на первый взгляд, геморно... Хотя, глаза боятся - руки печатают))) Может быть проще вместо UCHAR объявить UINT...?Объем расходуемой памяти, правда увеличится в два раза... UCHAR удобнее, т.к. используемый Вами контроллер скорее всего работает с 1-байтовыми данными. Любой алгоритм контроля целостности предполагает неудобную (скрытую) операцию вычисления номера бита. Использование таблиц делает ее скрытой. Но для блока данных в 12 байт таблица получится немерянной. Т.к. у Вас частота записи во флеш невысока, то вычисление контрольного кода можно вести в фоне. Цитата По поводу проверки при чтении - а что, есть ситуэйшн, когда будучи уже записанны, данные могут испортиться? Я имею ввиду не глобальные катаклизмы с питанием, или вследствии упавшей рядом ядреной бомбы, а в следствии порчи ячеек... Дык именно это враги и проверяют при всяких endurance test памяти - частоту искажения информации. А чем оно (искажение) вызвано - взрывом ядреной бомбы, отказом ячейки или преждевременной утечкой заряда с затвора транзистора - дело следующее. Я почему и сказал, что результаты тестов ну очень шоколадные - ни одного сбоя ни в одном тесте. Если исходить из этого, то можно вообще ничего не контролировать  .
|
|
|
|
|
Oct 25 2006, 15:29
|

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

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

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

|
Цитата(xemul @ Oct 25 2006, 23:56)  Если нужно только контролировать целостность данных, то, естесно, достаточно контрольной суммы какого-либо вида. Если же хочется их и восстанавливать, то... Ну Вы сами знаете  . Данные считываются с нескольких датчиков, с некоторых циклически, с некоторых по событию, раз в сутки предполагается эти данные снимать, за тем все повторяется. Так что, ИМХО, защиту восстанавливающими кодами, вводить не стоит, ограничусь CRC на структуру...
--------------------
|
|
|
|
|
Oct 26 2006, 09:41
|
Группа: Участник
Сообщений: 13
Регистрация: 9-06-06
Пользователь №: 17 933

|
если вы читаете данные из флэшины раз в сутки, то видимо за сутки вы сделаете максимум один цикл её записи......... даже если брать минимальный ресурс приведённый в этой теме 10к - то получается 27 лет............ из практики использования флэшин ат45db321 ошибок не было....... правда до 10к дело ещё не дошло........))))) а контроль ошибок в качестве CRC на буфер вводить помойму целесообразно..... ресурсов ест немного, а на душе спокойней))))))
|
|
|
|
|
Oct 26 2006, 11:12
|
    
Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731

|
Цитата(Nanobyte @ Oct 26 2006, 00:03)  Так, вдогонку ... Когда-то делал контроллер для пейджингового передатчика, пришлось кодировать кодом БЧХ. 20 битов данных защищались 10 битами кода, исправлял пять ошибок и от шести обнаруживал. Кодирование БЧХ очень простое, набор полиномов, Z80 справлялся на лету. Декодирование чуть сложнее. Но, наверное, это для параноиков  Алгоритм Хемминга - частный случай алгоритма BCH. В POCSAG'е используется BCH(32,21,5) - 32-бит. блок = 21 бит данных + 11 бит контроля, до 2 ошибок исправляется, до 5 - обнаруживается.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|