Hallo liebe Leser und Schreiber, bei meinen Experimenten bezüglich eines Stereo-Wave-Recorders mit dem ATXMega128 bin ich über die verschiedenen Schreib- oder besser Busy-Zeiten verschiedener SD-Karten gestolpert, die ich über SPI-Modus betreibe. Einige Karten (alte Platinum 256MB) sind wirklich fix dabei, die 512 Bytes eines Blocks wegzuspeichern (5-10ms), andere Karten, wie zum Beispiel eine Lexar 2GB braucht dafür fast ewig (50...250ms). Hat jemand Erfahrungen gemacht, welche Karten bis 4GB besonders schnell beim Schreiben sind? Sind die Karten im Multi-Block Modus bedeutend schneller, oder relativiert sich das? Ich muß dazu sagen, daß der Controller nicht besonders viel Zeit hat, da bei der Aufnahme pro Sekunde etwa 130kb bei 44kHz Samplerate anfallen, die gespeichert werden müssen. Auf das Anschließen von externem RAM würde ich gerne verzichten. Grüße! TravelRec.
>eine Lexar 2GB braucht dafür fast ewig (50...250ms). Ja, eine sehr unangenehme Eigenschaft dieser Karten. Mein Highscore liegt bei 310ms. Ich denke das ist noch nicht das Ende der Fahnenstange :( >Sind die Karten im Multi-Block Modus bedeutend >schneller, oder relativiert sich das? Ich hatte mit elm-chan mal in der Richtung rumgespielt. Wenn man von 1024 Bytes auf 4096 Bytes pro f_write() geht kann sich die Schreibrate bei einigen Karten fast verdoppeln. Aber eben nur bei einigen. Diese sporadisch auftretenden langen Busy-Zeiten waren aber immer noch vorhanden!
Shit happens... Zumal die Busy-Zeiten keinesfalls immer dieselben sind. Bei der Lexar schwanken sie von 50 bis 250ms wild umher - jeder Zyklus sieht auf dem Speicheroszi anders aus. Sind die Busy-Zeiten bei Multiblock-Write genau so lang wie bei Single-Block oder länger oder wie? Im Moment kann ich´s leider nicht ausprobieren, da die teure Technik auf Arbeit steht ;-). Laut Internetrecherche sollen die Transcend Karten ganz ordentlich am Bus kleben, kann das jemand bestätigen?
Travel Rec. wrote: > Shit happens... Zumal die Busy-Zeiten keinesfalls immer dieselben sind. > Bei der Lexar schwanken sie von 50 bis 250ms wild umher - jeder Zyklus > sieht auf dem Speicheroszi anders aus. Sind die Busy-Zeiten bei > Multiblock-Write genau so lang wie bei Single-Block oder länger oder > wie? Im Moment kann ich´s leider nicht ausprobieren, da die teure > Technik auf Arbeit steht ;-). Laut Internetrecherche sollen die > Transcend Karten ganz ordentlich am Bus kleben, kann das jemand > bestätigen? Theoretisch sollten Multiblock-Writes eigentlich schneller sein. Die verwendeten NAND-Flash haben üblicherweise Page-Größen zw. 2 kiB und 8 kiB, wenn die, bei vielen vorhandene, Möglichkeit zu partiellen Page-Writes genutzt wird, sollten auch 512 Bytes schnell geschrieben werden können (einige Teile lassen auch nur sequentielle Page-Writes innerhalb eines Blocks zu). Das Hauptproblem ist aber, das dies nur dann geht, wenn der Block in dem sich die Page befindet, gelöscht ist. Ansonsten muss der gesamte Block a 128(512) kiB umkopiert, gelöscht und neu beschrieben werden.
Hm - das mit den größeren Blocks bzw. Pages als den angenommenen 512 Bytes scheint insofern auch bei meinen Karten so zu sein, da alle 4 Blöcke (also 2kiB) das Busy etwas länger dauert, als bei den anderen 3 Blöcken. Würde es hier Sinn machen, jeweils 4 Blöcke zu schreiben?
Das Problem hierbei ist die Verknüpfung von "verwendetes Flash" und "verwendetes WearLeveling". Denn in jeder Karte wird eine lizensierte Variante des WearLeveling (FlashTranslationLayer) verwendet. Diese Kombination bestimmt die Busy-Time am Ende einer physikalische Page (z.B. 2kB). Und selbst innerhalb eines Karten-Types wie 2GB von Hersteller XYZ kann verschiedenes Flash Verwendung finden. Nur innerhalb eines Produktions-Cycles kann man dies als "stabil" ansehen. Denn die FlashEigenschaften können dem WearLeveling zu Produktionszeit in ein EE-Field übergeben werden. Einige Hersteller geben außerdem extrem grenzwertige Werte für Nac und Nbs in Ihren Card-CSD an - siehe Tabelle: http://www.embedded-os.de/index.html?pcfat_port.htm Was auf jeden Fall Sinn macht ist "WRITE/READ MULTIPLE_SECTORS". Da aber zwischen Sector(s) und wirklich verwendeter phys. Page das WearLeveling der Karte sitzt, bleibt leider das alle PageSize "BusyWait" des jeweils enthaltenen Fash-Bausteins. Ansonsten, viel Glück beim "Trial- and TimeOut-Buy" von möglichen besonders schnellen Karten.
Danke für die Hinweise, bin auf dem Gebiet SD-Karte noch nicht so lange unterwegs ;-). Bevor ich neue Karten kaufe, versuche ich noch eine optimierte Buffer-Nutzung, in der Hoffnung, damit noch einige Busy-Lücken erschlagen zu können. Ich habe ja noch etwas Platz im RAM.
Hallo nochmal! Also unter Verwendung des CMD25 und einer leicht geänderten Bufferstruktur funktionieren die Karten schnell genug. Testweise werden 520kB/s sicher weggespeichert, 4x so viel, wie ich eigentlich brauche :-). Das einzige Problem, welches bei der 2GB-Karte auftaucht, ist ein unregelmäßiges Schreiben der Blöcke unter $800 - darüber läuft´s wie geschmiert.
Update: ich habe jetzt noch einige originale SanDisk-Karten 1GB und 2GB im Test. Standard-Modelle (etwa 6EUR/2GB, 5EUR 1GB) laufen zuverlässig und ähnlich schnell, wie das Lexar-Modell. In den Sektoren unter $800 gibt es 2-3 unregelmäßige Sprünge. Die UltraII (etwa 8EUR/2GB) verhält sich im SPI-Modus recht fix, in den Sektoren unter $800 gibt es 2 Sprünge, die aber vom 6kB Puffer ausgeglichen werden können. Im Bereich darüber liegen die Busy-Zeiten im MultiBlockWrite sämtlich unter 2ms/Block. Die ExtremeIII (etwa 12 EUR/2GB) läuft im SPI-Modus ausgesprochen schnell und zuverlässig. Es gibt keine Sprünge im unteren Bereich, die Busy-Zeiten liegen deutlich unter 1ms/Block. Im professionellen Bereich werde ich deshalb gerne auf die ExtremeIII zurückgreifen, für den Hausgebrauch kann ich die günstigeren SanDisk-Karten emfehlen. Während der Tests kamen mir auch noch CN-Memory SD-Karten aus dem MediMax/ProMarkt unter (Premium Silver, Premium Gold), die nach einigen wenigen Tagen im Rechner und in der Digitalkamera schwere Störungen (CRC-Schreibfehler) verursachten und sich nun nicht mehr beschreiben ließen. Eine von MediMax umgetauschte Karte war nach einigen Tagen ebenfalls defekt, so daß man auf eine komplett vermurkste Serie schließen muß. Ich habe die Karten keinem Streß außer den Geschwindigkeitstests ausgesetzt und wie gesagt, in Consumer-Geräten verwendet. Davon abgesehen waren die CN-Memory Teile sehr langsam. Also davon besser die Finger lassen.
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.