www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Lahme 2GB SD Karte


Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

endlich funktionieren meine Lese- und Schreibroutinen für SD-Karten an 
meinem uC-Board!

Ich habe sie mit einer neuen 2GB Karte von Intenso und einer 3 Jahre 
alten 256MB von Toshiba (mit HAMA Aufkleber) getestet. Dabei wurden 
jeweils 10000 Blocks a 512Byte an aufeinanderfolgende Addresse 
geschrieben bzw. gelesen. Alle Blöcke waren gleich und mit HEX-Zahlen 
von 0-FF gefüllt (jeweils 2 mal). Die Ergebnisse haben mich erstaunt:

            Toshiba        Intenso
Lesen:      1027kB/s       808kB/s

Schreiben:  419.8kB/s      73.8kB/s

Ich hätte nicht gedacht, dass der Unterschied so gross sein kann. 
Insbesondere die niedrige Schreibrate der Intenso-Karte kommt mir 
merkwürdig vor. Wie können Speicherchips so unterschiedliche 
Zugriffszeiten haben? Da die Toshiba Karte so viel besser ist, glaube 
ich nicht, dass es an meiner Software liegt, oder etwa doch?

Ein Blick auf das TAAC-Feld im CSD-Register bringt auch erstaunliches zu 
Tage:

Toshiba: 0x2B  == 2us Zugriffszeit
Intenso: 0x3E  == 3ms      "

Beide Werte haben wenig mit der tatsächlichen Datenrate zu tun.

Gruss
Mike

Autor: 6635 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es ist nicht die Zugriffszeit, sondern die Schreibzeit. Tja. Irgenwo 
muss/kann man sparen...

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Intenso is ja auch der letzte Rotz den man kaufen kann... da solltest 
Dich nicht wundern.

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Michael
...und Hama...

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe das Schreiben gerade noch mal getestet. Die Intenso Karte 
steigert sich! Immerhin schafft sie jetzt 178.6 kB/s. Sie muss offenbar 
erst eingefahren werden! Dennoch würde ein komplettes Beschreiben mit 
2GB immer noch ca. 3 Stunden dauern.

Gruss
Mike

Autor: Daniel P. (ppowers)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Mike:
Bei diesen niedrigen Schreibraten würde ich dann doch eher noch 
Optimierungspotentiale bei Deiner Software vermuten. Wenn Du die Karte 
z.B. in Windows mit Daten belädst wird die Schreibrate eher mehrere MB/s 
betragen.
Was für ein µC-System verwendest Du denn? Und wie hoch ist Deine 
SPI-Frequenz?

Gruß,
Daniel

Autor: Stefan Oberpeilsteiner (stefano)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein vergleich mit dem schreiben am PC ist hier soweit ich weis nicht 
zulaessig, da die Karte vom Pc ja nicht im SPI Modus angesprochen wird.

lg Stefan

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Daniel
Ich benutze einen LPC2378 mit 48Mhz Prozessortakt, die Taktfrequenz der 
SD-Karte beträgt zur Zeit 12Mhz. Dies gibt bei einer Busbreite von 4 bit 
eine maximale Transferrate von 6Mb/s.
Sicherlich ist die Software nicht optimal, ich schreibe jeden Block 
einzelnen, so dass ein gewisser Overhead anfällt. Mit multiple block 
write würde es sicher noch schneller gehen. Ziel ist es aber, die EFSL 
Library zu implementieren, und die unterstützt Mehrfachblöcke leider 
nicht.

Trotzdem ist es auffällig, dass die gleiche Software mit 
unterschiedlichen Karten so grosse Unterschiede zeigt. Es lohnt sich 
also doch, in Markenprodukte zu investieren.

Gruss
Mike

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Daniel,Stefan

Um Missverständnisse zu vermeiden: Meine Karte wird über den SD-Bus, 
nicht über SPI angesprochen. Ich werde noch mal versuchen, den Takt auf 
24 Mhz zu erhöhen, maximal 25 sind ja erlaubt

Gruss
Mike

Autor: Stefan Oberpeilsteiner (stefano)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso - entschuldigung.

Dachte mir das du die Karte (so wie fast alle hier) im SPI Modus 
betreibst. Wenn dem nicht so ist dann verwundet mich die Datenrate 
ebenfalls.

lg Stefan

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Testergebnisse mit 24Mhz Kartentakt:

            Toshiba        Intenso
Lesen:      1603kB/s       1130kB/s

Schreiben:  503kB/s        180kB/s

Beim Lesen bringt's was, beim Schreiben wenig.

Letzendlich gehe ich aber wieder zurück auf 12Mhz, da mir die Leserate 
bei weitem ausreicht. Schliesslich soll der Prozessor ja auch was 
Sinnvolles mit den Daten anfangen.

Autor: Stephan Hochberger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Könnte evtl. an einer "wear-leveling" Technik liegen:
Die neuen günstigen Karten nutzen MLC-Chips, die nur bis ca. 10.000 
Schreibvorgänge spezifiziert werden. Um in dem Speicherbereich in dem 
die FAT-liegt auf ne geeignete Lebensdauer zu kommen werden die 
Blöcke/Cluster laufend in andere Bereiche verlegt.

Hab neulich was über ne Transcend 133x (oder langsamer, mit MLC-Chips 
jedenfalls) gelesen. Die war in den ersten 10-15% des Speicherbereichs 
auch Schneckenlangsam.

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe die SD-Spezifikation noch einmal gründlich studiert. Der Grund 
für die schlechte Schreibperformance liegt wahrscheinlich darin, dass 
die grosse 2GB Karte intern grössere Blöcke als 512 Bytes verwendet 
(z.B. 2kB). Bei jedem Schreiben eines 512er Sektors muss der komplette 
Block gelöscht, die Daten zwischengespeichert und wieder neu 
programmiert werden.
Das kostet natürlich Zeit, un damit ist die Karte gegnüber ihren 
kleineren Schwestern im Nachteil.
Als Gegenmassnahme bietet sich an, grössere Schreiboperationen (Multiple 
Block Write) zu verwenden und eine entsprechende Zahl von Sektoren per 
pre-erase (ACMD23) im Voraus zu löschen. Leider dürfte das in den 
meisten embedded Systemen am fehlenden Puffer-RAM scheitern. Da ich die 
EFSL verwenden möchte, geht's ohnehin nicht, denn die EFSL kann nur 
512-byte Sektoren schreiben.


Gruss
Mike

Autor: Thomas O. (kosmos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Mike: habe noch nirgends Infos zum 4 Bit Modus gefunden, da man dafür 
anscheinend löhnen muss. Könntest du mir diese Infos bitte zukommen 
lassen. kosmos at mayn punkt de

Autor: Aufnehmer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
als ich mal mit SD-Karten 'rumgebastelt hatte, war es sehr entscheidend, 
die Sektoren vorher zu löschen. Dann war das Schreiben wesentlich 
schneller. Wenn es Dir auf Geschwindigkeit ankommt, nimm eine CF-Karte 
(wie in den teureren Fotoapparaten). Mehr Hardwareaufwand, aber viel 
einfacher anzusteuern finde ich (insbesondere das Gezicke bei der 
Initialisierung von SD fällt weg) und viel schneller.

Autor: Andreas W. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Mike (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
@Thomas:
Hier die neueste Version der Spezifikation für die SD-Karte, direkt von 
der SD Group. Da steht genau drin, wie man auf den 4-bit mode umschaltet 
(mit ACMD6). Es ist ein weit verbreiteter Irrtum, dass die SD-Karten 
Spezifikation nicht öffentlich sei, geheimgehalten wird lediglich der 
Zugriff auf die kryptographischen Spezialfunktionen. Diese finden sich 
in der Security spec, die tatsächlich nur Mitgliedern der SD Group 
zugänglich ist. In der Praxis werden diese Spezialfunktionen so gut wie 
nie genutzt, für die Anwendung als Speichermedium reicht die normale 
Spec völlig aus.

Gruss
Mike

Autor: OMeGA (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja aber es ist die simplified version !!!

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Simplified ja,
aber völlig ausreichend, um die Karte anzusteuern

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.