Forum: Mikrocontroller und Digitale Elektronik Schnelle Komprimierung auf einem Microcontroller


von Tikonteroga (Gast)


Lesenswert?

Hallo,

ich möchte auf einem Eingebetteten System mit einem lpc23xx (ARM7) mit 
64Kb Ram ein System realisieren, dass CAN-, LIN-, Analog- und Digitale 
Signale auf eine Compact Flash Speicherkarte abspeichert. Wenn die 
Aufzeichnung beendet ist, soll man die aufgezeichneten Daten von der 
Speicherkarte über TCP (100 MBit/s) an einen Rechner (Windows, Linux, 
...) übertragen.

Während der Übertragung der Daten, wird kein weiterer Code ausgeführt.

Die Compact-Flash Speicherkarte soll mit Kapazitäten von 8 oder gar 16 
GB verwendet werden.

Ich gehe davon aus, dass die sequentielle Lesegeschwindigkeit der 
CF_Speicherkarte höher ist, als die Übertragungsgeschwindigkeit von 
Ethernet 100 MBit/s.

Nun habe ich mir überlegt, ob ich die Dauer der Übertragung verkürzen 
könnte, wenn ich die Daten vor der Übertragung komprimieren würde.

Bei meinen Überlegungen bin ich zu dem Schluss gekommen, dass der 
Algothytmus folgende Eigenschaften haben sollte:

- Die Komprimierung muss schnell und einfach sein.
- Die Dekomprimierung darf aufwendig sein.
- Die Komprimierung muss verlustfrei sein.

Könnt ihr mir einen geeignetes Verfahren empfehlen ? Macht eine 
Komprimierung überhaupt Sinn, oder ist die CPU hierfür zu langsamm ?

Gruß

Tikonteroga

von (prx) A. K. (prx)


Lesenswert?

Tikonteroga schrieb:

> Ich gehe davon aus, dass die sequentielle Lesegeschwindigkeit der
> CF_Speicherkarte höher ist, als die Übertragungsgeschwindigkeit von
> Ethernet 100 MBit/s.

Herzlichen Glückwunsch wenn du es schaffen solltest, mit echten Daten, 
ganz egal woher du sie hast und sei es frei erfunden, mit einem ARM7 ein 
100Mbps Ethernet mit TCP ohne Komprimierung zu saturieren. Hast nämlich 
nur so um die 7 Takte pro Byte zur Verfügung.

Zur Orientierung: Ein 300MHz ARM9 NAS bläst bei gutem Wetter und FTP um 
die 20MB/s von Platte auf's Gigabit-Ethernet raus. Und es ist nicht die 
Platte, die begrenzt.

von madler (Gast)


Lesenswert?

Leider ist die Komprimierung eigentlich immer aufwendiger als die 
Dekomprimierung ;)

Ob Komprimierung Sinn macht haengt ja von den Daten ab :) Dazu muesstest 
Du also auch noch was sagen.
Zumindest etwas aehnlich einem Run-length encoding macht aber denke ich 
bei einem Logging oft Sinn.

von (prx) A. K. (prx)


Lesenswert?

Sehr schnell, auch beim Komprimieren, und einfach implementierbar:
http://en.wikipedia.org/wiki/LZRW

von madler (Gast)


Lesenswert?

Hmm ja, da hat der A.K. Recht. Gerade wenn Du auch noch FAT oder 
aehnlich implementieren willst...?

von holger (Gast)


Lesenswert?

>ich möchte auf einem Eingebetteten System mit einem lpc23xx (ARM7) mit
>64Kb Ram ein System realisieren, dass CAN-, LIN-, Analog- und Digitale
>Signale auf eine Compact Flash Speicherkarte abspeichert.

Dann mach dir mal Gedanken zum Thema Wear Levelling.
Sporadische Pausen von 300-500ms beim schreiben sind zu erwarten.
Kannst du die puffern?

von Falk B. (falk)


Lesenswert?

Warum nicht einfch die CF Karte aus dem Board ziehen und in den PC 
stecken. Schneller kannst du die Daten nimmer übertragen ;-)
16G in 10s.

von 900ss (900ss)


Lesenswert?

holger schrieb:
> Dann mach dir mal Gedanken zum Thema Wear Levelling.

Macht das nicht die CF-Karte schon selbst?

von Falk B. (falk)


Lesenswert?

@  900ss D. (900ss)

>> Dann mach dir mal Gedanken zum Thema Wear Levelling.

>Macht das nicht die CF-Karte schon selbst?

Sicher, aber eben deshalb gibt es ab und an Pausen, in denen die Karte 
keine Daten mehr annimmt und man warten muss.

MfG
Falk

von (prx) A. K. (prx)


Lesenswert?

Von hoher Schreibrate war noch nicht die Rede. Die ist bislang offen.

von 900ss (900ss)


Lesenswert?

Falk Brunner schrieb:
> Sicher, aber eben deshalb gibt es ab und an Pausen, in denen die Karte
> keine Daten mehr annimmt und man warten muss.

Ah, OK. Danke wieder was gelernt :-)

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.