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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> своя FAT для связки MK <=> FLASH, Работа с FLASH - SD/MMC на MK - у меня АВР
QuickWitted
сообщение Sep 6 2007, 08:12
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 322
Регистрация: 21-06-07
Из: СНГ
Пользователь №: 28 596



Предлагаю разработать упрощённый аналог FAT для работы микропроцессора с флеш картами.

В современных микропроцессорах нижнего ценового диапазона относительно МАЛО RAM на борту
(У АТMega16 - 1к.б. НА ВСЁ). В связи с этим очень трудно сделать поддержку FAT - на запись.
(Флеш карты могут записывать информацию только БЛОКАМИ по 512байт (1024байт для >1Gb.))
Проще говоря таблицу размещения файлов надо где-то хранить иначе придётся после чтения
каждого кластера читать FAT снова и выяснять какой кластер писать/читать следующим
(на что тратится очень много ресурсов).

Если писать напрямик, а не в файл, то потом относительно проблемно будет читать такую флеш на ПК.
(т.е. нужен прямой доступ к диску, что трудно получить под Win XP)

В сети гуляет идея делать Пред форматирование (т.е. писать файл, а потом писать/читать уже из него)
но этот аспект нигде не описан.

Предлагаю разработать свою упрощённую файловую систему.
Т.е. на большую часть флешки писать файл данных, а в конце файл разметки.
Почему в конце - начало кластера 0 в FAT от диска к диску плавает,
а последний блок последнего сектора, последнего Кластера всегда в конце флеши.

Прогу по созданию файлов на флешке, я уже нацарапал...
На данном этапе думаю о создании файлового менеджера - по вытаскивании/залитию файлов в образ.

Интересно мнение ALL о данном проекте и предложения о том какие элементы
данных о файле включить и как более оптимально организовать файл разметки...
(если ковырять - то сделать универсально)


--------------------
Сайт с разработками http://www.mindrunway.ru/
Go to the top of the page
 
+Quote Post
DL36
сообщение Sep 7 2007, 12:17
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 460
Регистрация: 5-10-06
Из: Херсон
Пользователь №: 21 006



Цитата(QuickWitted @ Sep 6 2007, 11:12) *
Предлагаю разработать упрощённый аналог FAT для работы микропроцессора с флеш картами.

В современных микропроцессорах нижнего ценового диапазона относительно МАЛО RAM на борту
(У АТMega16 - 1к.б. НА ВСЁ). В связи с этим очень трудно сделать поддержку FAT - на запись.
(Флеш карты могут записывать информацию только БЛОКАМИ по 512байт (1024байт для >1Gb.))
Проще говоря таблицу размещения файлов надо где-то хранить иначе придётся после чтения
каждого кластера читать FAT снова и выяснять какой кластер писать/читать следующим
(на что тратится очень много ресурсов).

1K RAM конечно очень мало, писать не получиться а вот читать можно попробовать. Но потеря будет за счет постоянного обращения к карточке.
Go to the top of the page
 
+Quote Post
QuickWitted
сообщение Sep 9 2007, 18:13
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 322
Регистрация: 21-06-07
Из: СНГ
Пользователь №: 28 596



Цитата(DL36 @ Sep 7 2007, 18:17) *
1K RAM конечно очень мало, писать не получиться

ПИСАТЬ вообще - не проблема...
Писать с учётом фат (без внешнего ОЗУ килика эдак на 2)
теоретически возможно, НО ОЧЕНЬ СЛОЖНО/МЕДЛЕННО

Цитата
а вот читать можно попробовать. Но потеря будет за счет постоянного обращения к карточке.


Вот ссылка на мой анализ/критику "попробованного"
http://pic.forum24.ru/?1-1-0-00000005-000-0-0-1188057694

Более прямого примера (ну хотя бы рабочего примера) по работе с фат (вычисления её параметров) найти мне пока не удалось...

Если кто плавал - поясните...


--------------------
Сайт с разработками http://www.mindrunway.ru/
Go to the top of the page
 
+Quote Post
DL36
сообщение Sep 10 2007, 12:48
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 460
Регистрация: 5-10-06
Из: Херсон
Пользователь №: 21 006



Цитата(QuickWitted @ Sep 9 2007, 21:13) *
ПИСАТЬ вообще - не проблема...


Более прямого примера (ну хотя бы рабочего примера) по работе с фат (вычисления её параметров) найти мне пока не удалось...

Если кто плавал - поясните...


Я сейчас пишу навигацию для FAT32. Уже используется два буфера по 512 байт, в первый читаю сектор, во втором массив структур для меню. Но LCD выводится две колонки по 4 строки (имена файлов) Еще структура с параметрами SD и разделов... еще приблизительно 200 байт. Без меню обойтись конечно можно, но как то неинтересно все это получается. Итого 1.2 к Поэтому и говорю что памяти слегка маловато...
Go to the top of the page
 
+Quote Post
QuickWitted
сообщение Sep 11 2007, 03:42
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 322
Регистрация: 21-06-07
Из: СНГ
Пользователь №: 28 596



Цитата
Более прямого примера (ну хотя бы рабочего примера) по работе с фат (вычисления её параметров) найти мне пока не удалось...


Цитата(DL36 @ Sep 10 2007, 18:48) *
Я сейчас пишу навигацию для FAT32.
.... Поэтому и говорю что памяти слегка маловато...


Я не спорю, но у меня НЕ ПОЛУЧАЕТСЯ вычислить нулевой кластер под FAT16
2 моих примера расчёта с 2 немного отличающимися результатами тут:

http://pic.forum24.ru/?1-1-0-00000005-000-0-0-1188057694

но значение нулевого кластера получается БОЛЬШЕ реального значения
2 кластера (нулевого нет, а как я понял файлы идут со 2, т.е нулевой + зн. из фат)
НО ГЛАВНЫЙ СМЫСЛ В ТОМ, что НА НОСИТЕЛЕ ФАЙЛ НАЧИНАЕТСЯ
РАНЬШЕ ВЫЧИСЛЕННОГО значения НУЛЕВОГО КЛАСТЕРА!!!!


--------------------
Сайт с разработками http://www.mindrunway.ru/
Go to the top of the page
 
+Quote Post
QuickWitted
сообщение Sep 11 2007, 08:38
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 322
Регистрация: 21-06-07
Из: СНГ
Пользователь №: 28 596



Цитата(QuickWitted @ Sep 11 2007, 09:42) *
НО ГЛАВНЫЙ СМЫСЛ В ТОМ, что НА НОСИТЕЛЕ ФАЙЛ НАЧИНАЕТСЯ
РАНЬШЕ ВЫЧИСЛЕННОГО значения НУЛЕВОГО КЛАСТЕРА!!!!


Упс... ошибочка... Теперь сошлось...


--------------------
Сайт с разработками http://www.mindrunway.ru/
Go to the top of the page
 
+Quote Post
alexander55
сообщение Sep 20 2007, 11:41
Сообщение #7


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Цитата(QuickWitted @ Sep 6 2007, 12:12) *
Предлагаю разработать упрощённый аналог FAT для работы микропроцессора с флеш картами.

В современных микропроцессорах нижнего ценового диапазона относительно МАЛО RAM на борту
(У АТMega16 - 1к.б. НА ВСЁ).

Зачем себе создавать трудности, а потом их преодолевать. ATMega64 ненамного дороже, зато проблем нет.
http://elm-chan.org/fsw/ff/00index_e.html
Go to the top of the page
 
+Quote Post
QuickWitted
сообщение Sep 25 2007, 05:09
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 322
Регистрация: 21-06-07
Из: СНГ
Пользователь №: 28 596



Цитата(alexander55 @ Sep 20 2007, 17:41) *
Зачем себе создавать трудности, а потом их преодолевать. ATMega64 ненамного дороже, зато проблем нет.


А юзать как? Там корпус 64-выводной корпус TQFP
И У НАС его в 2 раза дороже 16меги продают...

Проблемы как были, так и остались...

Прогу для разметки нацарапал, кому интерестно - пишите...


--------------------
Сайт с разработками http://www.mindrunway.ru/
Go to the top of the page
 
+Quote Post
Cyber_RAT
сообщение Dec 10 2007, 07:24
Сообщение #9


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

Группа: Свой
Сообщений: 162
Регистрация: 7-12-07
Из: Могилев
Пользователь №: 33 064



Интересно - пишем.
вообщем есть задача - собирать логи на MMC карточку в своем девайсе.
Задача там эта третьей степени важности и выделять половину памяти под поддержку FAT16 расточительно.
Поэтому самого терзают мысли как организовать работу с ММС - или писать напрямую, а в виндах (linux) снимать Образ диска и обрабатывать его потом как файл собственной программкой (по сигнатуре находить начало лога и его длину и читать N-ое колл-во байт) - или делать ФС.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 10 2007, 16:02
Сообщение #10


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Cyber_RAT @ Dec 10 2007, 09:24) *
Поэтому самого терзают мысли как организовать работу с ММС - или писать напрямую, а в виндах (linux) снимать Образ диска и обрабатывать его потом как файл собственной программкой (по сигнатуре находить начало лога и его длину и читать N-ое колл-во байт) - или делать ФС.
А если после разметки создать на ней файл размером со всю флешку? Теоретически он будет линейным, и изменяя его можно вообще не трогать фат.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
QuickWitted
сообщение Jan 8 2008, 09:38
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 322
Регистрация: 21-06-07
Из: СНГ
Пользователь №: 28 596



Цитата(Сергей Борщ @ Dec 10 2007, 22:02) *
А если после разметки создать на ней файл размером со всю флешку?


Так я и сделал в своей программе

Цитата
Теоретически он будет линейным, и изменяя его можно вообще не трогать фат.


Да, но как выяснилось не флэшки одинаково форматированы...

Т.е. мной созданная прошивка определяет начало флэши в 98% случаев.
(для ФАТ16 у карт от 32 до 512 Мб)

А в 2х % флэшу надо отформатировать в винде...

Пару раз встречал несовместимость с 1гб, но они были не мои - разбираться времени небыло...
а в 16 мб и меньше они на фат 12


--------------------
Сайт с разработками http://www.mindrunway.ru/
Go to the top of the page
 
+Quote Post
Cyber_RAT
сообщение Jan 8 2008, 09:49
Сообщение #12


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

Группа: Свой
Сообщений: 162
Регистрация: 7-12-07
Из: Могилев
Пользователь №: 33 064



т.е. 16 мб флешка строго FAT12 ?
вроде как я свою посмотрел она 16 фат пишет... (или это из-за того что я ее под линуксом форматил с указанием ФС)
Go to the top of the page
 
+Quote Post
QuickWitted
сообщение Jan 9 2008, 04:31
Сообщение #13


Местный
***

Группа: Участник
Сообщений: 322
Регистрация: 21-06-07
Из: СНГ
Пользователь №: 28 596



Цитата(Cyber_RAT @ Jan 8 2008, 15:49) *
т.е. 16 мб флешка строго FAT12 ?
(или это из-за того что я ее под линуксом форматил с указанием ФС)


Да...

Ни виндой, ни спец тулзой Hard Disk Low Level Format Tool отформатить под Фат16 у меня не вышло...
(обе жалуются на маленький обьём и форматить в фат16 на отрез отказываются...)

Если кто знает метод форматирования под виндой - киньте сюда...
(у меня есть пару флэшей 16 мб - для читалки книг сойдёт, но отформатировать под фат16 не получается...)


--------------------
Сайт с разработками http://www.mindrunway.ru/
Go to the top of the page
 
+Quote Post
Cyber_RAT
сообщение Jan 11 2008, 12:53
Сообщение #14


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

Группа: Свой
Сообщений: 162
Регистрация: 7-12-07
Из: Могилев
Пользователь №: 33 064



http://www1.mager.org/mkdosfs/
Linux mkdosfs for Windows NT/2K/XP

c:\>mkdosfs -v -F 16 -n volname F: - для форматирования F: в fat16
Go to the top of the page
 
+Quote Post
galjoen
сообщение Jan 11 2008, 14:36
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(QuickWitted @ Jan 9 2008, 07:31) *
Если кто знает метод форматирования под виндой - киньте сюда...
(у меня есть пару флэшей 16 мб - для читалки книг сойдёт, но отформатировать под фат16 не получается...)

1. ПУСК
2. Мой компьютер (правой кнопкой)
3. Управление
4. Управление дисками
5. Выбрать нужный диск по названию, или если не отформатирован по емкости (правой кнопкой по окошечку где имя/размер написаны)
6. Форматировать
7. Размер кластера устанавливаем 512. Тогда всё, что больше 2 Мбайт (т.к. у FAT12 max 0xFFF кластеров м.б. - 4096*512=2097152) FAT16 будет. Если кластер 1024 установить - то начиная с >4 Мбайт и т.д.

А я логи в флешку пишу в предварительно отформатированную, и в файл определённый, уже на неё записанный. А по другому у вас и не получится - если флешка переполнится, что тогда делать??? Файл стирать и новый открывать? Это долго - логи за это время потеряются, а уж в том, что ОЗУ не хватит я уверен. А если в таком случае в начало файла писать по кольцу (FIFO) - преимуществ нету. Всё равно файл разбирать придётся - где у него начало искать.
Я ещё внутренние буфера флешки (у моей их 2 штуки по 1056 байт) как ОЗУ использую. Хотя это м.б. вам и не подойдёт. У меня-то флешка AT45DB642D (8 Мбайт) в само устройство запаяна, а всё это - составное USB устройство: MassStorage + HID. Т.е. флешку вытащить невозможно. Процессор у меня тоже AVR. Хоть и 4 кбайта памяти имеет, но на MassStorage max 600 байт удалось выделить. Других задач очень много. Да и к USB он редко подключается, только если логи считать или перенастроить (задача не основная).
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 03:02
Рейтинг@Mail.ru


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