Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Непонятная работа AT45DB041D
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Sergio66
Доброго времени суток...
Столкнулся с такой проблемой... Голову сломал в поисках причины... Может кто сталкивался с подобным...
Имеется плата под управлением МЕГА32 и AT45DB041D подключены по SPI.
Девайс постоянно накапливает данные с датчиков и складывает на флэш. 1 запись = 8 байт...
Флэш организована таким образом:
0-я страница - служебная. В ней помимо прочего пишется и адрес первой свободной для записи данных ячейки остальной части флэш.
Пока данные поступали редко - 1 запись в 2 - 3 минуты, все было нормально...
Теперь данные поступают раз в 2 секунды. Соответственно, модификация 0-й страницы происходит так же часто...
как только набирается 60 - 70 тысяч записей, начинают портиться данные в страницах 1,2,3... дальше не проверял... Данные в 0-й странице - в порядке.
Область для данных закольцована... Это не вызывает сомнений. проверено и в отладчике, и на медленном процессе... Кроме того, данные в начальных страницах начинают портиться либо ДО перехода через начало, либо далеко после. Но НЕ в момент перехода на начало области данных...
Пробовал ставить Rewrite через каждые 10 000 попыток доступа к 0-й странице. не помогает...
Может кто имеет соображения по этому поводу???
Еще раз - на медленном процессе все работает нормально...
Буду благодарен за любой ответ...
aaarrr
Цитата(Sergio66 @ May 28 2013, 18:09) *
Пробовал ставить Rewrite через каждые 10 000 попыток доступа к 0-й странице. не помогает...

Как именно Вы делали rewrite?

Цитата(Sergio66 @ May 28 2013, 18:09) *
Может кто имеет соображения по этому поводу???

ИМХО:
1. Вообще не хранить данные в секторе 0a (первые восемь страниц), только служебную информацию.
2. Указатель "хвоста" размазывать по этим восьми страницам, иначе очень быстро кончится ресурс.
rx3apf
И вообще не хранить указатель "хвоста", а определять его сканированием до первой свободной (FF....FF) зоны. Это если при включении. А пока устройство включено - в оперативной памяти, естественно.
zombi
Цитата(Sergio66 @ May 28 2013, 17:09) *
Теперь данные поступают раз в 2 секунды. Соответственно, модификация 0-й страницы происходит так же часто...
как только набирается 60 - 70 тысяч записей, начинают портиться данные в страницах 1,2,3... дальше не проверял... Данные в 0-й странице - в порядке.

А может флешкой уже кто то пользовался до Вас.
"раз в 2 секунды" т.е. Ваше устройство работоспособно ~55.5 часов? А потом что? выбрасывать?
Арк К
Цитата(zombi @ May 29 2013, 00:21) *
А может флешкой уже кто то пользовался до Вас.
"раз в 2 секунды" т.е. Ваше устройство работоспособно ~55.5 часов? А потом что? выбрасывать?

Ну там ресурс же не 100000 стираний...
bb-offtopic.gif Сейчас хотел посмотреть у Атмела и обнаружил, что в их номенклатуре больше нет позиции DataFlash® Я что-то пропустил? Как дальше жить?! crying.gif
aaarrr
Цитата(Арк К @ May 30 2013, 15:20) *
bb-offtopic.gif Сейчас хотел посмотреть у Атмела и обнаружил, что в их номенклатуре больше нет позиции DataFlash® Я что-то пропустил? Как дальше жить?! crying.gif

Они продали это направление Adesto Technologies Corporation. А жить лучше вообще без DataFlash sm.gif
zombi
Цитата(Арк К @ May 30 2013, 14:20) *
Ну там ресурс же не 100000 стираний...

А сколько?
В DS смотрю :
Цитата
100,000 Program/Erase Cycles Per Page Minimum

Или я чего то не догоняю?
vacvvn
Чудес не бывает, бывают трудноуловимые ошибки в программах, которые замыленный глаз автора программы в упор не видит. Ищите багу и пересмотрите порядок хранения данных - обновлять во флеше адреса головы и хвоста архива каждые 2 сек совершенно неправильно. Если девайс не выключается, то хранить адреса в оперативке, а при запуске голову и хвост сканировать. Если выключается часто и времени на сканирование нет, то придумывать что то еще. Например sram с батарейкой.
Арк К
Цитата(zombi @ May 30 2013, 19:12) *
Или я чего то не догоняю?

Всё верно. Я перепутал с 24-ой серией, где эта цифра на порядок больше, но тоже мало на самом деле.
Ещё есть вариант потавить отдельную ПЗУшку от Ramtron для хранения адреса. У них неограниченное число перезаписей
desh
Отдельная микросхема - это неудобно.
Если к данным добавить поле с ключом, значение которого увеличивается от записи к записи - можно вообще не хранить индексы, а вычислять их по старту алгоритмом, аналогичным бинарныму поиску.
Получается весьма быстро.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.