Implementacja FAT12/16 na uC

Sep 25, 2004 41 Replies

Witam!



Projektuje aktualnie pewne urządzenie. Musze w nim zapewnić dużą ilość pamieci do zapisu danych pomiarowych na przestrzeni wielu dni. Oczywistym wyborem będą jakieś karty Flash (zapewne MMC ze względu na w miarę wygodny interfejs).



Wacham sie aktualnie nad spodobem zapisu danych i mam do wyboru dwie opcje:


  1. Zapis "raw" - ładuje dane pomiarowe bezpośrednio w pamięć flash bajt za bajtem. Zaletą jest oczywoście prostota. Wadą jest kłopot z odczytem poza urządzeniem.


  1. Zapis filesystemem. Zakładając że docelowo karta będzie czytana w Win należało by chyba zmontować filesystem na jakiejś odmianie FAT. I tu jest problem - muszę po pierwsze ją napisać lub znaleźć gotową. Niestety aplikacja jest komercyjna wiec automatycznie odpada mi GPL i szukam czegoś na LGPL/podobnej. Ponadto ostatnio M$ zaczyna się upominać o opłaty licencyjne ...



W zasadzie system plików FAT byłby mi tylko potrzebny do jednego - łatwości przerzucania do win danych pomiarowych. Jednak zastanawia mnie, czy mozna w windowsie w sposób wygodny czytać taką kartę bajt po bajcie / sektor po sektorze. Jeśli by się dało, to implementacja systemu plików okazała by się niepotrzebna.



A może jakiś inny filesystem pozbawiony licencji M$ i łatwy w implementacji ? (i czytający się pod Win ... - tylko nie Joilet/ISO :)



Potrzebuje zapisywać około paru MB danych w jednym pliku ze stałym skokiem między kolejnymi wpisami (choć nie będącym wielokrotnością 2^x bajtów ...).



Pozdrawiam.


Użytkownik Sebastian Bialy napisał:

(...)

Trzeba by napisać sterownik dla systemy Windows do takiego użądzenia i nie musisz się bawić z systemem plików FAT a którmy najwiecej informacji znajdziesz na stronach projektów odtwarzaczy MP#.

Zdecydowany problem, bo jak to odczytac .. pod roznymi systemami ?

Masz jeszcze mozliwosc posrednia - niby FAT, ale ograniczasz sie do jednego pliku. Po wsadzeniu karty mozesz ja "zaformatowac" wpisujac dane od boot rekordu, przez FAT z sekwencja 2,3,4,... po katalog z jednym plikiem .. a potem tylko wpisujesz dane do kolejnych sektorow, a na koniec dlugosc pliku.

W Polsce nie ma podstaw. W UE prawdopodobnie tez nie. W Rosji i okolicach tez chyba nie.

A czemu nie ? Tylko czy driver to udostepni windowsowi jako dysk ?

J.

Sebastian Bialy napisał(a):

a moze jakis linuksowy system? dokladniej jest poopisywany...

ewentualnie w yamp'ie chyba jest zaimplementowane fat??? bo przeciez jakos te mp3 sa odczytywane i zapisywane na nosnik:)

[.....]

W UE również nie ma patentów na algorytmy/oprogramowanie aczkolwiek to może ulec zmianie. Chociaż IMO obecny stan zostanie utrzymany.

Ja w każdym bądź razie do Stanów się nie wybieram ze względu na kawałek kodu który parę lat temu opublikowałem. :-)

Regards, /J.D.

Czy widziałeś kiedyś przykład sterownika bajt po bajcie/sektor po sektorze dla win ? Tzn interesuje mnie czy w ogóle jest potrzebny taki sterownik do windowsa, wydaje mi się, że majac odpowiednie prawa każdy program powinien dać radę majstrowac po sektorach każdego dysku.

Pod _innymi_ niż windows zapewne bym się w ogóle nie zastanawiał. Wszystko pochodne od unixa ma to rozwiązane w sposób oczywisty i jasny - jako pliki w /dev.

Hmm na razie nie ma podstaw. Obawiam się co się stanie, gdy podstawy się pojawią. Z resztą nie mogę wykluczyć rynku US tak od razu.

Hmm no własnie ... ;) Licze na to że ISO nie jest objęty jakimś idiotycznym patentem ale z drugiej strony robienie z MMC CD-ROMa jest lekkim przegięciem ...

Gdybym robił dla siebie nie było by kłopotu. Ale ja to robie dla ludzi, którzy Linuxa na oczy nie widzieli. Musi być czytalny w win. A to chyba ogranicza mnie do FAT,ISO,NTFS (to dopiero byłby kłopot).

Implementacja w yampie jest na licencji GPL. A ja nie mogę z niej skorzystać. Musiałbym mieć LGPL.

Jesli mozesz karte podlaczyc poprzez jakis interfejs - np. RS232(wolny) lub lpt to z odczytem raw nie bedziesz mial zadnych problemow. Wada - koniecznosc konstrukcji interfejsu MMC<->port.

Zobacz tak jak ci radzono yamppa, ew. przejrzyj sterowniki FAT do linuxa. To, ze sa na GPLu nie implikuje, ze korzystajacy z nich soft musi byc na GPLu (mowiac zartobliwie GPL nie jest zarazliwe). Po prostu jesli je zmodyfikujesz to musisz je udostepnic w postaci zrodlowej, natomiast reszta programu moze byc closed source.

Windows nie obsluguje za wiele systemow plikow:( Zakladam, ze NTFS cie nie interesuje ;)

Swoja droga ciekawe - patenty maja ~15lat, msdos jest starszy :-)

No, to nie jest takie pewne. Modemowy standard V.34 zawieral patentow cos kilkanascie, z roznych firm.

A czemu ?

J.

Coś czuje, że czeka mnie dłubanie w google. Ale znając życie i tak nie znajdę firmy z jakiegoś zadupia US która ma patent na 8 bitów w bajcie :/

Zawsze twierdziłem, że patenty utrudniają postęp ;)

Ciekawy jestem jak zareaguje windows widząc "nie cd" z filesystemem cd. Muszę zrobić jakiś eksperyment, typu partycja z filesystemem ISO i czy windows ją zobaczy. O ile w ogóle ISO można wrzucić na zwykłą partycję. No i ISO chyba jest dośc kłopotliwy w zapisie, to chyba było projektowane jako tylko do odczytu ?

Wydaje mi sie ze MS ma patent na FAT 32, albo na dlugie nazwy w facie..

Pewnie nie. Ale czy nie da sie zadeklarowac tego urzadzenia jako "cd" ? nagrywarki usb istnieja..

Tak mi sie cos kojarzy ze tam po prostu kazdy plik musi zajmowac ciagly obszar. Co utrudnia/uniemozliwia skasowanie jednego pliku z wielu i zapisanie nastepnego. Ale w twoim przypadku to nie powinien byc problem. No i obszar "katalogu" - chyba zawsze ~20MB, duze marnotrawstwo.

Natomiast .. wydaje mi sie ze kiedys widzialem jakis w miare "normalny" filesystem na CD-RW, bodajze 512MB zostawalo ..

J.

A nie mozesz sobie zrobic transmisji po USB z wykorzystaniem standardowej klasy Mass Storage Bulk Transport? Wtedy bedziesz widzia³ swoje zasoby na kazdym win(>95 ) jako np. plik, czy kilka plików.

Mister

On Behalf Of Mister

Na WinNT4 też?

pzdr Artur

Użytkownik Sebastian Bialy napisał:

Niestety bez pisania sterownika się nie obejdzie (tylko aplikacja tego typu ma bezpośredni dostęp do sprzętu), chodź ten sterownik będzie znacznie łatwiej napisać jeśli będzie do pośderniczenia sprzęt<->program obrabiający dane z karty. Bardziej złożonym wariantem będzie napisanie sterownika który pozwoli na dostęp do karty jak do napędu.

Urządzenie musi pracować bez komputera. Zupełnie autonomicznie przez pare dni.

U¿ytkownik "Maksymilian Dutka" snipped-for-privacy@usunonet.pl napisa³:

Fanzolisz wa¶æ g³upoty, ¿e siê tak delikatnie wyra¿ê. Przy u¿yciu standardowych funkcji WinAPI (CreateFile, ReadFile, WriteFile, itd) mo¿na bez ¿adnego problemu czytaæ i pisaæ poszczególne sektory. Poczytaj opis CreateFile w MSDN.

Darek ¯o³na

U¿ytkownik "Sebastian Bialy" snipped-for-privacy@poczta.onet.pl> napisa³:

Z opisu CreateFile:

"Windows NT/2000: You can use the CreateFile function to open a disk drive or a partition on a disk drive. The function returns a handle to the disk device; that handle can be used with the DeviceIOControl function."

Darek ¯o³na

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required