Es ist noch nicht ganz fertig (v.a. stehen noch einige Tests an), aber ich möchte trotzdem schon mein Dateisystem unter http://www.roboter.cc/index.php?option=com_nicaiwci&view=project&Itemid=41&projectid=1872 vorstellen. Lizenz ist GPLv3. Das ist v.a. nützlich, wenn man dynamische Daten hat, deren Größen sich ändern - seien es Logdaten, Wegpunktlisten oder auch Interpreterprogramme, man aber keine "große" Lösungen wie SD-Karten etc. verwenden möchte. Gerade die größeren AVRs haben schon recht viel internen Speicher, wo es nur noch an Verwaltung fehlt. Features: * lesen/schreiben/überschreiben/verkleinern/löschen/formatieren * FAT-artig (aber mit wesentlich kleinerem Verwaltungsoverhead für Bootsektor, Dateiverwaltung etc.) * deswegen: Keine Dateinamen, nur Nummern * auf kleine Dateien und Speicher ausgelegt, deswegen (fast) keine Buffer, keine Dateihandles etc. * Zwischen FAT8(tiny) und FAT16 zur Kompilezeit umschaltbar * FAT8: max. 256 Byte Sektoren, max. 256 Sektoren, max. 256 Dateien, max. Datei/Dateisystemgröße von 64 KB * FAT16: max. 2^16 Byte Sektoren, max 2^16 Sektoren, max. 2^16 Dateien, max. Datei/Dateisystemgröße von 4 GB * tiny: 3KB Maschinencode, normal; 4,3KB Maschinencode * "Treiber" für RAM und EEPROM TODO: * Treiber für Flash * Weitere Tests (größere Dateisysteme, truncate etc.) Falls ihr euch über die #ifdef AVR wundert: auf diese Art & Weise kann ich es erstmal leicht nativ auf meinem Notebook testen. Ich hab versucht es möglichst klein zu halten. Für Tipps, Anregungen, Fragen, Hinweise etc. bin ich immer dankbar ;-)
Hört sich sehr gut an, ohne jetzt den Quellcode gesehen zu haben. Eigentlich braucht man ja auch nur eine Datei zur gleichen Zeit. Oder kann das Dateisystem mehrere Dateien gleichzeitig öffnen/beschreiben? Man bräuchte dann ja im Prinzip gar kein Handle.
Das Dateisystem kann mehrere Dateien gleichzeitig bearbeiten, ja. Also gleichzeitig im Sinne von lesen auf Datei 1, danach schreiben auf Datei 2 etc. - während Datei 1 gelesen wird sollte nicht eine ISR o.ä. versuchen Datei 2 zu schreiben. Das Dateisystem dürfte man sogar noch recht einfach threadsafe machen, das Problem sind eher die Treiber fürs eeprom, i2c etc.
Michael F. schrieb: > Also > gleichzeitig im Sinne von lesen auf Datei 1, danach schreiben Diese Definition von gleichzeitig ist mir neu :-) Möchte Deinen Programmierspass ja nicht bremsen aber so recht will sich mir der Sinn Deiner "Treiber" nicht erschließen. Der Verwaltungsaufwand dürfte den Nutzen in den meisten Fällen bei weitem übertreffen. Bei den kleinen AVR Speichergrößen mit wenigen KB... Für größere Speicher auf SD-Karten ja- aber davon war ja ausdrücklich keine Rede. Vielleicht kannst Du den Sinn Deiner immerhin 3-4 KB Code hier noch ein wenig genauer erläutern? Dennis
@gleichzeitig: naja, man muss die Datei nicht erst schließen, wenn man auf eine andere Datei zugreifen will, wie bei einigen anderen Dateisystemen. Das meinte ich mit Gleichzeitigkeit. @Sinn: Naja, man hat halt oft "dynamisch" wachsende Speichersachen, wie Logsachen, Codes zum Interpretieren (siehe Beitrag "AVR: Interpreter für Assemblerartige Sprache"), Textdateien, die man ausgeben möchte, Wegpunktlisten, selbst Konfigurationsdateien wachsen gerne mal zur Laufzeit. Für solche Sachen ist es gedacht. Man könnte es sich auch als Art malloc, wo man den Speicherbereich immer vergrößern kann, vorstellen (Minus, dass man einen Zeiger bekommt, mit dem man direkt arbeiten kann). Naja, die großen AVRs haben schon einiges an Speicher (256 KB Flash, 16 KB RAM, 4 KB EEPROM), außerdem gibt es recht günstige I2C EEPROMs wo einiges reinpasst. Da ist eine halbwegs vernünftige Datenverwaltung schon hilfreich ;-) Ich habe mehr als genug Programm-flash, da fallen die 2,8 KB für die kleine und 4 KBfür die große Fassung nicht weiter auf ;)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.