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

Cвоя FAT для связки MK <=> FLASH

1. ПУСК

Да :(.

format /?

дальше все будет написано.

 

 

 

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

Из истории - FATы прекрасно существовали на персональном компьютере IBM XT, если кто не знает, то это на 8bit 8088 процессере с тактовой частотой 4,7MHz. Трудно найти сейчас контроллер не превосходящий сей компьютер по вычислительной мощи.

Предлагаю НЕ разрабатывать упрощенные аналоги FAT, если речь идет о съемных носителях.

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


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

Может оно конечно и так... и 8bit 8088 фат подерживал (факт), но ОЗУ у него было не 2 кб (или 4 как у некоторых) да и ПЗУ не 32 кб (пусть даже 128)...

Вот и приходится изголяться, ибо ставить туже атмегу 128 ради полной поддержки FAT 16/32 - при том что логи у меня далеко не первичная задача, IMHO бред.

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


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

Из истории - FATы прекрасно существовали на персональном компьютере IBM XT, если кто не знает, то это на 8bit 8088 процессере с тактовой частотой 4,7MHz. Трудно найти сейчас контроллер не превосходящий сей компьютер по вычислительной мощи.

 

И ОЗУ у него было 1кб?

(на правце 8С её было 64кб... Причём 1 Кб на ВСЁ, а не только под буфер)

 

Предлагаю читать ВСЁ, а не по диагонали...

(тогда и поймёшь почему не взяли более мощный процессор...)

 

Предлагаю НЕ разрабатывать упрощенные аналоги FAT, если речь идет о съемных носителях.

 

Угу а как ты планируешь писать на флэшку файлы - результаты замеров?

(файлы переменной ёмкости) при условии мелкого ОЗУ?

 

ОЗУ отдельно припаять?

(кстати ты случаем не подскажещь ДОСТУПНЫЕ, параллельные, СТАТИЧЕСКИЕ ОЗУ ?)

 

Или все-таки написать в СУЩЕСТВУЮЩИЙ файл размером СО ВСЮ ФЛЭШ у казав при этом начало и конец файлов измерений в ОБЩЕМ ФАЙЛЕ?

 

Что проще?

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


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

И ОЗУ у него было 1кб?

А почему выбрали 1Kb? Пока можно еще и меньше найти :), но уже и больше и по цене не переплатить.

Зачем пытаться решить задачу негодными средствами и примитивно? Нет, я не собираюсь Вас переубеждать, я прсто возразил против призыва, типа всем миром разработать экстремально примитивную файловую систему. И в ответ на

Интересно мнение ALL о данном проекте

 

(на правце 8С её было 64кб... Причём 1 Кб на ВСЁ, а не только под буфер)

8С это была другая машинка, но не суть важно, 64Kb было именно на все - в ТОМ ЧИСЛЕ И ПАМЯТЬ ПРОГРАММ, кои грузились в этот-же RAM.

Предлагаю читать ВСЁ, а не по диагонали...

(тогда и поймёшь почему не взяли более мощный процессор...)

Читал. Ну и где причины такого поступка описаны? Или пальцем, что называется покажите, или ....

 

(Флеш карты могут записывать информацию только БЛОКАМИ по 512байт (1024байт для >1Gb.))

Размер блока гигабайтовых карточек не всегда 521байт и переключается и на 512 байтовый.

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


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

ОЗУ отдельно припаять?

(кстати ты случаем не подскажещь ДОСТУПНЫЕ, параллельные, СТАТИЧЕСКИЕ ОЗУ ?)

Вопрос правда не мне адресован, но чем вас не устраивают SRAM с параллельной шиной от Samsung, K6X1008 или K6X4008, например? Мы их давно и успешно применяем в одном из типов наших контроллеров, правда на 80c186, а не AVR.

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


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

ОЗУ отдельно припаять?

Нет, взять контроллер с более, чем 1Kb RAM - явно более надежное и дешовое решение. Поставщков контроллеров масса, производителей тоже немало...

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


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

format /?

дальше все будет написано.

А дальше надо будет dir набрать - чтоб узнать, что форматировать. А флешка-то не отформатирована - её-то в списке и не будет. Тогда, наверное, методом перебора надо будет действовать - форматировать всё подряд A, B, C и т.д.

Уважаемый(ая) zltigo, вам самому-то какой способ больше нравится? А другим участникам форума? Только не подумайте, что я любитель microsoft. Вовсе нет! Сам частенько sudo (уст-ть права админа - в Linux) набираю. Но при этом вовсе не садо себя чувствую, а совсем наоборот - мазо.

Из истории - FATы прекрасно существовали на персональном компьютере IBM XT, если кто не знает, то это на 8bit 8088 процессере с тактовой частотой 4,7MHz. Трудно найти сейчас контроллер не превосходящий сей компьютер по вычислительной мощи.

Предлагаю НЕ разрабатывать упрощенные аналоги FAT, если речь идет о съемных носителях.

Полностью согласен!!!

+1

Ещё вспоминаю PDP-11 (Электроника-60). У неё, в базовой версии, 4 кслова (8 кбайт) ОЗУ было. А файловая система такая упрощённая была (все файлы линейные и т.д.), что загрузчик с дискеты в 32 слова (64 байта) умещался. Всё ПЗУ занимал! Такие ПЗУ тогда были.

Ну и где сейчас та файловая система? И ваша, упрощённая, уважаемый(ая) QuickWitted - там-же будет.

 

Если надо ОЗУ увеличить - хорошо-бы SPI-шное ОЗУ поставить. Знаю, что есть такие. Сам бы поставил, но купить не могу - говорят экзотика. Может кто использует (подскажет где купить)?

А то дошёл до того, что флешку SPI-шную (самую маленькую+дешёвую) ставил, что-бы её буфера как ОЗУ использовать. У AT45DB011 два буфера, по 264 байта каждый.

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


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

А дальше надо будет dir набрать - чтоб узнать, что форматировать.

... дальнейшее поскипано...

Для общего развития - список дисков смотрится отнюдь не перебором dir. Воспользуйтесь diskpart ->

list volume

самому-то какой способ больше нравится?

Командная строка.

частенько sudo (уст-ть права админа - в Linux) набираю.

Для общего развития - это отнюдь не установить права админа. Проконсультируйтесь у сисадмина по поводу разрешенных Вам действий.

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


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

я вот одного не понимаю... ну нужно нескольким человекам упрощенная файловая система... чего все так кинулись ее валить и требовать ее не делать , а строго следовать дао ФАТ.... ? ;) а почему уже тогда не EXT-3 или JFS ? или NTFS давайте наваяем... неубиваймая система будет....

Я вообще ММС себе ставлю только по причине того, что девайс будет единичным и тратить кучу времени на написание полноценной поддержки FAT считаю нецелесообразным... мне единственно от него надо - чтобы карта виделась в картридере с единственным файлом на всю флешь... (и то не для меня, а для пары пользователей.. ибо сам могу и dd-шкой скинуть инфу с ММС себе на винт и обработать).

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


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

Автор темы спросил "мнение ALL", вот все и кинулись...обсуждать, то есть помогать, а не "валить и требовать не делать".

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


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

Самый простой способ:

---------------------------

Перед использованием прописываешь флэш нулями.

 

Контроллер пишет события последоватеьлно от начала к концу.

Формат:

Первый сектор - шапка (например, "START OF LOG", дата, время, параметры...)

Дальше поток данных. (например, "DATA_SECTOR", 0101000001111...)

 

Следующий сектор - опять шапка, итд....

 

В компьютере флэшку открывают как физический диск.

(\\\\.\\PHYSICALDRIVE0)

Программа ищет шапки и показывает список логов.

 

Или под один лог отводиться фиксированное количество места.

Например, 10КБт.

 

Сложный способ:

---------------------

(У АТMega16 - 1к.б. НА ВСЁ). В связи с этим очень трудно сделать поддержку FAT - на запись.

(Флеш карты могут записывать информацию только БЛОКАМИ по 512байт (1024байт для >1Gb.))

Не нужно хранить всю таблицу FAT.

Достаточно хранить 1 сектор = 512 байт.

Если у тебя этого объёма нет, значит ты не можешь работать с картами памяти в режиме модификации.

 

Ещё способ

-------------

Постулировать, что сектор может хранить только 50 байт информации, остальное место забито нулями.

Тогда ты сможешь делать чтение / модификацию / запись !

 

Но совместимую с Windows FAT всё равно сделать не получиться.

Только нечто аналогичное.

На комрьютере понадобиться программа нализатор.

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


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

Прошу подсказку.

Имею FAT32.

Boot Sector:

Цитата

offset        00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

00000000 EB 58 90 4D 53 44 4F 53 35 2E 30 00 02 08 CE 01

00000010 02 00 00 00 00 F8 00 00 3F 00 FF 00 00 00 00 00

00000020 00 80 3C 00 19 0F 00 00 00 00 00 00 02 00 00 00

00000030 01 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00

По этим данным вычислил FAT:

Цитата

offset       00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

00039C00 F8 FF FF 0F FF FF FF FF FF FF FF 0F FF FF FF 0F

00039C10 FF FF FF 0F FF FF FF 0F FF FF FF 0F FF FF FF 0F

00039C20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Root Directoty:

Цитата

offset       00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

00400000 41 46 00 6F 00 6E 00 74 00 2E 00 0F 00 3A 74 00

00400010 78 00 74 00 00 00 FF FF FF FF 00 00 FF FF FF FF

00400020 46 4F 4E 54 20 20 20 20 54 58 54 20 00 5C 69 5D    FONT    TXT �\i]

00400030 85 52 85 52 00 00 6F 5D 85 52 03 00 08 00 00 00    …R…R��o]…R����

00400040 41 4C 00 6F 00 67 00 44 00 00 00 0F 00 49 FF FF

00400050 FF FF FF FF FF FF FF FF FF FF 00 00 FF FF FF FF

По данным из Root Directory и FAT легко находим расположение файла "Font.txt" и прочесть его.

И вот в чём вопрос.

А если нет искомого файла в памяти? Root Directory по спецификации FAT32 не имеет ограничений по размеру.

Как понять что я ищу фал не в Root Dirrectory, а уже в области расположения данных?

Разобрался.

Изменено пользователем forummailandlogin

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


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

1 hour ago, forummailandlogin said:

Root Directory по спецификации FAT32 не имеет ограничений по размеру.

 

Quote

If DIR_Name[0] == 0x00, then the directory entry is free (same as for 0xE5), and there are no
allocated directory entries after this one (all of the DIR_Name[0] bytes in all of the entries after
this one are also set to 0).

Да и цепочка кластеров не бесконечная.

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


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

Не пойдёт такой вариант. Память может быть забита под завязку и Root Directory может просто не быть 0x00. А 0xE5 показывает лишь, что файл удалён. Не более.

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


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

1 hour ago, forummailandlogin said:

Root Directory может просто не быть 0x00

Не может.

 

1 hour ago, forummailandlogin said:

Не пойдёт такой вариант

Других не предусмотрено.

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


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

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

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

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

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

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

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

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

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

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