Datei Dekomprimierung

Gast #6341306
Hallo..

wir evaluieren gerade eine Funktion für ein bestehendes Projekt. Es geht 
dabei darum, eine komprimierte (Format können wir festlegen) Datei in 
einem 32bit µC (Renesas RX71M 240MHz 512kB RAM, 4MB Flash + externe SD 
Karte) zu entpacken. Quelle und Ziel ist jeweils die SD Karte (wird 
mittels SPI nicht SDHI angesprochen). RAM ist intern noch genügend 
vorhanden > 300kB, RTOS nützen wir nicht.

Hat damit schon jemand Erfahrung, die Beiträge die man so liest sind 
entweder schon älter oder zwiegespalten. An sich würde uns GZIP im 
Moment am besten gefallen.

Danke
Dave
#6341359
Normalerweise entpackt man die Daten an der Quelle und schiebt die 
Rohdaten direkt oder via µC auf die SD Karte. Das ist in den meisten 
Fällen schneller.

Gleichzeitig Lesen und Schreiben ist bei SD Karten schon ein Problem und 
wird ohne großzügiges Cachen eher lahm. Denn die SD Karte taucht zum 
Schreiben eine Weile ab.

GZIP Dekompression (zlib) müsste man locker in 300KB rein bekommen - 
dann wäre IMHO auch noch Platz für Caches übrig.
Gast #6341378
Jim M. schrieb:
> GZIP Dekompression (zlib) müsste man locker in 300KB rein bekommen

Bekommt man locker in 30000 (oft nimmt man allerdings statt 16k gerne 
32k Tabellengrösse plus ein paar hundert byte Programm, kann 
komprimieren und dekomprimieren. So wie ich es verstehe kann er sich ja 
ein Verfahren aussuchen und muss nicht dutzende unterstützen.
Gast #6341398
Da ihr durch SPI limitiert seid könnte es schneller sein,  die Daten 
nicht auf die Karte zurückzuschreiben, sondern jedes Mal während dem 
Laden zu entpacken.
#6341408
Moin,

Da wuerd' ich auch immer mal ein Auge auf's jeweilige Lizenzmodell der 
verwendeten Software werfen, und gucken, ob das zu den eigenen 
Vorstellungen passt.
Um's ausprobieren auf der Ziel-HW werdet ihr wohl nicht rumkommen, um 
die Eignung festzustellen.

Gruss
WK
#6341476
Moin,

Jörg W. schrieb:
> Sollte bei der zlib kein Problem sein, das ist 'ne Art BSD-Lizenz.

Ich sag' ja auch nicht, dass es ein Problem bei der zlib ist. Das im 
Ausgangspost erwaehnte gzip ist aber schon mal GPL. Wie z.b. LZO auch.
Das muss auch kein Problem sein. Wenn man's rechtzeitig entsprechend 
beruecksichtigt.
Laesst man's aber gepflegt unter den Tisch fallen, weil "ist ja 
Opensource", kann das Gesicht spaeter lang werden.

Gruss
WK
Gast #6341589
Danke für die vielen Antworten.

Gibt's bei allen Verfahren eine Dekomprimierung zur Laufzeit. An sich 
haben wir mit der Dekomprimerungszeit nicht so das Problem. Datei wird 
wohl in einem Anwendungsfall über CAN zuerst an uns geschickt. Das 
dauert schon mal > 15 Minuten. Wenn das entpacken dann ein paar Minuten 
braucht geht das unter. Wenn das natürlich aber funktionieren würde, 
dass wir gleich einen empfangenen Block dekomprimieren und nur den 
entpacken Inhalt auf die SD Karte schreiben habe ich auch nichts 
dagegen.

Zur Info, wir sprechen von ASCII Files die rund 5MB unverpackt haben .gz 
sind es rund 750kB.
#6341636
Moin,

Dave schrieb:
> Wenn das natürlich aber funktionieren würde,
> dass wir gleich einen empfangenen Block dekomprimieren und nur den
> entpacken Inhalt auf die SD Karte schreiben habe ich auch nichts
> dagegen.

Wenn du "Bloecke" einzeln komprimierst, kannst du sie auch einzeln 
wieder dekomprimieren. Wenn du dir erhoffst, einen komprimierten Blob in 
mehreren Bloecken zu uebertragen und die dann einzeln wieder zu 
dekomprimieren, muss das nicht immer funktionieren, kann aber evtl. wenn 
eben der Komprimieralgorithmus "das weiss", dass du da auf der anderen 
Seite blockweise dekomprimieren willst.

Gruss
WK
Gast #6341689
Dave schrieb:
> über CAN zuerst an uns geschickt

Klingt wie Automotive.

Die Leute merken einfach nicht, wie weit sich sich schon mit untauglchen 
Entscheidnugen in die Scheisse geritten haben, und machen immer weiter, 
immer tiefer rein.

Man kann sicher sein, daß Tesla nicht so updated, damit ist es 
folgerichtig, daß die als Sieger hervorgehen werden.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.