FAT für SD

Gast #445496
Lesenswert?

Hallo zusammen,
möchte gerne auf einer SD-Karte ein Fat16/32 dateisystem aufziehen. War 
schon auf Ulrich Radigs seite. Benutze leider einen PIC16F877a 
Controller. Hat jemand da schon was fertiges, mir kommts vor allem auf 
die Schreibfunktion an und nicht aufs lesen.
Danke im vorraus
Gruss
Uli
Gast #445540
Lesenswert?

Hi,

das hier:
http://elm-chan.org/fsw/ff/00index_e.html
ist eigentlich gar nicht schlecht, nur mit der Schreibfunktion hab ich 
so meine Probleme (gehabt). Irgendwo ist da ein Sektor-Offset falsch... 
Hab an irgendeiner Stelle im Quellcode "+32" eingefügt, seitdem geht es, 
hab das aber leider nicht hier und kann dementsprechend nicht 
nachschauen, wo das war.
Wollte das nochmal genauer untersuchen, aber mir fehlt die Zeit...

Gruß,
Christian
Gast #445574
Lesenswert?

>Hab an irgendeiner Stelle im Quellcode "+32" eingefügt, seitdem geht es,
>hab das aber leider nicht hier und kann dementsprechend nicht
>nachschauen, wo das war.
>Wollte das nochmal genauer untersuchen, aber mir fehlt die Zeit...
klingt als wenn du eine SD mit Partitionssektor hast, diese aber vorher 
als Superfloppy angesprochen hast
Gast #445653
Lesenswert?

Hi Wolfram,

ist schon ein paar Tage her, das ich das gemacht habe, und ich habe 
leider von FAT nicht so wahnsinnig viel Ahnung. Auf jeden Fall habe ich 
mit einigen unterschiedlichen Einstellungen bei Partitionierung und 
Formatierung herumgespielt, alles hat nichts genutzt. Soweit ich mich 
erinnern kann:

- mkdosfs /dev/sda (d.h. den ganzen Datenträger ohne Partionstabelle 
formatiert)
 -> mounten war nicht möglich

- mkdosfs /dev/sda1
  -> Datenträger ließ sich normal ansprechen etc., aber mittels 
Controller darauf schreiben ging nicht
     (D.h. die Dateien wurden schon angelegt und waren auch sichtbar, 
jedoch haben sie nicht den geschriebenen Text sondern nur Leerzeichen 
angezeigt. Mit "hexdump /dev/sda(1)" habe ich dann herausgefunden, daß 
die Daten schon geschrieben wurden, nur halt mit falschen Offset... Seit 
ich dann die genannte "Korrektur" durchgeführt habe, funktioniert es 
eigentlich ganz ok...)

Die FAT-Implementierung von elmchan.org bietet jedenfalls keine 
Einstellmöglichkeiten für derlei Sachen, demnach sollte das eigentlich 
automatisch erkannt werden. Ich hab den Code zwar mal überflogen, um den 
jedoch vollends zu verstehen, müßte ich mich etwas mehr mit dem 
FAT-Dateisystem an sich beschäftigen, was ich z.Zt. nicht möchte.

Naja, immerhin funktionierts.

Gruß,
Christian
Gast #445765
Lesenswert?

Hi!
deine 32 sind die $20 von Adresse $1C6/1C7 im Sektor0. Da müssen aber 
nicht immer $20 drinnstehen. Du musst also einfach ein Dateisystem 
verstehen, wenn du es richtig verarbeiten willst. Wie willst du sonst 
Fehler finden. Schaue dir bitte den Dateianhang an unter:
Beitrag "Re: MMC/SD  Adresse"
Da steht alles Wichtige  für Fat16 drinn. Wenn du dich dann noch bischen 
mit Fat beschäftigst bekommst du das auch gebacken.

Viel Erfolg, Uwe
Gast #448294
Lesenswert?

Hallo,
danke für eure Tips. Habe mir die gennanten Websites mal angeschaut. Die 
Mehrheit der Sachen ist leider für avr Controller geschrieben. Habe im 
Forum von Microchip jedoch folgenden Beitrag gefunden:

http://forum.microchip.com/tm.aspx?m=199006&mpage=1

Laut der Aussage dort brauche ich mit meinem PIC16F877a gar nicht erst 
anzufangen das FAT-System für eine SD Karte zu implementieren da der PIC 
zu wenig RAM besitzt und man mindestens 1.5 Kbyte benötigt (mindestblock 
ist 512 Byte.)Der PIC16F877 hat laut Datenblatt 386 Byte RAM und 256 
Byte EEPROM, also zu wenig.

Leider stehen mir nur die PIC Controller zur Verfügung und ich habe auch 
nur ein Brenngerät für PIC16 und nicht für die neueren PIC18.

Weiss da jemand eine Lösung oder bin ich komplett am A......?

Danke für Antworten
Gruss
Uli
Gast #448300
Lesenswert?

Und Du kannst auch wirklich kein Geld ausgeben um das Ziel zu erreichen? 
Weil  vor allem weil man bei den AVRs ja auch relativ günstig zu einem 
programmierbaren Chip kommt. (Mega8, STK200 kompatibler 
Programmieradapter (oder eben paralleles Kabel), AVR GCC)

Gruss, Sebastian
Gast #448580
Lesenswert?

@ Sebastian Eckert

Die Seite kannte ich auch schon. Da wird aber nur eine Routine zum lesen 
der SD Karte mit dem PIC16 beschrieben. So wie ich das verstanden habe 
brauche ich beim lesen nicht unbedingt den 512 byte speicher, die Sache 
wird halt nur langsamer.
Anders beim schreiben:

Zitat:

Hier sieht es jetzt völlig anders aus ! Wenn die SD beschrieben
werden soll muß immer ein kompletter Sektor geschrieben werden.
Es ist möglicherweise auch hier egal wie lange es von Byte zu Byte
dauert bis der komplette Sektor beschrieben wurde. Für einen
Datensektor gibt es bis hier noch keine Probleme wenn die Daten
Byte für Byte sofort zur SD gesendet werden.

Die Probleme fangen an wenn man die FAT aktualisieren muß. Man muß
immer einen kompletten Sektor ins RAM lesen um den Verzeichniseintrag
oder die FAT zu aktualisieren und dann auf die SD zurückschreiben.
Das geht nicht anders. Ein Sektor ist 512 Bytes groß. Man braucht auch
noch einiges für die Verwaltung der Daten. Sagen wir mal 50 Bytes. FAT
zu schreiben braucht also mindestens 562 Bytes. Eher mehr.

Zu Externem RAM: Hmm, habe keine Ahnung davon aber es scheint die Sache 
wohl noch mehr zu komplizieren.

Vielleicht sollte ich doch schauen auf einen besseren PIC18 umzusteigen.

Gruss
Uli
Gast #448786
Lesenswert?

Ja, das stimmt wohl, leider. Externer RAM benötigt entweder, parallel 
angesteuert, eine ganze Menge Portpins, die man sicher für andere Zwecke 
besser gebrauchen könnte, oder bringt, seriell angesteuert, recht viel 
programmiertechnischen Overhead mit sich. Es gab mal RAMs mit I2C, wenn 
ich mich richtig erinnere, wahrscheinlich von Philips. Ist aber lange 
her, ob es die noch gibt, ist fraglich.

Wenn Geschwindigkeit eine Rolle spielt, hilft wohl doch nur ein größerer 
Controller mit internem RAM, oder einer, der, im Gegensatz zu den 
üblichen PICs, ein Interface für externen statischen RAM hat (8051er, 
AT90S8515... aber wahrscheinlich gibt es das bei den "großen" PICs 
auch.)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren