www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik XMEGA SPI SD Karte Übertragungsgeschw.


Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wir testeten heute die Übertragungsgeschwindigkeit eines SPI Interfaces 
vom XMEGA zu einer Verbatim SD Karte mit einer SPI Clock von 8 MHz.

Dazu haben wir 1024 x 512 Bytes auf die SD Karte geschrieben und mittels 
Timer die Zeit gemessen.

Wir erhalten somit eine Schreibdatenrate von ca: 300 kbit/s.

Dies erscheint uns noch ein wenig langsam. Wir konnten durch die 
Timerfunktion schließlich herausfinden, dass bis zu 70% der Zeit beim 
Warten auf das Busy-Signal (oxFF) der SD Karte nach Sendung von 512 
Bytes verbraten wird.

Unsere Schlussfolgerung wäre nun, dass die verwendete SD Karte im SPI 
Modus sehr lahm ist, wir verwenden eine 2GB Verbatim SD Karte.

Habt ihr bessere Erfahrungen mit anderen Karten gemacht?

Vielen Dank für die Antworten.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Wir erhalten somit eine Schreibdatenrate von ca: 300 kbit/s.

Das sind ja nur 37kB/s. Ein bißchen langsam. 100-200kB/s sollte
da schon drin sein. Das schafft man schon mit einem ATMEGA.
Es gibt aber tatsächlich extrem langsame Karten. Eine 64MB
Nokia hat bei mir nie mehr als 30kB/s gebracht. Und das mit einem
ARM7 und 20MHz SPI. MultiBlock Write bringt in der Regel noch
ordentlich was.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Multiblock Write bedeutet wahrscheinlich das mehrere 512 Blöcke auf 
einmal geschrieben werden.

Ist es beim Fat16 nicht nötig nach 512 Bytes auf ein 0xFF der SD Karte 
zu warten, um danach erst weitere 512 Bytes schreiben zu können?

Danke für die Auskunft, also 100 kByte/s sollten somit durchaus machbar 
sein, morgen werden wir eine andere SD Karte testen.

Nochmals die Frage:

Gibt es favorisierte SD Karten Typen bzw. Hersteller ?

Velen Dank für die Auskunft

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Gibt es favorisierte SD Karten Typen bzw. Hersteller ?

Bei SPI Betrieb taugen die alle nicht so richtig.
Große Karte, schnelle Karte: Nö.
Neue Karte, schnelle Karte: Kannste knicken.

Meine schnellste Karte ist eine uralte 256MB MMC.
Das Mittelfeld liegt da so bei 100 bis 250kB/s.

Kauf halt keine NoName Karten. Verbatim ist NoName.

Autor: Hamid (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Beim schreiben auf die SD-Karte in XMEGA  über den SPI schreibe ich 
momentan auch einzelne Blöcke von 512 Bytes und erreiche dabei eine 
zieml8ich langsame Geschwindigkeit:  nur 38 MB/s. ich werde gerne die 
MultiBlock Write Option verwenden, nur ich weiss leider nicht wie ich 
sie verwenden kann.  Hat schon jemand Erfahrung dabei gehabt?

Vielen Dank im Voraus.

Hamid

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Multiblockmode per Kommando einschalten, Anzahl an Blöcken 
lesen/schreiben, nach jedem Block Flags abfragen, nach gesamtem 
Datentransfer Multiblockmode per Kommando wieder ausschalten. Mehr ist 
es nicht.

Autor: Hamid (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank  Travel Rec.

> Multiblockmode per Kommando einschalten, Anzahl an Blöcken
> lesen/schreiben, nach jedem Block Flags abfragen, nach gesamtem
> Datentransfer Multiblockmode per Kommando wieder ausschalten. Mehr ist
> es nicht.

ich habe jetzt die Daten im Multiblock-Modus wie hier Beschrieben 
verwndet:
http://elm-chan.org/docs/mmc/mmc_e.html

und kann jetzt Geschwindigkeiten bis ca. 230 KBytes/s erreichen. ich 
habe aber ein anderes Prblem festgestellt: wenn ich die Daten in den 
ersten Sektoren (ab 4096) liegt die Geschwindigkeit bei ca. 230 KBytes/s 
und wenn ich die Daten in höheren Adressen schreibe (5000) sinkt sie bis 
zum 1/5.

verwnde ich die Commands zum schreiben von Multiblocks falsch ? oder 
gibt es eine andere Erklärung?

Ich habe das Gefühl, dass wenn ich eine Adresse überschreibe dauert es 
länger als wenn ich sie zum ersten mal schreibe.

P.S. Momentan schreibe ich direkt auf die SD-Karte (2GB von Kingston) 
(Ohne Fat-Funktionen) um einfach eine höhere Geschwindikeit zu 
erreichen.

Vielen Dank im Voraus

Hamid

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>100-200kB/s sollte
>da schon drin sein. Das schafft man schon mit einem ATMEGA.

Kann mir einer einen Beispiel-Code nennen, mit dem diese Datenrate 
erreicht werden kann?

Autor: Hamid (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe jetzt einen Timer während des Schreibens eines Blocks von 512 
Bytes eingeschaltet und bekomme 6ms. Davon gehen 4ms nur für das Busy, 
was eigentlich ziemlich lang ist.
Hat schon mal jemand das Problem gehabt bzw. wie man diese Zeiten 
beschleunigen kann?

Merci

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Schreibzeit kann über einen großen Zeitraum variieren, weil die 
Karten-Logik ein Wear-Leveling vornimmt, sodass alle Speicherzellen 
gleichoft beschrieben werden.

Autor: Hamid (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Simon K. schrieb:
> Die Schreibzeit kann über einen großen Zeitraum variieren, weil die
> Karten-Logik ein Wear-Leveling vornimmt, sodass alle Speicherzellen
> gleichoft beschrieben werden.

Kannst du es bitte genauer erklären?

Danke

Autor: Thomas K. (muetze1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Informier dich doch einfach selbst: 
http://de.wikipedia.org/wiki/Solid_State_Drive#Ver...

Es ist ein Fachbegriff und lässt sich leicht finden.

Autor: Hamid (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thomas K. schrieb:
> http://de.wikipedia.org/wiki/Solid_State_Drive#Ver...

Danke für den Link. Nur ich kann damit die SD-Karte noch nicht schnell 
schreiben.

Könnte mir jemand bitte einen schnellen getesteten code empfehlen?

Merci

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Danke für den Link. Nur ich kann damit die SD-Karte noch nicht schnell
>schreiben.
>
>Könnte mir jemand bitte einen schnellen getesteten code empfehlen?

Du brauchst keinen schnelleren Code sondern eine schnellere Karte.

>Davon gehen 4ms nur für das Busy,

Warte mal ab bis du da sporadisch mehr als 100ms siehst;)
Und du wirst das irgendwann mal sehen. Diese Busy Zeiten braucht die
Karte selbst. Daran kannst du nichts ändern, ausser wie oben gesagt eine
schnellere Karte suchen.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das geht nur mit größeren RAM-Puffern flüssig. Für meinen 
SD-Wave-Recorder, der 192kByte/s aufbringt bzw. abholen will, verwende 
ich 128kByte 12ns-RAM, die abhängig von der Karte sporadisch bis zu 70% 
gefüllt werden, nominal werden aber nur etwa 5% gebraucht. Deine 
Beobachtung bezüglich der ersten Blöcke einer Karte kann ich teilen, 
allerdings ist es bei mir genau andersherum: die ersten 4096 Blöcke sind 
eher langsam, die nachfolgenden Adressen durchgehend schnell. Nach einem 
Datenstop und nachfolgendem Schreiben gibt es anfangs auch einige 
kleinere Verzögerungen, die der Puffer ausgleichen muß. Ich verwende 
Karten von EMTEC, SANDISK, LEXAR, PLATINUM und KINGSTON.

Autor: Hamid (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für die Antwort. Ich werde jetzt andere Karten besorgen und 
testen.

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.