Ich möchte mit einem PIC eine SD-Karte mit Daten beschreiben. Danach
soll ich die Daten am PC auslesen können, oder umgekehrt. Doch genau das
funktioniert nicht.
Ich benutze einen PIC18F2685, eine 2GB Speicherkarte und FAT32.
Ich habe den Beispielcode ex_fat.c von CCS verwendet. Einiges habe ich
schon in den Includes mmcsd.c und fat.c ergänzt was ich im Internet
gefunden habe[[http://www.picprojects.net/sdcard_demo/index.html]]. Ich
konnte danach Daten mit dem PIC auf die SD-Karte schreiben. Das heisst,
ich konnte Ordner und Files erstellen und diese dann auch wieder
anzeigen, lesen und löschen. Doch wenn ich die Karte am PC eingesteckt
habe, hat es nichts angezeigt. Und auch umgekehrt, wenn ich etwas am PC
erstellt habe hat es nichts angezeigt wenn ich es mit dem PIC auslesen
wollte. Kann mit jemand weiter helfen was ich noch tun könnte? Ist etwas
falsch formatiert, bzw. anders als beim PC?
Vielen Dank
Arno
Wenn du die Karte mit dem PIC initialisierst, was behauptet der PC dann
zu sehen (Explorer, Eigenschaften)?
Und umgekehrt, wenn du die Karte am PC initialisierst, was erkennt der
PIC als Dateisystem?
Solange sich da nicht beide Seiten einig sind, was für ein
Filesystem-Typ es sein soll, brauchst du mit Daten schreiben/lesen nicht
anzufangen.
Also der PC sagt, die Karte sei noch nicht formatiert.
Mit dem PIC kann ich es nicht sagen.
Das könnte also bedeuten, dass der PIC etwas nicht richtig formatiert!?
Was müsste ich ändern?
Ich habe auch die Karte kommplett auf 0 gesetzt und danach mit dem PC
und mit dem PIC formatiert. Danach habe ich jede belegte Speicherstelle
ausgelesen und in einem Textfile gespeichert. Vieleicht hilft das auch
noch weiter. Was ich komisch finde ist auch, dass wenn es mit dem PC
formatiert wurde nicht bei Cluster 0x000 begonnen wie beim PIC, sondern
bei 0x200. Was ist falsch?
Der Standard sagt, dass SD-Karten FAT16 verwenden sollten, SDHC-Karten
FAT32. Man kann auch auf SD-Karten FAT32 verwenden, aber es kann sein,
dass nicht alle Geräte damit zurechtkommen.
Dann sollten SD/SDHC-Karten wie Disketten formatiert sein, d.h. der
Bootblock steht an Sektor 0. Auf dem PC kann man SD/SDHC-Karten auch wie
eine Festplatte formatieren, d.h. mit Partitionssektor auf Sektor 0 und
der Bootsektor der ersten Partition auf Sektor 63 oder 255 oder so, je
nachdem wie viele Sektoren pro Track der Treiber zurückmeldet.
Mit dem Festplatten-Formatierungsschema könnten auch einige Geräte nicht
zurechtkommen, deswegen besser nicht verwenden.
Schau hier, wie der Sektor 0 normalerweise aussehen sollte:
http://de.wikipedia.org/wiki/FAT16#Aufbau
fchk
Der PC ist im allgemeinen recht flexibel, was Datenformate angeht. Man
muss ihm nur sagen, welche Sprache gesprochen wird.
Also solltest du dir als erstes dein PIC-Fat-FS Programm ansehen, was
dort implementiert ist. Sowohl beim Floppy Format wie auch beim HD
Format stehen im ersten Sektor dann die Infos.
Lass den PIC die Karte initialisieren. Das ist üblicherweise eine
Sonderfunktion. Es ist nicht gesagt, dass die Funktion "formatieren" das
mit erledigt.
Nun muss der PC die Karte erkennen. Wenn nicht, hast du sie falsch
initialisiert.
Wenn alle Stricke reißen, nimmst du dieses
http://panasonic.jp/support/global/cs/sd/download/index.html Programm
und versuchst die Karte damit auf dem PC zu überreden.
Ich habe nun das ganze einmal mit FAT16 probiert. Was jedoch auch nicht
geklappt hat. Danach habe ich alle einzelnen Daten wieder ausgelesen.
Als ich es mit dem PIC formatiert hatte, habe ich gesehen, dass irgendwo
FAT12 in der SD-Karte steht, obwohl der Beispielcode alles auf FAT16
formatieren sollte.
Jedoch die Cluster und Sektorengrösse ist korrekt(FAT16).
Und wenn ich es mit dem PC formatiere, sehe ich den ersten Wert leider
nicht an der Stelle 0, so wie es eigentlich sein sollte! Daten vom PIC
auf den PIC Schreiben und lesen funktioniert nach wie vor, auch mit
FAT16. Doch der Austausch zwischen PC und PIC geht immer noch nicht.
Noch einmal, ganz langsam geschrieben: Als erstes musst du dir klar
werden, ob du als Festplatte mit MBR und Partitionstabelle formatieren
willst oder als Superfloppy mit Bootsektor und den Einträgen zum Layout.
Dein PIC initialisiert als Superfloppy im FAT12 Format. Dein PC hat eine
Partitionstabelle geschrieben. So können sich die beiden nicht
verstehen.
Noch an einer Loesung interessiert? Habe ein weitgehend funktionierendes
FAT-System, das FAT16 oder FAT32 beim Initialisieren erkennt, mit dem PC
formatierte SDs lesen und schreiben kann. Basierend auf den
Originaldateien von CCS mit etlichen Korrekturen und Erweiterungen.
Dann melde dich hier.
galileo