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

 
 
> Хранение файлов на at45db, DataFlash + мк с малыми ресурсами. Как?
alcosar
сообщение Sep 5 2007, 13:12
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 30-03-06
Пользователь №: 15 598



Предлагаю поделится опытом работы с DataFlash. А именно, как организовать на ней хранение файлов -- что-то вроде файловой системы? Какой оптимальный способ для микроконтроллера с малыми ресурсами(ОЗУ - 128..512 байт; FLASH - 2..16 килобайт)? Прилагаю файл с описанием того, как этот вопрос я решил для себя. Интересно ваше мнение, предложения и критика.
Прикрепленные файлы
Прикрепленный файл  files_on_data_flash.zip ( 2.48 килобайт ) Кол-во скачиваний: 209
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
alcosar
сообщение Sep 6 2007, 03:48
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 30-03-06
Пользователь №: 15 598



Сам ФАТ нужно хранить в ОЗУ либо мк, либо DataFlash. В мк мало ОЗУ. В DataFlash во время записи используются оба буфера, чтобы ускорить запись. Сам ФАТ во флеши хранится в одной и той же странице. Т.е. запись в нее будет происходить при всякой операции записи. Нет равномерного износа.
Может можно сделать по-другому?
Исходники уже есть.
Go to the top of the page
 
+Quote Post
kada
сообщение Sep 6 2007, 10:31
Сообщение #3


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

Группа: Свой
Сообщений: 106
Регистрация: 23-05-05
Из: Ташкент
Пользователь №: 5 324



Цитата(alcosar @ Sep 6 2007, 08:48) *
Сам ФАТ нужно хранить в ОЗУ либо мк, либо DataFlash. В мк мало ОЗУ. В DataFlash во время записи используются оба буфера, чтобы ускорить запись. Сам ФАТ во флеши хранится в одной и той же странице. Т.е. запись в нее будет происходить при всякой операции записи. Нет равномерного износа.
Может можно сделать по-другому?
Исходники уже есть.

Выделить несколько страниц для хранения FAT и тем самым создать круговой буфер. В начале FAT предусмотреть некий маркер, по которому можно определить что данная страница содержит в себе валидную FAT. Для чтения из FAT находится страница с маркером. Для записи новой информации в FAT копируется текущая FAT в следующую страницу памяти. В старой затирается маркер. В новой меняются необходимые данные. Вместо маркеров можно использовать индекс номера текущей страницы с валидной FAT. Безусловно, по скорости такое решение далеко не лучший вариант. Зато несложное в реализации путем доработки исходников той же FatFS от ChaN`а
Go to the top of the page
 
+Quote Post
alsenin
сообщение Oct 11 2007, 05:33
Сообщение #4





Группа: Новичок
Сообщений: 2
Регистрация: 28-03-07
Пользователь №: 26 571



Цитата(kada @ Sep 6 2007, 17:31) *
Выделить несколько страниц для хранения FAT и тем самым создать круговой буфер. В начале FAT предусмотреть некий маркер, по которому можно определить что данная страница содержит в себе валидную FAT. Для чтения из FAT находится страница с маркером. Для записи новой информации в FAT копируется текущая FAT в следующую страницу памяти. В старой затирается маркер. В новой меняются необходимые данные. Вместо маркеров можно использовать индекс номера текущей страницы с валидной FAT. Безусловно, по скорости такое решение далеко не лучший вариант. Зато несложное в реализации путем доработки исходников той же FatFS от ChaN`а


После реального опыта работы с FatFS без внешнего ОЗУ любые движения по перезаписи нескольких копий FAT видится крайне напряжными. Тем более в случае краха FAT'а крайне сложно будет вытянуть данные имея n+1 несинхронизированных копий FAT.

Для реализации же файловых систем, экономно расходующих ресурс циклов перезаписи давно существуют другие решения. Например jffs, jffs2, jffs3 (правда примеров их реализации для Meg'и мне не известно).

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



Цитата(Kovrov @ Oct 9 2007, 11:46) *
Вот такой вопрос волнует в последнее время..
применяете ли вы, уважаемые колеги, какие нибудь методы контроля за записью или чтением в буфер
дата флеш?
Вопрос встал достаточно ощутимо после того, как попалась дфлешка с полуживым SPI..
и наблюдался такой глюк:
читаю полностью страничку памяти 528 байт
в ней заранее записаны нули..
и при чтении нет нет да промелькнет где то еденичка..
вчера всю голову сломал- думал что это: наводки или косяки в программе.
пока не заменил дфлеш.


Конечно применям. smile.gif

Недаром размер страницы 528 байт - есть лишние 16 байт для хранения контрольной суммы или исправляющего кода. Очень актуально не только при битом SPI. Плюс верификация записи.


Цитата(alcosar @ Sep 6 2007, 10:48) *
Сам ФАТ нужно хранить в ОЗУ либо мк, либо DataFlash. В мк мало ОЗУ. В DataFlash во время записи используются оба буфера, чтобы ускорить запись.


ФАТ в ОЗУ хранить может и не получится... он (ФАТ) может быть и достаточно большой smile.gif))

Для реально ускорения работы с DF я применял массив из 4 м/с DF с параллельной записью/чтением буфферов (типа страйпинга в райдах).

Но на самом деле FAT на Meg'e это больше мучений, чем пользы, ИМХО.

Сообщение отредактировал alsenin - Oct 11 2007, 05:36
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- alcosar   Хранение файлов на at45db   Sep 5 2007, 13:12
- - Kuzmi4   А собсно чем не нравится FatFS от ChaN`а? Я т...   Sep 5 2007, 14:31
|- - Сергей Борщ   Цитата(kada @ Sep 6 2007, 13:31) В старой...   Sep 6 2007, 14:07
||- - Непомнящий Евгений   Цитата(Сергей Борщ @ Sep 6 2007, 18:07) А...   Sep 7 2007, 04:20
||- - kada   Цитата(Сергей Борщ @ Sep 6 2007, 19:07) А...   Oct 5 2007, 19:11
|- - Kovrov   Цитата(alsenin @ Oct 11 2007, 09:33) Неда...   Oct 11 2007, 17:39
||- - alsenin   Цитата(Kovrov @ Oct 12 2007, 00:39) можно...   Oct 12 2007, 03:24
|- - kada   Цитата(alsenin @ Oct 11 2007, 10:33) Посл...   Oct 26 2007, 15:08
- - urasinov   Может быть вам будет достаточно хранить перед кажд...   Sep 6 2007, 04:03
|- - alcosar   Цитата(urasinov @ Sep 6 2007, 07:03) Може...   Sep 6 2007, 11:06
- - Kovrov   Вот такой вопрос волнует в последнее время.. приме...   Oct 9 2007, 04:46
|- - add   Цитата(Kovrov @ Oct 9 2007, 08:46) ...и п...   Oct 9 2007, 05:34
|- - alcosar   Цитата(Kovrov @ Oct 9 2007, 07:46) Вот та...   Oct 9 2007, 12:24
- - Kovrov   Возможно не спорю... ну и тем не менее вопрос оста...   Oct 9 2007, 11:30
- - Kovrov   Попорядку: как определил полуживость датафлешки......   Oct 9 2007, 13:15
|- - alcosar   Цитата(Kovrov @ Oct 9 2007, 16:15) Попоря...   Oct 10 2007, 05:47
- - Kovrov   78L03   Oct 10 2007, 16:13
|- - alcosar   Цитата(Kovrov @ Oct 10 2007, 19:13) 78L03...   Oct 11 2007, 14:38
- - Kovrov   понятно. спасибо. А что вы считаете более подходящ...   Oct 12 2007, 06:18


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 20:31
Рейтинг@Mail.ru


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