Compact Dekomprimierungsbibliothek für die eingebettete Verwendung

Derzeit erstellen wir ein Gerät für einen Kunden, das einen Datenblock (z. B. 5-10 KB) von einer PC-Anwendung erhält. Dies ist ein wenig vereinfacht, nehmen Sie also an, dass die Daten häufig und nicht nur einmal im Jahr übergeben und dekomprimiert werden müssen. Der Kommunikationskanal ist sehr, sehr langsam, daher möchten wir die Daten vorher komprimieren, an das Gerät übergeben und die Daten auf den internen Flash entpacken. Das Gerät selbst läuft jedoch auf einem Mikrocontroller, der nicht wirklich schnell ist und nicht viel Speicher hat. Es verfügt über genügend Flash-Speicher, um das Ergebnis zu speichern, und kann den Datenblock beim Empfang dekomprimieren. Möglicherweise verfügt es jedoch nicht über genügend RAM, um die gesamten komprimierten oder unkomprimierten (oder sogar beide!) Datenblöcke zu speichern. Und natürlich hat es kein Betriebssystem oder anderen Luxus.

Dies bedeutet, dass wir einen ausreichend schnellen Dekomprimierungsalgorithmus benötigen, der nicht viel Speicher benötigt. Die Komprimierung kann langsam und hässlich sein, da wir dies auf der PC-Seite tun. C- oder .NET-Code wird jedoch zur Komprimierung bevorzugt, um die Arbeit zu vereinfachen. Der Dekomprimierungscode sollte in C sein, da es unwahrscheinlich ist, dass jemand eine für ASM optimierte Version für unseren Controller hat.

Wir haben LZO gefunden, das für uns fast perfekt wäre, aber standardmäßig eine sogenannte "freie" Lizenz (GPL) hat, die es für unseren Kunden völlig unbrauchbar macht. Der Autor sagt, dass kommerzielle Lizenzen auf Anfrage erhältlich sind, aber er ist derzeit leider nicht erreichbar (aus nicht technischen Gründen, wie die Nachrichten auf seiner Website sagen).

Ich habe ein paar andere Bibliotheken gefunden, einschließlich der puff.c von zlib, und wir untersuchen sie noch, aber ich dachte, ich würde Sie um Ihre Erfahrung bitten:

Welchen Komprimierungsalgorithmus und / oder welche Bibliothek empfehlen Sie für eingebettete Zwecke, da das Dekomprimierungsgerät nur über begrenzte Ressourcen verfügt und Quellcode und eine kommerzielle Lizenz erforderlich sind?

Antworten auf die Frage(14)

Ihre Antwort auf die Frage