mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Schnelle Komprimierung auf einem Microcontroller


Autor: Tikonteroga (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: madler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: A. K. (prx)
Datum:

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

Autor: madler (Gast)
Datum:

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

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: 900ss D. (900ss)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
holger schrieb:
> Dann mach dir mal Gedanken zum Thema Wear Levelling.

Macht das nicht die CF-Karte schon selbst?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: A. K. (prx)
Datum:

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

Autor: 900ss D. (900ss)
Datum:

Bewertung
0 lesenswert
nicht 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 :-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.