Jste zde

TouchGFX 4.12: Jednoduchý vývoj grafického rozhraní

Vytvoření grafického rozhraní zabere nemalou část vývoje embeded zařízení. Výkon procesoru se musí volit podle náročnosti dané grafiky. TouchGFX 4.12 získal nové funkce, které pomohou optimalizovat přenos obrazu, aniž by docházelo k zatěžovaní procesoru.

Grafické uživatelské rozhraní TouchGFX od STMicroelectronics aktualizovalo svůj engine a příslušný designérský nástroj. TouchGFX 4.12 přináší cacheable containers, partial framebuffery a podporu grafického kompresního formátu L8. Tyto nové funkce zvyšují výkonnost na procesorech STM32. Embeded systémy často komunikují s uživatelem pomocí grafického rozhraní, a proto nemalou část vývoje zabírá právě vývoj samotného grafického rozhraní. TouchGFX Designer usnadňuje vývoj GUI pro mikroprocesory a snižuje potřebu psát kód v jazyce C ++. TouchGFX není žádnou novinkou, jelikož tato technologie byla představena již v roce 2018. Nyní byl proveden první velký upgrade, který posune tuto technologie zase o krok dále. Tato technologie je součástí STM32 ekosystému.

Cacheable Containers: Jak vykreslovat snímky

CacheableContainer je technologie, kterou TouchGFX tým začal vyvíjet pro speciální zákazníky daleko dříve, než se rozhodli ji zpřístupnit širší veřejnosti. Jak už název napovídá, používá bitovou mezipaměť, a tím výrazně urychlí grafický výkon a umožňuje vyšší frekvenci snímků pro plynulejší přechody. Video níže ukazuje demo, které běží na sestavě STM32F429I Discovery.

Bez technologie CacheableContainer, jednoduchá full-screen (240 × 320) animace běží rychlostí 9 snímků za sekundu. S technologií CacheableContainer je systém schopen full-screen animaci přehrát rychlostí 60 snímků za sekundu. To přináší daleko hladší přechod. Některé inteligentní hodinky v současné době používají tuto funkci k zajištění plynulejšího uživatelského prostředí, a to i přes významná hardwarová omezení spojená s delší životností baterie. Optimalizuje výkon při animaci složitých widgetů, jako jsou textury nebo malé dynamické prvky zobrazené před statickým pozadím.

Překreslování každého snímku je výpočetně náročné. V animaci, kde se překresluje obrazovka 1 do obrazovky 2 vyžaduje asi 20 snímků. Překreslování každého snímku trvá přibližně 100 milisekund. CacheableContainer obchází tento problém tím, že uloží první a poslední snímek v samostatném kontejneru v podobě bitmapy, který systém udržuje v paměti RAM. Místo náročného vykreslování animace z procesoru systém načte dva obrazy z paměti pomocí DMA a zobrazí je na různých místech díky jednoduché metody nazvané DynamicBitmap.

Procesor neztrácí čas s vykreslováním každého snímku, čímž se výrazně optimalizuje výkon. Celý tento proces se aktivuje v designovém nástroji TouchGFX designer pomocí zaškrknutím políčka Cacheable. S touto technikou čas na vykreslení klesá ze 100 ms na 5 ms.

Partial Framebuffer: Optimalizace uložení snímku

Partial Framebuffer je další technologie, která se vyvíjela jen pro speciální zákazníky a nyní se zpřístupnila pro širší veřejnost. Framebuffer je souvislý paměťový prostor, který ukládá reprezentaci každého pixelu, který se objeví na displeji. Například standardní 24-bit 390 x 390 obrázek pro zobrazení na displeji v chytrých hodinkách vyžaduje framebuffer o velikosti 3 650 400 bitů čili 440 KB ( ((390 x 390 x 24)/8)/24 ). To je téměř 70% SRAM paměti v procesoru STM32L4 +, který se používá v nositelných zařízeních.

Toto číslo může dále narůstat, pokud aplikace vyžaduje buffer pro dva nebo tři snímky. To znamá zdvojnásobení nebo ztrojnásobení požadavku na velikost paměti. Kromě požadavku na velikost paměti je také velký problém s náročným přesouváním snímků z paměti na displej. Jak už název napovídá, partial Framebuffer ukládá pouze část framebufferu. To má za následek snížení nároku na velikost paměti. Vývojáři mohou nastavit velikost bufferu v závislosti na části obrazovky, která se bude skutečně měnit, a poté uložit více framebufferů. TouchGFX Engine pak zvolí vhodný snímek a zašle ho na displej.

Systém používá mnohem menší soubory pro přesouvání, tím není nutné mít tak výkonný procesor s vyšší spotřebou elektrické energie. Tato technologie funguje nejlépe s krátkými animacemi jako jsou hodiny nebo graf, který se zobrazuje v závislosti na čase. Dále je možné použít DMA řadič, čímž se ještě více uleví procesoru.

L8 kompresní formát a TouchGFX Designer: Optimalizace workflow

Grafické rozhraní zabírá hodně místa v paměti. Až dosud jedinou možností bylo snížit úroveň detailů na obrazovce, a tím i velikost daného souboru. To mělo za následek snížení kvality obrazu grafického rozhraní, a to není žádoucí.

Formát L8 výrazně komprimuje obrazový soubor pomocí akcelerátoru ChromART, který je součástí procesorů STM32. Běžně se používá maximálně 256 barev. To bohatě vystačí pro pozadí, ikony nebo tlačítka na malé embedded zařízení. Tato komprese se jednoduše aktivuje pouhým zaškrknutím políčka v designovém nástroji TouchGFX Designer. Systém vytvoří obraz, který je až o 75% menší. Dekompresní fáze je výpočetně efektivní, neboť využívá engine ChromART k vyhledávání dané barvy v tabulce a dekomprimuje obrazový soubor bez ztráty kvality.

Nástroj TouchGFX Designer dostal hned několik zajímavých aktualizací. Nástroj nabízí nové widgety jako jsou analogové a digitální hodiny nebo tzv. textury mapper, který slouží k vytváření 3D obrázků. Vše se jednoduše vytvoří pomocí drag and drop metody. Tedy skládáním příslušných obrázků z knihoven na displej. I nadále je nutné používat C ++ kód, ale jedná se jen o volání určitých funkcí k obsluze daného obrázku. Nástroj podporuje také přidávání vlastních triggerů(spouštěčů) a akcí. TouchGFX Designer je nyní schopen vytvořit a zavést grafický systém dvakrát tak rychleji.

 

Hodnocení článku: