Grafikressourcen mit EZIP komprimieren¶
Verwenden Sie das Dienstprogramm aus dem SDK-Branch Ihres Ziels: $SDK_ROOT/tools/png2ezip/ezip.exe. Es erzeugt EZIP-/PIXEL-Binärdaten oder C-Arrays für LVGL. Prüfen Sie zuerst den Binärheader und das Pixelformat und wählen Sie dann den passenden Konvertierungsbefehl. Soll das Bild von der EZIP-Hardware dekomprimiert werden, folgen Sie dem GZIP-Ablauf und der Integrationscheckliste gegen Ende.
Geltungsbereich nach Familie
Die Leitfäden für die einzelnen Familien sind voneinander unabhängig. Wenn sich die unterstützten Eingabe- oder Ausgabeformate oder das Verhalten des Tools unterscheiden, richten Sie sich nach dem Leitfaden für die Zielfamilie und verwenden Sie das mit Ihrem SDK-Branch ausgelieferte Dienstprogramm. Leiten Sie die Unterstützung oder das Verhalten einer Familie nicht aus dem Leitfaden einer anderen Familie ab.
Dateiformate¶
Die ersten vier Bytes einer erzeugten Binärdatei bilden einen Little-Endian-Header. Seine Bitfelder sind wie folgt aufgeteilt:
Tabelle: EZIP/PIXEL-Binär-Header-Felder
| Bits | Bedeutung |
|---|---|
| [31:21] | Bildhöhe |
| [20:10] | Bildbreite |
| [9:5] | Reserviert |
| [4:0] | Format |
Die Formatwerte lauten:
Tabelle: EZIP- und PIXEL-Formatwerte
| Wert | Bedeutung |
|---|---|
| 1 | EZIP ohne Alpha |
| 2 | EZIP mit Alpha |
| 4 | PIXEL ohne Alpha |
| 5 | PIXEL mit Alpha |
PIXEL ohne Alpha unterstützt RGB565 und RGB888. PIXEL mit Alpha unterstützt ARGB565 und ARGB888. Das Tool wählt die Alpha-/Nicht-Alpha-Variante anhand des Quell-PNG aus: Ein Bild ohne Alpha erzeugt ein Format ohne Alpha.
Tabelle: PIXEL- und ARGB-Farbformat-Bitfelder
| Format | Bitfelder |
|---|---|
| RGB565 | [15:11] Rot, [10:5] Grün, [4:0] Blau |
| RGB888 | [23:16] Rot, [15:8] Grün, [7:0] Blau |
| ARGB565 | [23:16] Alpha, [15:11] Rot, [10:5] Grün, [4:0] Blau |
| ARGB888 | [31:24] Alpha, [23:16] Rot, [15:8] Grün, [7:0] Blau |
Die Bitfelder aller oben aufgeführten Pixelformate werden in Little-Endian-Reihenfolge gespeichert.
PNG-Assets konvertieren¶
Ersetzen Sie png_filename.png durch den Namen der Quelldatei. Die erzeugte Datei wird im Tool-Verzeichnis abgelegt, sofern der umgebende Build das Arbeitsverzeichnis nicht ändert.
PIXEL-Binärdatei¶
Die Ausgabe heißt png_filename.bin. Verwenden Sie RGB565 für RGB565-/ARGB565-Ausgaben und RGB888 für RGB888-/ARGB888-Ausgaben. Ob Alpha enthalten ist, richtet sich nach dem Eingabe-PNG.
EZIP-Binärdatei¶
Die Ausgabe ist png_filename.bin, wobei der Formatwert im Header auf EZIP gesetzt ist.
PIXEL-LVGL-C-Array¶
ezip -convert png_filename.png -rgb565 -cfile 1 -section ROM3_IMG
ezip -convert png_filename.png -rgb888 -cfile 1 -section ROM3_IMG
Die Ausgabe ist png_filename.c, abgelegt in der Sektion .ROM3_IMG.png_filename. Ein typisches erzeugtes Array hat diese Form:
#ifndef LV_ATTRIBUTE_MEM_ALIGN
#define LV_ATTRIBUTE_MEM_ALIGN
#endif
#ifndef LV_ATTRIBUTE_IMG_eZIP_RGBARGB565A
#define LV_ATTRIBUTE_IMG_eZIP_RGBARGB565A
#endif
#define LV_COLOR_DEPTH_RGB565A 3
#define LV_COLOR_16_SWAP_RGB565A 0
SECTION(".ROM3_IMG.png_filename")
const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_IMG_eZIP_RGBARGB565A uint8_t png_filename_map[] = {
...
};
EZIP-LVGL-C-Array¶
ezip -convert png_filename.png -rgb565 -cfile 2 -section ROM3_IMG
ezip -convert png_filename.png -rgb888 -cfile 2 -section ROM3_IMG
Die Ausgabe ist ebenfalls png_filename.c in der Sektion .ROM3_IMG.png_filename. Das erzeugte EZIP-Array ist für die Hardware-Dekompression ausgerichtet:
#ifndef LV_ATTRIBUTE_MEM_ALIGN
#define LV_ATTRIBUTE_MEM_ALIGN
#endif
SECTION(".ROM3_IMG.png_filename")
ALIGN(4)
const LV_ATTRIBUTE_MEM_ALIGN uint8_t png_filename_map[] = {
...
};
Eine GZIP-Datei für die EZIP-Hardwaredekomprimierung erzeugen¶
Verwenden Sie zum Komprimieren von file.bin im Tool-Verzeichnis:
Das Tool erzeugt file.bin.gz. Dessen erste vier Bytes enthalten die Länge der Originaldaten. Wenn das Hardware-EZIP-Beispiel diesen Stream dekomprimiert, übergeben Sie diese vier Bytes nicht als komprimierte Eingabe. Reservieren Sie anhand der gespeicherten Länge Speicher für den Ausgabepuffer und übergeben Sie die verbleibenden GZIP-Daten an den Hardware-Dekompressor.
Übergeben Sie dem EZIP-Hardwaredekompressor in einem Aufruf den vollständigen GZIP-Datenstrom hinter dem vier Byte langen Längenpräfix. Würde eine große Eingabe den verfügbaren Eingabe- oder Ausgabepuffer überschreiten, teilen Sie die Originaldatei in Blöcke auf (der Quellleitfaden empfiehlt 10-KB-Blöcke), komprimieren Sie jeden Block einzeln und übergeben Sie die GZIP-Daten der Blöcke der Reihe nach an den Dekompressor.
Integrations-Checkliste¶
Bewahren Sie für jedes Asset das Original-PNG, die Befehlszeile, das Farb-/Alpha-Format, die erzeugte Datei, den Linker-Abschnitt, die Display-Konfiguration des Zielsystems und einen Darstellungstest auf dem Zielboard auf. Wird das Asset im externen Flash gespeichert, stimmen Sie Abschnitt und Dateisystemplatzierung mit Externen Flash verwenden ab.
Offizielle Quellen¶
- SF32LB52x: EZIP-Konvertierungstool verwenden
- SF32LB55x: EZIP-Konvertierungstool verwenden
- SF32LB56x: EZIP-Konvertierungstool verwenden
- SF32LB58x: EZIP-Konvertierungstool verwenden
Zuletzt aktualisiert: