FAT16 Dateisystem für Compact Flash auf AVR

F

Fuchs Michael

Guest
Hallo Group!

Für meine Diplomarbeit hab ich vor Messdaten auf Compact Flash zu speichern
damit man diese am PC wieder auslesen und weiterverarbeiten kann. Nun bin
ich auf der Suche nach einem C-Code der das Fat16 Dateisystem auf meiner CF
Karte beherscht. Es sollte möglich sein, dass man Datein erstellen,
schreiben und ggf. lesen und löschen kann. Das ganze soll dann auf einem
ATmega128 laufen. Ganz ideal wäre natürlich wenn die Ansteuerung für CF
gleich intergriert wäre, ist aber nicht nötig.
Diverse Suchen im Netz haben leider nichts passendes ergeben oder Quellcode
war nicht veröffentlicht.

Danke schon mal im Voraus

MFG
Fuchs Michael
 
Hi!

such mal nach mp3-playern. z.b yampp .Da findest du sowas am ehesten. Es
gibt auch die Möglichkeit eine große Datei auf der CF-Karte zu erstellen,
den Anfangssektor über den Rechner rauszufinden und von dem aus einfach
sektorweise linear auf die Karte zu schreiben. Das ist vieleicht einfacher
als ein Dateisystem zu integrieren.

mfg
Jan
 
Hallo,

Fuchs Michael schrieb:

Für meine Diplomarbeit hab ich vor Messdaten auf Compact Flash zu speichern
damit man diese am PC wieder auslesen und weiterverarbeiten kann.
Ist das Dateiformat vorgegeben oder kannst Du Dir selber was ausdenken?
In letzterem Fall wäre vermutlich die einfachste Idee, mit dem PC eine
die ganze CF-Karte ausfüllende, mit Nullen gefüllte Datei anzulegen.
Dann kann Dein uC-Programm einfach an der richtigen Stelle beginnend auf
die Karte schreiben und braucht sich nicht um das Dateisystem zu
kümmern. Die Daten befinden sich dann beim Auslesen halt an Stelle der
Nullen in der zuvor angelegten Datei.

CU Christian
--
Christian Zietz - CHZ-Soft - czietz (at) gmx.net
WWW: http://chzsoft.com.ar/ - Fido: Christian Zietz@2:2437/74.9
PGP-Key auf Anfrage oder ueber http://wwwkeys.de.pgp.net (Port 11371)
 
Hallo Group

Die Variante mit einer Datei die so groß wie die Karte ist und nur Nullen
enthällt, hab ich auch schon ins Auge gefasst. Nur ist es so, dass unser
Projekt ein Messpedal ist das am Tag öfter eingesetzt wird. Dieses Pedal ist
für einen Sportarzt und der soll die Auswertung auch bedienen können, die
Karte löschen und dann wieder in den Datenschreiber einsetzen und es wieder
einsetzten können.
Also soll das ganze ziemlich Benutzerfreundlich sein. Und das einfachste ist
wenn die Datei über Windows geöffnet, bearbeitet und auch wieder gelöscht
werden kann. Weiters kommen auf die Karte mehrere verschiedene Datensätze
drauf (je nachdem wie oft das Pedal verwendet wird ohne die Karte zu
löschen).
Bei den diversen MP3 Projekten im Internet bekommt man großteils nur den
Teil zum auslesen von CF Karten, jedoch fehlt der Teil zum Schreiben von
Daten.
Ich hoffe mein Problem ist jetzt etwas klarer.

MFG
Fuchs Michael


"Fuchs Michael" <fuxi1@gmx.at> schrieb im Newsbeitrag
news:4040af03$0$13188$91cee783@newsreader02.highway.telekom.at...
Hallo Group!

Für meine Diplomarbeit hab ich vor Messdaten auf Compact Flash zu
speichern
damit man diese am PC wieder auslesen und weiterverarbeiten kann. Nun bin
ich auf der Suche nach einem C-Code der das Fat16 Dateisystem auf meiner
CF
Karte beherscht. Es sollte möglich sein, dass man Datein erstellen,
schreiben und ggf. lesen und löschen kann. Das ganze soll dann auf einem
ATmega128 laufen. Ganz ideal wäre natürlich wenn die Ansteuerung für CF
gleich intergriert wäre, ist aber nicht nötig.
Diverse Suchen im Netz haben leider nichts passendes ergeben oder
Quellcode
war nicht veröffentlicht.

Danke schon mal im Voraus

MFG
Fuchs Michael
 
Fuchs Michael <fuxi1@gmx.at> schrieb im Beitrag <4040af03$0$13188$91cee783@newsreader02.highway.telekom.at>...
Für meine Diplomarbeit hab ich vor Messdaten auf Compact Flash zu speichern
damit man diese am PC wieder auslesen und weiterverarbeiten kann. Nun bin
ich auf der Suche nach einem C-Code der das Fat16 Dateisystem auf meiner CF
Karte beherscht. Es sollte möglich sein, dass man Datein erstellen,
schreiben und ggf. lesen und löschen kann. Das ganze soll dann auf einem
ATmega128 laufen. Ganz ideal wäre natürlich wenn die Ansteuerung für CF
gleich intergriert wäre, ist aber nicht nötig.
Na ja, das ist das woraus DOS zum wesentlichen besteht.
Nimm halt ein Open Source DOS in der dir angenehmen
Programmiersprache, z.B. DOS-C, und aendere es auf Flash
ab.
Du dachtest das waere einfacher ? LOL.
--
Manfred Winterhoff, reply-to invalid, use mawin at despammed.com
homepage: http://www.geocities.com/mwinterhoff/
de.sci.electronics FAQ: http://dse-faq.elektronik-kompendium.de/
Read 'Art of Electronics' Horowitz/Hill before you ask.
Lese 'Hohe Schule der Elektronik 1+2' bevor du fragst.
 
Fuchs Michael schrieb:

Also soll das ganze ziemlich Benutzerfreundlich sein.
Also ich benutze hier Windows, aber von freundlich sehe ich ehr wenig.


Und das einfachste ist
wenn die Datei über Windows geöffnet, bearbeitet und auch wieder gelöscht
werden kann. Weiters kommen auf die Karte mehrere verschiedene Datensätze
drauf (je nachdem wie oft das Pedal verwendet wird ohne die Karte zu
löschen).
Wenn du dich auf das Rootdirectory und kurze Dateinamen (8.3)
beschränkst ist das gar nicht so kompliziert. Schau dir den Aufbau des
FAT-Dateisystems halt mal an.


Gruß Dieter
 
C-Code der das Fat16 Dateisystem auf meiner CF Karte
googlen in newsgroup comp.arch.embedded nach FAT12 oder
FAT16: Frage taucht häufiger auf.
Stichwort "FAT12 Dunfield" sollte dort wohl thread geben
der Links zu Variante für FAT12 hat.
Ich vermute aber (immer) selber schreiben ist einfacher
als anderer Leute undokumentieren "kostenlosen" Code
debuggen.
Ich werkle hier auch an sowas ( aber in FORTH und
an Bus eines Mitsubishi-6502 hängend ).
Man kommt wohl von 4 MB bis weit über 32 MB Karten mit
FAT16 hin, aber das Gerät sollte die Karte wohl
selber formatieren. Dann kann man vermutlich auch
Partitions, Directories vermeiden.
Bei Einchip-Controllern bin ich wegen des RAMs
skeptisch, einige kByte wären schon wünschenswert,
da ein "Cache" für mehrere Sektor im RAM der auch Teile
der FAT hält den Ablauf vereinfacht. "Moderne" Controller
könnten am Bus wegen Zugriffszeit Probleme haben: 150nsec
sind für 2,5 MHz 6502 schon fast zu langsam.
Ich würde auch an Ports wegen ESD externe 74HCxx-Treiber
zwischenschalten.
Ausser den newsgroup-diskussionen die ich nach
editeren & ausdruck wieder gelöscht habe, habe ich
die übrigen im www zu finden specs zu CF & FAT hier
noch auf Platte. Kann sie bei Bedarf auf CD kopieren
und verschicken. Enthält u.A. Kapitel aus altem Buch das
FAT12/FAT16 nach Stand DOS 2.x erläutert, das wäre die
Minimalversion.

MfG JRD
 
"Fuchs Michael" <fuxi1@gmx.at> schrieb:

Für meine Diplomarbeit hab ich vor Messdaten auf Compact Flash zu speichern
damit man diese am PC wieder auslesen und weiterverarbeiten kann. Nun bin
ich auf der Suche nach einem C-Code der das Fat16 Dateisystem auf meiner CF
Karte beherscht. Es sollte möglich sein, dass man Datein erstellen,
schreiben und ggf. lesen und löschen kann. Das ganze soll dann auf einem
ATmega128 laufen. Ganz ideal wäre natürlich wenn die Ansteuerung für CF
gleich intergriert wäre, ist aber nicht nötig.
Wie wär's denn mit Linux? Wirst wahrscheinlich trotzdem noch 'ne Menge
anpassen müssen aber musst nicht bei Null anfangen.
Google ["embedded linux" fat16 sourcecode] fördert so einiges zutage.

Hajü
 
Hans J. Ude <hajue.ude@arcor.de> schrieb:

fördert so einiges zutage.
Alternativ dazu ist vielleicht auch Google [atmel avr "cf card"]
interessant. Gleich der erste Eintrag.

Hajü
 
Mahlzeit,

Fuchs Michael schrieb:
Hallo Group

Die Variante mit einer Datei die so groß wie die Karte ist und nur Nullen
enthällt, hab ich auch schon ins Auge gefasst.
Und das ist auch gut so (auch wenn es nicht unbedingt Nullen sein müssen).

Nur ist es so, dass unser
Projekt ein Messpedal ist das am Tag öfter eingesetzt wird. Dieses Pedal ist
für einen Sportarzt und der soll die Auswertung auch bedienen können, die
Karte löschen und dann wieder in den Datenschreiber einsetzen und es wieder
einsetzten können.
Die "Auswertung" kann doch nur ein sowieso für diesen Spezielfall zu schreibendes
Programm sein (oder eine programmierbare Anwendung).
Also ist es doch am einfachsten den ganzen Verwaltungskram dem PC
aufzubürden (bis auf das unbedingt Notwendige für den Datenträger am ľC).

Selbst wenn man von Hand die eine Datei auf den PC kopiert und dann mit einer
vorbereiteten "LeerDatei" überschreibt ist der Aufwand denkbar klein.
Das kann man auch hinter einem Button in einem Excel-sheet verstecken.

Also soll das ganze ziemlich Benutzerfreundlich sein. Und das einfachste ist
wenn die Datei über Windows geöffnet, bearbeitet und auch wieder gelöscht
werden kann.
Ja, aber wieso sollte ein Controller mit seinen beschränkten Resourcen dem PC
mit seinen zu 99,9% un- (oder unsinnig) genutzten Resourcen das Leben noch leichter
machen?
Vergiss das mit der FAT-implementierung im ľC, denk Dir lieber eine relativ
failsave und flotte eigene Datenstruktur (Eigen-FAT-in der Datei-in der FAT) aus
und lass den PC die Daten nachher rauspulen.
Verschafft einem auch die Befriedigung eine Diplomarbeit mit wesentlichen
Eigenanteilen hinzulegen, anstatt von angepassten Fremd-Code-Fragmenten
zu leben. Die bekommt man eh nur ordentlich zusammen wenn man sie zu 90%
verstanden hat. Das kann aber länger dauern als sich hinzusetzen und den
Kram selbst zu schreiben.

Weiters kommen auf die Karte mehrere verschiedene Datensätze
drauf (je nachdem wie oft das Pedal verwendet wird ohne die Karte zu
löschen).
Ja und, wieso braucht man dafür die für diesen einfachen Fall vollkommen
überzogene Datenstruktur einer FAT?
Wenn Du einmal den Dateianfang (der einzigen, unfragmentierten) aus einer
existierenden FAT bestimmt hast, ab dort Deine eigene Sektorbelegung (z.B. als
Bitmap) gelesen hast, kannst du mit der niedrigst möglichen Verwaltungseinheit
(einer phys. (Sektor-)Adresse des Flash) weitermachen.
Ab diesem Punkt schreibst Du halt deine eigenen Datensätze datenträgermässig linear
weg, wozu sollte man dazu die Verwaltungseinheit "Datei" brauchen?
Du musst eh davon ausgehen das der Doc keine Ahnung hat, was eine "Datei" in
Wirklichkeit ist.

Ich kenne zwar den CF-Standard nicht, aber auch da sollte sowas möglich sein.
Ich hoffe mal, die Teile haben eine interne, transparente Bad-Sector-Verwaltung,
ansonsten hast Du schon allein damit genug zu tun.

Bei den diversen MP3 Projekten im Internet bekommt man großteils nur den
Teil zum auslesen von CF Karten, jedoch fehlt der Teil zum Schreiben von
Daten.
Brauchen die Teile ja auch nicht und es ist wohl auch kaum wirklich ordentlich
in einem ľC zu implementieren. Denk doch nur mal daran was alles nötig wäre um eine
Datei fragmentiert in irgendwelche Lücken zu schreiben, bis das Dein ľC
ausklamüsert hat, sind Deine Messdaten vergammelt.
Oder solche lustigen Sachen wie "verlorene Sektoren", "Kreuz und Querverbundene Dateien"
und was da sonst noch so lauert, für diesen Scheiss existiert Megabyteweise Code von M$,
allein um solchen Kram zu entdecken hätte Dein Controller wohl länger zu tun, wenn Du den
nötigen Code überhaupt reinbekommst.

Jörg.
 
Joerg Schneide <JSchneide@t-online.de> schrieb:

Fuchs Michael schrieb:

Also soll das ganze ziemlich Benutzerfreundlich sein. Und das einfachste ist
wenn die Datei über Windows geöffnet, bearbeitet und auch wieder gelöscht
werden kann.

Ja, aber wieso sollte ein Controller mit seinen beschränkten Resourcen dem PC
mit seinen zu 99,9% un- (oder unsinnig) genutzten Resourcen das Leben noch leichter
machen?
Weil man mit einem Dateisystem, wenn erst einmal implementiert ist,
viel flexibeler ist. Jeder weiss, dass jede Software im Laufe der Zeit
geändert und erweitert wird. Kunde kommt an mit "kann man nicht noch
dies ...? Man könnte doch vielleicht ..."

Vergiss das mit der FAT-implementierung im ľC, denk Dir lieber eine relativ
failsave und flotte eigene Datenstruktur (Eigen-FAT-in der Datei-in der FAT) aus
und lass den PC die Daten nachher rauspulen.
Warum? Jede Digicam und jeder MP3 Stick kann das. Und der notwendige
Code ist doch vorhanden. Man muss nicht das Rad neu erfinden. Und
irgenwann kommt das nächste Projekt. Dann brauchst Du dein FAT16 nur
aus dem Hut zu ziehen.

Verschafft einem auch die Befriedigung eine Diplomarbeit mit wesentlichen
Eigenanteilen hinzulegen, anstatt von angepassten Fremd-Code-Fragmenten
zu leben. Die bekommt man eh nur ordentlich zusammen wenn man sie zu 90%
verstanden hat. Das kann aber länger dauern als sich hinzusetzen und den
Kram selbst zu schreiben.
Ja, aber verstehen musst Du es nur einmal. Danach kannst Du es einfach
nur benutzen. Musst nicht an einem eigenen "dateisystem" rummurksen,
wenn etwas auf Applikationsebene geändert werden soll. Außerdem sind
intelligente Peripheriegeräte doch viel schicker. Besonders wenn sie
weit verbreitete Standards unterstützen.

Hajü
 
Joerg Schneide schrieb:
Brauchen die Teile ja auch nicht und es ist wohl auch kaum wirklich ordentlich
in einem ľC zu implementieren. Denk doch nur mal daran was alles nötig wäre um eine
Datei fragmentiert in irgendwelche Lücken zu schreiben, bis das Dein ľC
ausklamüsert hat, sind Deine Messdaten vergammelt.
Oder solche lustigen Sachen wie "verlorene Sektoren", "Kreuz und Querverbundene Dateien"
und was da sonst noch so lauert, für diesen Scheiss existiert Megabyteweise Code von M$,
allein um solchen Kram zu entdecken hätte Dein Controller wohl länger zu tun, wenn Du den
nötigen Code überhaupt reinbekommst.

Sollten solche Probleme wirklich auftreten, dann kannst die Karte ja in
den PC Stecken und Scandisk starten - aber nur wenn du ein PC
Filesystem, zB FAT16 verwendest.

Martin
 
Joerg Schneide schrieb:
Brauchen die Teile ja auch nicht und es ist wohl auch kaum wirklich
ordentlich
in einem ľC zu implementieren. [......]

und was da sonst noch so lauert, für diesen Scheiss existiert
Megabyteweise Code von M$,
allein um solchen Kram zu entdecken hätte Dein Controller wohl länger zu
tun, wenn Du den nötigen Code überhaupt reinbekommst.
In grauer Vorzeit schaffte es selbst Microsoft den benötigten Code in
wenigen 10 Kilobyte unterzubringen. Nannte sich DOS und war bis vor
kurzem die Basis für ein Grafikadventure namens Windows. Bestätigten
Gerüchten zufolge soll Billy die wesentlichen Teile von DOS allerdings
für kleines Geld eingekauft haben.

Eine DOS-Maschine aus den frühen 80ern des letzten Jahrhunderts war
einem mäßig modernem ľC von heute in nahezu jeder Hinsicht weit unterlegen.

Wer es noch handlicher mag möchte mal nach CP/M googeln...

Gruß

Uwe
 
Uwe Bredemeier schrieb:

In grauer Vorzeit schaffte es selbst Microsoft den benötigten Code in
wenigen 10 Kilobyte unterzubringen. Nannte sich DOS und war bis vor
kurzem die Basis für ein Grafikadventure namens Windows. Bestätigten
Gerüchten zufolge soll Billy die wesentlichen Teile von DOS allerdings
für kleines Geld eingekauft haben.

Eine DOS-Maschine aus den frühen 80ern des letzten Jahrhunderts war
einem mäßig modernem ľC von heute in nahezu jeder Hinsicht weit unterlegen.
Fast. Wenn man mal vom RAM absieht. Das ist der eigentliche Knackpunkt.
Allemale, wenn man FAT schreiben will.

- Carsten

--
Audio Visual Systems fon: +49 (0)2234 601886
Carsten Kurz fax: +49 (0)2234 601887
Von-Werth-Straße 111 email: audiovisual@t-online.de
50259 Pulheim / Germany WGS84:N50°57'50.2" E06°47'28.5"
 

Welcome to EDABoard.com

Sponsor

Back
Top