Forum: Mikrocontroller und Digitale Elektronik Speicher Schreibgeschwindigkeit


von Hendrik S. (schwane)


Lesenswert?

Hi Leute,
ich habe mal wieder eine Frage für mein momentanes Projekt, und zwar 
möchte ich Tondaten (als WAV-Rohdaten) mit einem Xmega Aufnehmen. Im 
Moment suche ich nach einem geeigneten Speicher und wollte daher Fragen, 
welche Erfahrungen ihr bezüglich der Schreibgeschwindigkeit gemacht 
habt.

Bei einer SD-karte (natürlich SPI)...
... mit Dateisystem?
... ohne Dateisystem?

Bei einer SATA-Festplatte über einen IDE-SATA-Adapter...
... mit Dateisystem?
... ohne Dateisystem?

Oder gibt es noch eine Andere Möglichkeit, an die ich nicht gedacht 
habe?

Wie gesagt soll der Controller ein Xmega werden, der dann auf 32Mhz 
laufen wird.

LG Schwane

von Jim M. (turboj)


Lesenswert?

> Erfahrungen ihr bezüglich der Schreibgeschwindigkeit [...]
> Bei einer SD-karte (natürlich SPI)...
> ... mit Dateisystem?
> ... ohne Dateisystem?

Kaum Unterschied, wenn man über-allokiert, d.h. größere Blocke als einen 
Cluster beim Schreiben reserviert. Man muss halt ab und zu einen 
FAT-Sektor wegschreiben zusätzlich.

Probleme bekommt man eher durch Fragmentierung des Dateisystems, da dann 
u.U. erst viele FAT-Sektoren später wieder was "frei" ist.

Lass aber viel Platz im Puffer, die Spec erlaubt SDHC Karten durchaus 
Bedenkzeiten von einer Sekunde. Das brauchen die real aber nur ganz 
selten. Wenn möglich, arbeite mit "multiple write" - und vermeide 
direktes Lesen nach einem Schreibvorgang. Da musst Du dann die 
Schreibzeit abwarten.

Ansonsten: Forensuche. Hier gibts viele Threads über SD.

> Bei einer SATA-Festplatte über einen IDE-SATA-Adapter...

Wie willst Du den an den XMega anschliessen? Würde mich stark 
verwundern, wenn die was anderes als UDMA unterstützen, also ab 33 MHz 
aufwärts...

von holger (Gast)


Lesenswert?


von Hendrik S. (schwane)


Lesenswert?

Erst mal danke ;)

> wie willst Du den an den XMega anschließen? Würde mich stark
> verwundern, wenn die was anderes als UDMA unterstützen, also ab 33 MHz
> aufwärts...

Die SD-Carte kann meines Wissens maximal einen SPI-Takt von 25 MHz, und 
ich frage mich ob da nicht die Parallele Ansteuerung einer 
IDE-Festplatte auch bei Frequenzen < 32MHz schneller ist.
Und AVR oder AVR32 Beispiele mit Festplatten gibt es ja auch manche.

> Forensuche. Hier gibts viele Threads über SD.

Ja, die habe ich auch schon gefunden, nur leider finde ich so gut wie 
nie Angaben über wirklich erreichte Maximale Datenraten. Und ich hatte 
gehofft so was hier zu bekommen, sodass ich weiß, wie weit ich überhaupt 
mit den Audiodaten gehen kann.

holger schrieb:
> Beitrag "SD-Karten-Wave-Recorder"

Danke, aber den Beitrag hatte ich mir auch schon durch gelesen. Auch 
dort gibt es keine angaben über die Datenrate, außer das es anscheinend 
knapp ist und mit Dateisystem nicht gereicht hätte.
Außerdem wird auch dort auf eine Festplatte verwiesen.

Deswegen hatte ich ja hier gerade nach der Schreibgeschwindigkeit 
gefragt.

von holger (Gast)


Lesenswert?

>Die SD-Carte kann meines Wissens maximal einen SPI-Takt von 25 MHz, und

Und das ist ein schöner Wunschtraum dem so manche in die
Falle gehen. Das ist die maximale Datenrate die das Interface
erlaubt. Da kommen dann noch Busy Zeiten von der SD dazu um
die Daten zu speichern. Nach meinen Erfahrungen so 7kB/s bis zu
450kB/s mit einem AVR und 8MHz SPI Takt. Diese kleinen
lästigen sporadischen Pausen von bis zu 500ms die sich
die SD mal gönnt können schon ganz schön nervern.

von Hendrik S. (schwane)


Lesenswert?

das heiß bei 25MHz Takt maximal etwa 1,6 MB/s?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Hendrik S. schrieb:
> ich frage mich ob da nicht die Parallele Ansteuerung einer
> IDE-Festplatte auch bei Frequenzen < 32MHz schneller ist.

Tricky, da die IDE-Schnittstelle 16-Bit-Zugriffe erfordert. Wenn die 
über I/O-Ports abgewickelt werden sollen, wird das ganze recht langsam, 
wenn der µC keine echten 16-Bit-Ports hat.
Am schnellsten wird es bei µCs mit externem 16-Bit-Speicherinterface, 
wenn memory-mapped I/O verwendet wird.

Es gibt zwar IDE-Implementierungne für 8-Bit-µCs, diese aber nutzen 
üblicherweise eine nur von CF-Karten zur Verfügung gestellte 
8-Bit-Betriebsart.

von holger (Gast)


Lesenswert?

>das heiß bei 25MHz Takt maximal etwa 1,6 MB/s?

Das heisst bei 25MHz unbestimmte Schreibzeiten
von 0-500ms pro Sektor. Wenn alle Karten gleich schnell
beim schreiben wären, dann könnte man sich Vergleichstests
in diversen Computerzeitschriften sparen.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Hendrik S. schrieb:
> holger schrieb:
>> Beitrag "SD-Karten-Wave-Recorder"
>
> Danke, aber den Beitrag hatte ich mir auch schon durch gelesen. Auch
> dort gibt es keine angaben über die Datenrate, außer das es anscheinend
> knapp ist und mit Dateisystem nicht gereicht hätte.

Mit mehr RAM (ich verwendete 128kB Pufferspeicher) sollte es auch mit 
Dateisystem funktionieren oder gar mit höherer Samplerate. Bei einem 
nächsten Projekt habe ich 512kByte benutzt und das reicht schon für gut 
2s bei 48kHz/16Bit stereo, damit sollte jede Karte zurecht kommen.

von Falk B. (falk)


Lesenswert?

Die meisten SD-Karten schaffen ja heute zweistellige MB/s 
Datendurchsätze. Selbst mit SPI 1 Bit seriell schafft man bei 25 MHz 
schon etwa 4 MB/s. Hier ist also kein Flaschenhals. Der liegt eher in 
den Schreibpausen der Karte. Hier muss ein FIFO her. Wie groß der 
sein muss, muss man prüfen. Gefühlt würde ich sagen, dass man 100-500ms 
puffern muss.

MfG
Falk

von ich (Gast)


Lesenswert?

Da hier ja ein xmega zum Einsatz kommen soll, würde sich als FIFO ein 
SDRAM anbieten.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

SRAM ebenso. Mit SDRAM hat man mehr Probleme, als Nutzen. Ist bei den 
aktuellen XMEGA nun mal so.

Falk Brunner schrieb:
> Gefühlt würde ich sagen, dass man 100-500ms
> puffern muss.

Wird bei SDHC knapp. 500ms Pause habe ich schon bei 'normalen' 
SanDisk-Karten (2GB) gesehen und war darüber auch ziemlich baff. 
128kByte waren damals ein sicher funktionierender Puffer für den Zweck.

von Hendrik S. (schwane)


Lesenswert?

Also ihr würdet von der Festplatte abraten...
So wie ich das jetzt sehe reicht auch die SD-Karte locker aus.
Ich arbeite mich gerade mit dem A1 Xplained in die Xmegas ein und da ist 
ja ein 8MB SDRAM drauf. Ich werde mir mal einen SD-Karten Socket 
besorgen und testen, wie weit ich mit der Datenrate gehen kann (bei 
verschiedenen Karten) und mich dann daran orientieren. Mal sehen was 
dabei raus kommt ;)

Wenn du eher SRAM verwenden würdest... Welche Chips gibt es denn da?

von Arc N. (arc)


Lesenswert?

Hendrik S. schrieb:
> Also ihr würdet von der Festplatte abraten...
> So wie ich das jetzt sehe reicht auch die SD-Karte locker aus.

Oder, wenn beschaffbar (u.a. Digi-Key), könnte man auch direkt ein 
NAND-Flash nehmen...
z.B. 
http://download.micron.com/pdf/datasheets/flash/nand/2_4_8gb_nand_m49a.pdf
max. 700 us pro 2048 Byte Page-Write (~2.9 MB/s) und max 3 ms pro 128 
kiB Block-Erase (Page/Block jeweils ohne die 64 extra Bytes gerechnet, 
die normalerweise für die Fehlerkorrektur verwendet werden).

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Arc Net schrieb:
> könnte man auch direkt ein
> NAND-Flash nehmen...

SD-Karten nutzen das Flash besser aus, indem sie die Blöcke gleichmässig 
beschreiben, um das 'Abnutzen' einzelner Zellen zu vermeiden. Zudem sind 
sie billig und klein (Micro-SD).

von Rolf Magnus (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Es gibt zwar IDE-Implementierungne für 8-Bit-µCs, diese aber nutzen
> üblicherweise eine nur von CF-Karten zur Verfügung gestellte
> 8-Bit-Betriebsart.

Was würde denn dagegen sprechen, eine solche zu verwenden? Wenn 
SD-Karten und Festplatten Optionen sind, dann doch bestimmt auch 
CF-Karten.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Zudem kann man sich die 16bit Zugriffe sparen wenn man nur die Hälfte 
der Kapazität der HD nutzt.

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
Noch kein Account? Hier anmelden.