PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SD-Karten (max. Speichergröße und FAT)



thewulf00
28.10.2008, 06:11
Hallo an alle Roboterfans,

ich habe vor, mir für verschiedene Projekte mal ein SD-Karten-Interface zu bauen, damit ich es verstehe.
Nun handelt es sich hierbei zwar um MicroSD, aber ich hoffe, das tut nichts zur Sache.
Beim Bestellen der Karte fiel mir auf, dass es Kartenleser gibt, die offensichtlich nur bis zu 1GB lesen und schreiben können, weil man darüber hinaus einen besonderes Modus braucht, soweit ich das verstanden habe.

Jetzt meine Frage dazu:
- Hab ich jetzt meine 2GB-Micro-SD Karte umsonst bestellt, oder ist es nur eine Software-Ansteuerungs-Geschichte, die man mit nem AVR durchaus umsetzen kann?


Noch eine andere Frage zum Thema SD-Karten:
Wenn ich die SD-Karte ausschließlich im (von mir gebauten) Gerät verwende, ist es ja egal, ob ich ein Dateisystem drauf habe, oder nicht, richtig? Wenn ich es nicht draufhabe, kann ich eben einfacher und schneller Daten schreiben und lesen. (ich muss mich dann eben nur um eine eigene Organisation der Daten kümmern)
Ich habe bisher keine Erfahrungen mit der FAT-Programmierung. Welches FAT ist nach dem Formatieren eigentlich auf der SD-Karte drauf? Und wie kann ich das benutzen? Gibt es dazu Libs, oder muss ich es selbst machen? Oder brauche ich womöglich noch externe Zusatzhardware?

Jaecko
28.10.2008, 07:47
Also zur Grösse ist mir grad nichts bekannt, da ich als Grösste in den Projekten nur 256MB hab.

FAT:
Für Bascom gibts das AVR-DOS. Läuft recht gut. Nur bin ich in Bascom nur noch selten, darum hab ich den FAT-Treiber von Ulrich Radig (in C) verwendet und abgeändert. Was da noch abgeht ist eine "Append"-Funktion, d.h. Daten an bestehende Dateien anhängen.

Formatiert ist das ganze als FAT16 mit einer Digicam. Die Formatierung von WinXP wird da (warum auch immer) nicht akzeptiert bzw. es wird dann nicht erkannt, dass da dann FAT drauf ist.

Liegt die Karte nur in deinem Gerät, dann dürfte die sektorenweise Ansteuerung "effizienter" sein, d.h. schneller und weniger Flash/RAM-Bedarf. Einfach ne z.B. 512-Byte-grosse Struct machen, die mit nem Sektor xy füttern und schon kannst die Daten auslesen. Also wenns irgendwelche Datensätze sind, wo jeder Datensatz 1 Sektor entspricht, dann kannst bei ner 256MB-Karte ohne FAT schon mal über 500.000 Datensätze drauflegen.

Sobald aber Daten mit dem PC ausgetauscht werden sollen, ist FAT ein klarer Vorteil. Man kann zwar mit HxD (z.B.) Speicherkarten "roh" lesen und schreiben, aber einfach Textdateien kopieren ist doch übersichtlicher.

MeckPommER
28.10.2008, 08:24
Ich nutze AVR-DOS. Ist für mich eine Blackbox, die ausreichend schnell ist, alle von mir benötigten Funktionen beinhaltet und mir den Datenaustausch mit dem PC gestattet. Meine SD-Karten (auch Micro-SD) laufen damit bisher problemlos.
Ich setze Karten zwischen 64MB und 2GB ein. Unter XP habe ich beim Formatieren die Auswahl zwischen FAT und FAT32 ... unter FAT funzt alles und eine Unterstützung für FAT32 habe ich bisher noch nicht gesehen.

Ich bevorzuge PC-Kompatibilität um bei Fehlersuchen anhand der Daten auf der Karte besser nachvollziehen zu können, warum etwas nicht klappt.

Gruß MeckPommER

thewulf00
28.10.2008, 15:47
Danke für eure Antworten!
Also sind bisher keine Größenbeschränkungen bekannt?

Dieses AVR-DOS klingt interessant, aber ich möchte nicht in BASCOM programmieren (zu wenig Erfahrung), also fällt das wohl leider aus.
Dieser FAT-Treiber vom Ulrich - der ist nur für FAT, d.h. nicht für die Ansteuerung der SD-Karte, oder?

Jaecko
28.10.2008, 15:53
Es ist neben dem FAT-Treiber auch ein SD-Treiber dabei, der den SPI ansteuert. Geht entweder direkt mit der SPI-Hardware oder an wahlfreien Pins per Software-SPI.

Bumbum
28.10.2008, 17:44
Hallo,

ich habe für mein Projekt eine Mischung aus eigener Ansteuerung und FAT gebastelt, um die Daten doch noch am PC auslesen zu können:

Ich formatiere die Karte mit dem PC und kopiere dann eine Datei drauf, die genausogroß ist wie die SD-Karte. Der Inhalt der Datei ist egal, ich hab sie mit ASCII 32 (Space) gefüllt. An den Anfang der Datei habe ich allerdings eine Kennung geschrieben. z.B. Das Wort "Roboternetz"

In meinem AVR lese ich nun kurz die ersten paar Blöcke der SD-Karte ein und suche nach dem Wort "Roboternetz". Ab diesem Sektor kann ich dann meine Daten beliebig schreiben, ohne auf ein Dateiformat aufpassen zu müssen.

Und am PC sind die Daten dann trotzdem in der riesigen Datei ohne Probleme lesbar.

Viele Grüße
Andreas

PICture
28.10.2008, 20:57
Hallo!

Am PC unter Windows XP lassen sich SD-Karten nur bis 2 GB mit FAT(16) formatieren. Grössere Karten kann man nur mit FAT32 formatieren.

MfG

pongi
28.10.2008, 22:43
Ja, und eben deshalb gibt es Digicams/Handys/etc, die nur mit SD Karten bis 2GB fertig werden.

thewulf00
29.10.2008, 10:00
...Mischung aus eigener Ansteuerung und FAT...
Hey Andreas!
Das ist ja mal clever! Vielen Dank für den Tipp. Funktioniert das dann auch noch bei FAT32? (Müsste man halt mehrere Dateinen nehmen, wegen der 2GB-Dateigrößengrenze.)



Am PC unter Windows XP lassen sich SD-Karten nur bis 2 GB mit FAT(16) formatieren. Grössere Karten kann man nur mit FAT32 formatieren.
Ja, und eben deshalb gibt es Digicams/Handys/etc, die nur mit SD Karten bis 2GB fertig werden.
Ah, DAS ist also der Grund. Geht denn der Treiber vom Ulrich auch mit FAT32? Ich denke nicht. Schreibt denn FAT32 auch, wenn man nur eine riesige Datei hat, nacheinanderweg?

Bumbum
29.10.2008, 19:12
Hallo,

ob das noch mit Fat32 funktioniert kann ich dir nicht sagen, da mein Projekt bis jetzt auch "nur" mit 256MB ausgekommen ist. Ich sehe aber keine Probleme. Einzige Bedingung wäre, das die Dateigröße genau ein ganzzahliges vielfaches der Clustergröße (oder wars die Sektorgröße??) sein muss, damit keine Lücken zwischen den Dateien entstehen, die vom PC dann nicht gelesen werden können, da für ihn dort ja keine Daten bestehen.

pongi
30.10.2008, 10:05
Du hast ja geschrieben, dass Du eine 2GB Karte genommen hast. Die müsste ja noch mit FAT16 formattierbar sein. Also besteht das Problem grundlegend nicht mehr, oder?

thewulf00
30.10.2008, 10:14
Ich habe auch ne 4GB-Karte hier.

pongi
30.10.2008, 10:17
Versuchs zuerst mit FAT16 und 2G Karte, dann kannst es ja weiter ausbauen. Eine Frage noch nebenbei: wie willst Du es schaffen, mit einem AVR 2GB vollzuschreiben? Also wasfür Daten verarbeitest Du, dass es so viel wird?