Jump to content

    

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Share this post


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

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

 

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

ИМХО:

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

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

Share this post


Link to post
Share on other sites

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

Share this post


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

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

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

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

 

Share this post


Link to post
Share on other sites
А может флешкой уже кто то пользовался до Вас.

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

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

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

Share this post


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

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

Share this post


Link to post
Share on other sites
Ну там ресурс же не 100000 стираний...

А сколько?

В DS смотрю :

100,000 Program/Erase Cycles Per Page Minimum

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
Или я чего то не догоняю?

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

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this