Forum: Mikrocontroller und Digitale Elektronik ARM Cortex M3 - Datenkompression


von etk55 (Gast)


Lesenswert?

Guten Tag,

derzeit bin ich auf der Suche nach Kompressionsverfahren, die man auf 
einem ARM Cortex M3 anwenden kann.
Auf diesem Themengebiet habe ich bisher wenig Erfahrung und hoffe, dass 
ich auf diesem Weg ein paar nützliche Hinweise finden kann.

Es geht um folgendes :
Eine Parametrisierungsdatei im  XML Format (stark komprimierbar) soll 
auf einem PC komprimiert werden, anschlieneßd zum Cortex übertragen und 
dort wieder dekomprimiert werden.

Habt ihr damit Erfahrung bzw. sogar schon selbst Daten auf 
Mikrocontroller komprimiert bzw. dekomprimiert ?
Kennt ihr Verfahren bzw. bestenfalls frei verfügbaren C Code, die man in 
meinem Fall anwenden kann ?

Es geht mir erstmal darum einen Überblick über die Möglichkeiten zu 
erhalten.
Geschwindigkeit, Kompressionsfaktor und Rechenleistung spielen erstmal 
eine kleinere Rolle.
Rechenleistung und Speicher sind genügend vorhanden. Die XML Datei ist 
meines Wissens nach erstmal um die 300 kByte groß.

Kennt ihr Verfahren, die ich dafür anwenden könnte ? Frei verfügbaren C 
Code ? Code, den ich kaufen kann ?
Über eine Empfehlung würde ich mich sehr freuen.

von FHMensch (Gast)


Lesenswert?

etk55 schrieb:
> Es geht mir erstmal darum einen Überblick über die Möglichkeiten zu
> erhalten.

Alles klar. Was hast du bisher ALLEINE herausgefunden? Sag nich, dass 
g**gle wieder kaputt ist.

von PittyJ (Gast)


Lesenswert?

zlib - Standard seit Jahren.
http://www.zlib.net/

von ddc (Gast)


Lesenswert?

LZO ist ganz performant

von dummy (Gast)


Lesenswert?

Lass den Quatsch mit diesem XML Firlefanz und schick die
Daten so wie sie gespeichert werden sollen.

Von hinten durch die Brust ins Auge...

von Hmm... (Gast)


Lesenswert?

> Geschwindigkeit, Kompressionsfaktor und Rechenleistung spielen erstmal
> eine kleinere Rolle.
> Rechenleistung und Speicher sind genügend vorhanden. Die XML Datei ist
> meines Wissens nach erstmal um die 300 kByte groß.

Wenn es nur um die Beschleunigung der Datenübtertragung geht spielt die 
Rechenleistung sogar ein große Rolle. Wie kommen die Daten den rein? 
Wenn alles per UART mit 1200 Baud geladen werden muss kann sich das 
packen schon lohnen, wenn man aber eher mit 1 MBit z.B. vom FTDI Daten 
bekommt könnte es fixer gehen wenn man unkomprimiert überträgt.

A propos 300 kByte XML File. Wohin soll die weggespeichert werden? 
SD-Karte? Und was passiert mit den Daten danach, wie wird weiter 
verarbeitet? 300k hält man nicht mal eben im RAM des kleinen STM32 ;) 
Selbst die dicksten Teile haben soweit ich weiß maximal 256kByte RAM. 
Und die meisten Kompressions-Libraries wollen davon auch noch etwas für 
sich haben...

von etk55 (Gast)


Lesenswert?

Vielen Dank, für die Hinweise.

Das Format sollte beibehalten werden. Daran kann ich nichts ändern.
Die Daten sollen mit 9600 Baud über ISDN übertragen werden. Da lohnt 
sich die Kompression auf jeden Fall.
Gespeichert werden die Daten auf einem Speicherbaustein. Der ist aber 
ausreichend groß.

Bisher dachte ich an einen Huffmancode. Da dieser gut dokumentiert ist 
und es auch viele C ode Beispiele gibt.
AUf LZO bin ich auch schon gestoßen aber da bin ich mir noch nicht ganz 
sicher, ob man den kostenlos verwenden darf.

von Maxx (Gast)


Lesenswert?

etk55 schrieb:
> Die Daten sollen mit 9600 Baud über ISDN übertragen werden.

?
Baud oder Bit/s?

Jeder der beiden D-Kanäle hat 8000Baud mit 8Bit/Symbol -> 64kBit/s
Selbst der B Kanal kommt noch auf 16kBit/s


Ansonsten LZ0 und co. Hey selbst ein einfacher Huffmann ohne 
vorgeschaltetes Wörterbuch bringt dir beim XML schon ne ganze Menge.

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.