ARM Cortex M3 - Datenkompression

Gast #3619140
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.
Gast #3619341
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...
Gast #3620516
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.
Gast #3620549
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.

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