Schnelle Komprimierung auf einem Microcontroller

Gast #1855020
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
#1855035
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.
Gast #1855043
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.
Gast #1855055
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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren