LINUX.ORG.RU

Народ помогите разобраться с FAT16


0

0

Имею контроллер который может читать блоками по 512 байт(соответственоо записывать)на прямую с MMC катры. А хотелось что бы это выглядело как файл а не набор байтов в блоке. Ни кто не сталкивался как можно реализовать на C, FAT16 имея средства описанные выше? А то не понятно как читать это с обычного писюка.

> имея средства описанные выше

А что именно описано выше? Возможность чтения/записи по 512 байт? Если у тебя только это, и нужна FAT, значит делай поддержку FAT. Как реализовать? Прочитать описание этой ФС и сделать по описанию. Или заюзать уже сделанное другими (например, взять поддержку этой ФС из ядра linux).

> А то не понятно как читать это с обычного писюка.

Как файл. Если ядро поддерживает твой девайс как блочное устройство, то mmap его и работай с байтами. Если оно не блочное, читай его read'ом. В любом случае, ФС на девайсе не обязательна для работы с данными на нем.

И вообще, где у тебя данные лежат, на каком типе носителя? На ММС карте? Если да, то на что она похожа: флэш-карта, диск, ...?

nobody ★★
()
Ответ на: комментарий от nobody

>Или заюзать уже сделанное другими (например, взять поддержку этой ФС из ядра linux).

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

>И вообще, где у тебя данные лежат, на каком типе носителя? На ММС >карте? Если да, то на что она похожа: флэш-карта, диск, ...?

На ММС карте.

Spicinpv
() автор топика
Ответ на: комментарий от Spicinpv

>Но на контроллере не стоит linux, и читать и записывать я могу тока блоками по 512 байт.

Так-с что за контроллер? Да и потом - напиши ему драйвер для работы с фатом (если тебе именно оно и надо)ю - только при чем тут тогда писюк?

Вообщем не понял твоего вопроса.

alphex_kaanoken ★★★
()
Ответ на: комментарий от alphex_kaanoken

>только при чем тут тогда писюк?

писюк для того че бы как раз читать то че контроллер записал

Spicinpv
() автор топика
Ответ на: комментарий от Spicinpv

тогда как ты работаешь с контроллером? шаровый девайс или что - та мвсе проще должно быть тогда - блин - все равно не понимаю сути вопроса - напиши подробней - kaanoken at crew.org.ru

да а что за контроллер - просто имел Я дело с разными контроллерами =)

alphex_kaanoken ★★★
()
Ответ на: комментарий от Spicinpv

Если я правильно все понял, то ситуация у тебя такая: ты пишешь программу для контроллера, которая сбрасывает данные на носитель. Потом носитель вынимается из твоего девайса, вставляется в ПК, и на нем идет обработка этих данных.

Если так, и обработка делается только под linux, то самым простым и дешевым решением будет отказ от какой-либо ФС на носителе. В linux можно сделать

open("/dev/hda", O_RDONLY);

и работать с HDD как с файлом, невзирая на наличие/отсутствие на нем ФС.

Если твои данные предполагается обрабатывать под Windows, все равно проще взять DDK и наваять "драйвер" для работы с твоим девайсом.

Если ты все-таки уперся рогом в необходимость поддержки ФС на контроллере, то смотря что у тебя за контроллер. Тебе нужен буфер под как минимум 1 сектор FAT, т.е. 512 байт ОЗУ. Если оно у тебя есть, то общая логика поддержки FAT ничем не отличается от таковой в linux: с HDD ведь тоже обмен идет блоками по 512 байт, так что можешь позаимствовать поддержку FAT из linux, выкинув оттуда кэширование.

nobody ★★
()
Ответ на: комментарий от nobody

Спасибо за столь подробную инфу а контроллер простой PC-совместимый. типа: I-8811. AMD188 ОЗУ 512k. Flash 512k. MiniOS7.

Spicinpv
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.