TouchGFX

Unkomplizierte Entwicklung von Displays und Touchscreens auch im Embedded Bereich

Grafische Benutzeroberflächen treffen wir überall an. Auch in der Welt der Embedded Systeme kommen Displays und Touchscreens immer mehr zur Anwendung. Grafische Oberflächen benötigen jedoch auch Ressourcen, sowohl auf dem System selbst als auch beim Design und der Entwicklung. Mit TouchGFX, einer Grafikbibliothek von ST-Microelectronics, wird die Einstiegshürde für die Entwicklung von Embedded Systemen mit Displays möglichst niedrig gehalten.

Im Rahmen des Boostcamps 2022 haben sich zwei Mitarbeitende der CSA mit TouchGFX beschäftigt. Ziel war es, eine einfache Anwendung auf dem STM32F769I-Disco Evaluationsboard umzusetzen und dadurch die Möglichkeiten von TouchGFX in Erfahrung zu bringen. Dies wurde in drei Schritten realisiert. Erstens ein Beispiel Projekt mit der STM32Cube IDE in Betrieb nehmen, zweitens dies mit eigenen Funktionalitäten und Hardware-Interaktionen zu erweitern und abschliessend das Feature «OSWrapper» zum Austausch des unterliegenden Betriebssystems zu testen.

 

Die Inbetriebnahme des STM32F769I-Disco Evaluationsboard mit einem Beispiel Projekt der STM32Cube IDE ist rasch und einfach erledigt. Für die Erstellung des eigenen GUIs kommt TouchGFX mit einem handlichen Tool daher: dem TouchGFX Designer. Er beinhaltet eine grafische Oberfläche, mit welcher Knöpfe, Texte und Bilder einfach arrangiert werden können. Der Kern des Tools ist der Codegenerator, mit welchem aus dem zuvor erstellten GUI C++ Code generiert wird. Mit Hilfe eines Simulators kann zudem ein ausführbares Programm für Demonstrationszwecke erstellt werden. Damit kann zum Beispiel das Design oder die Navigation durch ein Menü getestet oder Stakeholdern präsentiert werden, ohne dass dafür ein Embedded-Gerät mit Display benötigt wird.

Der generierte Code ist in einem STM32Cube-Projekt integriert, das diesen kompiliert und auf die Hardware bringt. Standardmässig wird ein FreeRTOS Thread generiert, der nach eigenen Bedürfnissen angepasst werden kann. Hardware-Daten werden mittels EventQueues an das GUI geschickt.  Analog dazu können Inputs des Touchscreens im Thread verarbeitet und entsprechende Funktionen auf der Hardware getriggert werden. In unserem Fall haben wir mit einer Schaltfläche auf dem Touchscreen eine LED ein- und wieder ausgeschaltet. Dabei wurde der aktuelle Zustand der LED zyklisch gelesen und auf dem Display dargestellt.

 

Grafische Oberflächen und Displays stellen natürlich auch Anforderungen an die Hardware. So wird je nach Grösse des Displays entsprechend mehr Arbeitsspeicher für den Framebuffer benötigt. Die Bibliothek ist jedoch auf die jeweilige Applikation anpassbar, so kann zum Beispiel zwischen Dual-Buffer oder Single-Buffer gewählt werden. Der erstellte Thread nimmt je nach Komplexität des GUIs auch entsprechend Rechenkapazität in Anspruch.

 

TouchGFX bietet mit dem OSWrapper, einer Abstraktionsschicht rund um das Betriebssystem, die Möglichkeit das Betriebssystem auszuwechseln. Im verwendeten Beispielprojekt wollten wir FreeRTOS durch AzureRTOS ersetzen. Das Unterfangen entpuppte sich jedoch als grössere Herausforderung als erwartet. Aufgrund der zahlreichen Features die vom Beispielprojekt bereits umgesetzt sind, hat das Betriebssystem unabhängig von der Grafikbibliothek viele Verbindungen zu anderen Softwaremodulen. Ein nachträglicher Wechsel bei einem bereits voll integrierten RTOS ist deshalb nicht optimal und mit grösserem Aufwand verbunden. Wir empfehlen den OS Wechsel zu Beginn eines neuen Projektes auszuführen oder alternativ dies gänzlich ohne Betriebssystem (Bare-Metal) aufzusetzen.

 

Fazit:
ST bietet mit der TouchGFX Grafikbibliothek und deren Integrierung in die STM32Cube Umgebung eine Möglichkeit ein Embedded-Gerät relativ schnell mit einer ansehnlichen Benutzeroberfläche auszustatten. Dabei müssen vorgängig die Anforderungen an das Gerät beachtet und entsprechende Mikrokontroller und Displays evaluiert werden.

 

Die CSA Engineering AG verfügt über das nötige Fachwissen, um Sie in Ihrem Projekt dabei zu unterstützen.

Kontaktiere uns