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.
>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.
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
>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.
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
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.
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
>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?
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
Die Schreibzeit kann über einen großen Zeitraum variieren, weil die Karten-Logik ein Wear-Leveling vornimmt, sodass alle Speicherzellen gleichoft beschrieben werden.
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
Informier dich doch einfach selbst: http://de.wikipedia.org/wiki/Solid_State_Drive#Verschlei.C3.9F_und_Ausfallvorhersage_.28S.M.A.R.T..29 Es ist ein Fachbegriff und lässt sich leicht finden.
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
>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.
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.
Vielen Dank für die Antwort. Ich werde jetzt andere Karten besorgen und testen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.