uC & Fat16 Filesystem

Hallole,

ich bin gerade auf der Suche nach einem Treiber im Sourcecode, damit ich auf nem uC ein Fat16 Filesystem einrichten kann, d.h. Dateien ins Flash schreiben und von der Applikation darauf zugreifen.

Kennt jemand von euch Quellen im Netz?

tschaule & Danke Martin

Reply to
Martin Kaul
Loading thread data ...

Klick dich mal durch die Links in der dse FAQ

formatting link
Punkt F.7.6. (Massenspeicher an Mikrocontrollern) durch.

Tschüss Martin L.

Reply to
Martin Laabs

Martin Kaul schrieb im Beitrag ...

Na ja, in welcher Programmiersprache denn ? Und welches Interface auf Applikationsseite ? DOS-kompatible Interrupts oder C-Library kompatible Funktionen wie open/fopen ? Es gibt ein freies DOS-C, also ein DOS in C, und DOS besteht zum wesentlichen Teil bloss aus der FAT-Verwaltung. War aber nicht ganz fehlerfrei. Unter

formatting link
zu holen. Es gibt auch andere. DR-DOS/Novell-DOS ist in 8086 Assembler.

--
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.
Reply to
MaWin

...

C als Programmiersprache und C-Library Funktionen. Wir möchten auf dem uC einen Webserver portieren - Um die einzelnen HTML-Seiten im Flash zu speichern brauch ich halt ein Filesystem. Es muss nicht unbedingt Fat16 sein, ich dachte nur, dass Fat16 nicht kompliziert ist und es deshalb irgendwo Treiber für uC gibt...

tschaule Martin

Reply to
Martin Kaul

FAQ hab ich schon angeschaut. Ich will keinen Massenspeicher an den yC anschliesen. Ich möchte ein Filesystem im internen Flash nachbilden, d.h. bestimmte Bereiche im Flash sind nicht Programmcode sondern Dateien, Verzeichnisse usw. Innerhalb meiner Application möchte ich dann mit open(), read(), write() usw. auf die Dateien zugreifen.

tschaule Martin

Reply to
Martin Kaul

Hi!

einfach einen "Treiber" gibt es nicht. Nur eine Menge private (zum Grossteil Alpha/Beta) Implementierungen. Der Grund warum jeder FAT verwendet liegt darin, den Massenspeicher direkt über Windows mit Daten füllen zu können. In deinem Fall ist FAT wohl overkill und es ist wahrscheinlich einfacher selber eine einfache Dateierwaltung zu schreiben. Deine fwrite, fread funktionen kannst du dir dann auch nach eigenem Belieben definieren.

mfg Jan

Reply to
Jan Stumpf

LOL. Es gibt im www ein pdf "FAT: General Overview of On-Disk Format" das beschreibt was Microsoft meint was FAT12/16 ist. Ich vermute wenn man sich selber was ausdenkt kanns nur besser werden. Es gibt gute Gründe für eine CF-Karte auch wenn man sie fest einbaut. Man hat dann 512 Byte die über LBA-Format linear addressierbar sind. Für defekte ist der Controller in der CF-Karte zuständig. Selbst wenns auf ein einzelnes 29Fxxx-IC passen würde: der kann aber beim Schreiben keine einzelnen 512 Byte Blöcke löschen.

MfG JRD

Reply to
Rafael Deliano

Naja. Ich meinte bei einem oder zwei der Projekte auch eine Unterstützung für FAT gesehen zu haben. Aber FAT16 ist fies. Ich wollte mal 16 in einem userland Progamm implementieren und habe dann lieber gleich 32 genommen.

Tschüss Martin L.

Reply to
Martin Laabs

Hallo, siehe älterem Beitrag

--> "Betrifft:FAT16 Dateisystem für Compact Flash auf AVR" vom

28.02.2004 in dieser Group. Für Ansteuerung der Sector-Ebene bzw. dem IDE-Interface gibt´s einige Beispiele (PIC
formatting link
asm-code).

Ich gehe davon aus daß es um eine CF Karte handelt -- oder?

viele grüsse hansjoerg

...

Reply to
h.rietsche

Dann ist FAT ohnehin nicht erste Wahl. Schau dich mal im (embedded) Linux-Lager um, da gibts spezielle Filesysteme für Flash-Speicher.

XL

Reply to
Axel Schwenke

Na das ist doch super-einfach und laesst sich mit 1-2 Bildschirmseiten Programm erledigen.

Definier Dir eine File-Header Struktur in der Du Dateiname, Groesse und ggf weitere Attribute wie Datum eintraegst. Die legst Du dann zusammen mit dem Filebody im Flash ab, ein File hinter dem anderen. Definiere Dir eine File-Handle Struktur in der Du Startaddresse im Flash, und aktuellen Offset vermerkst. Fuer jedes Open() fuellst Du dann eine solche Struktur im RAM mit den richtigen Werten aus. Read() sucht dann einfach nur die richtige Adresse raus und macht dann ein memcpy(). Write() gibt einen Fehler zurueck (ist ja das interne CODE-Flash). Das ist dann schon alles.

Marc

Reply to
jetmarc

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.