Перейти к содержанию
    

Непонятная работа AT45DB041D

Доброго времени суток...

Столкнулся с такой проблемой... Голову сломал в поисках причины... Может кто сталкивался с подобным...

Имеется плата под управлением МЕГА32 и AT45DB041D подключены по SPI.

Девайс постоянно накапливает данные с датчиков и складывает на флэш. 1 запись = 8 байт...

Флэш организована таким образом:

0-я страница - служебная. В ней помимо прочего пишется и адрес первой свободной для записи данных ячейки остальной части флэш.

Пока данные поступали редко - 1 запись в 2 - 3 минуты, все было нормально...

Теперь данные поступают раз в 2 секунды. Соответственно, модификация 0-й страницы происходит так же часто...

как только набирается 60 - 70 тысяч записей, начинают портиться данные в страницах 1,2,3... дальше не проверял... Данные в 0-й странице - в порядке.

Область для данных закольцована... Это не вызывает сомнений. проверено и в отладчике, и на медленном процессе... Кроме того, данные в начальных страницах начинают портиться либо ДО перехода через начало, либо далеко после. Но НЕ в момент перехода на начало области данных...

Пробовал ставить Rewrite через каждые 10 000 попыток доступа к 0-й странице. не помогает...

Может кто имеет соображения по этому поводу???

Еще раз - на медленном процессе все работает нормально...

Буду благодарен за любой ответ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пробовал ставить Rewrite через каждые 10 000 попыток доступа к 0-й странице. не помогает...

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

 

Может кто имеет соображения по этому поводу???

ИМХО:

1. Вообще не хранить данные в секторе 0a (первые восемь страниц), только служебную информацию.

2. Указатель "хвоста" размазывать по этим восьми страницам, иначе очень быстро кончится ресурс.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И вообще не хранить указатель "хвоста", а определять его сканированием до первой свободной (FF....FF) зоны. Это если при включении. А пока устройство включено - в оперативной памяти, естественно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Теперь данные поступают раз в 2 секунды. Соответственно, модификация 0-й страницы происходит так же часто...

как только набирается 60 - 70 тысяч записей, начинают портиться данные в страницах 1,2,3... дальше не проверял... Данные в 0-й странице - в порядке.

А может флешкой уже кто то пользовался до Вас.

"раз в 2 секунды" т.е. Ваше устройство работоспособно ~55.5 часов? А потом что? выбрасывать?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А может флешкой уже кто то пользовался до Вас.

"раз в 2 секунды" т.е. Ваше устройство работоспособно ~55.5 часов? А потом что? выбрасывать?

Ну там ресурс же не 100000 стираний...

:bb-offtopic: Сейчас хотел посмотреть у Атмела и обнаружил, что в их номенклатуре больше нет позиции DataFlash® Я что-то пропустил? Как дальше жить?! :crying:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

:bb-offtopic: Сейчас хотел посмотреть у Атмела и обнаружил, что в их номенклатуре больше нет позиции DataFlash® Я что-то пропустил? Как дальше жить?! :crying:

Они продали это направление Adesto Technologies Corporation. А жить лучше вообще без DataFlash :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну там ресурс же не 100000 стираний...

А сколько?

В DS смотрю :

100,000 Program/Erase Cycles Per Page Minimum

Или я чего то не догоняю?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чудес не бывает, бывают трудноуловимые ошибки в программах, которые замыленный глаз автора программы в упор не видит. Ищите багу и пересмотрите порядок хранения данных - обновлять во флеше адреса головы и хвоста архива каждые 2 сек совершенно неправильно. Если девайс не выключается, то хранить адреса в оперативке, а при запуске голову и хвост сканировать. Если выключается часто и времени на сканирование нет, то придумывать что то еще. Например sram с батарейкой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Или я чего то не догоняю?

Всё верно. Я перепутал с 24-ой серией, где эта цифра на порядок больше, но тоже мало на самом деле.

Ещё есть вариант потавить отдельную ПЗУшку от Ramtron для хранения адреса. У них неограниченное число перезаписей

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Отдельная микросхема - это неудобно.

Если к данным добавить поле с ключом, значение которого увеличивается от записи к записи - можно вообще не хранить индексы, а вычислять их по старту алгоритмом, аналогичным бинарныму поиску.

Получается весьма быстро.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...