Forum: Mikrocontroller und Digitale Elektronik TouchGFX integration in Visual GDB


von Stefan F. (friedi1987)


Lesenswert?

Hallo zusammen,

Ich arbeite schon seit längerem mit STM32 Controllern und ab und zu ist 
auch mal eine GUI Anwendung dabei. Daher erfreute es mich sehr das ST 
den TouchGFX Grafik Stack aufgekauft hat und mitlerweile sogar auch in 
CubeMX integriert hat.

*** Ja, TouchGFX ist nun so wie es aussieht frei für die Nutzung mit STM 
Controllern (Nur am Rande weil ich hier im Forum noch nichts über die 
tolle Nachricht gelesen hab ;) ) ***


Doch dann kam auch so gleich die Ernüchterung. Wie damals bei STemWin 
ist ein Projekt Export für VisualGDB leider nicht möglich sobald man den 
Grafik Stack einschaltet.

Klar kann man noch auf SW4STM oder Atollic TrueStudio umsteigen da es 
für diese IDEs einen Projekt Export gibt, allerdings hat ein kurzer 
Versuch mit TrueStudio gezeigt, dass selbst das nicht ohne Probleme 
klappt. (Errors und Warnings zu Hauf)
Ich hatte mir damals extra VisualGDB gekauft, nach langer Leidenszeit 
mit CooCox und ähnlichem, um endlich von dem Eclipse kram wegzukommen 
und weil ich einfach sehr gut mit Visual Studio zurechtkomme.
Doch leider wird diese IDE nur sehr rudimentär von CubeMX unterstützt.

Daher die Frage: Nutzt jemand von euch TouchGFX mit VisualGDB 
erfolgreich, und wenn ja, mit oder ohne CubeMX generierten Initcode ?

Zum testen hab ich ein STM32F746 Eval hier, was aus dem TouchGFX 
Designer auch direkt läuft, allerdings eben nicht wenn ich das Projekt 
in Visual GDB portiere.

Also wenn jemand ein Tipp hat wär ich sehr dankbar :)

Viele Grüße
Stefan

von C. W. (chefkoch)


Lesenswert?

Eigentlich geht das mit CubeMX zwischenzeitlich recht gut. Welche 
Version von VisualGDB benutzt Du?

von Stefan F. (friedi1987)


Lesenswert?

C. W. schrieb:
> Eigentlich geht das mit CubeMX zwischenzeitlich recht gut. Welche
> Version von VisualGDB benutzt Du?

Ja da hatte ich mich etwas unklar ausgedrückt. Die Hardware Sachen 
klappen soweit ganz gut.
Es geht eher darum wenn man die Middlewares nutzen möchte, wie den 
Grafik Stack.(Da diese wohl eine "advanced project structure" erforden, 
und man keine advanced projects für visualgdb oder makefile exportieren 
kann.)

Ich nutze die Version 5.4 prev. 10, also die aktuelle von der Homepage.

von Dr. Sommer (Gast)


Lesenswert?

Stefan F. schrieb:
> allerdings eben nicht wenn ich das Projekt
> in Visual GDB portiere.

Was genau läuft denn da nicht? Die Quellcodedateien und Bibliotheken 
sollten sich doch auch in VisualGDB einbinden lassen, im Zweifelsfall 
manuell.

von Stefan F. (friedi1987)


Lesenswert?

Dr. Sommer schrieb:
> Was genau läuft denn da nicht?

Naja es gibt ja die Möglichkeit in VisualGDB zb. Keil Projekte zu 
importieren.
https://visualgdb.com/tutorials/arm/import/keil/
Also generiere ich mit CubeMX den Code für MDK ARM und importiere das 
ganze Projekt in Visual Studio.
Danach kommen haufenweisse Fehlermeldungen bzgl. unbekannter asm Befehle 
und ähnlichem. Einiges davon bekommt man weg wenn man die Anleitung 
befolgt aber vieles auch nicht.
Das sind meines Erachtens hauptsächlich unterschiede bei Instructions 
zwischen GCC und MDK ARM.

Ich wollte mir eben ersparen die Linkerscripte und alles händisch 
anzupassen und hatte gehofft das so umgehen zu können.
Aber vermutlich führt kein Weg dran vorbei im Moment die HW Inits mit 
Cube zu generieren und TouchGFX händisch zu inkludieren. (Hatte ich auch 
schon mal versucht aber irgendwann aufgegeben da die Projektstruktur und 
Menge an Files doch recht komplex ist.)

Ich werde also nochmal einen Versuch starten und wenn ich die besagten 
Fehlermeldungen am Bildschirm habe hier mal posten.

Danke schonmal für die Antworten

von Dr. Sommer (Gast)


Lesenswert?

Stefan F. schrieb:
> Also generiere ich mit CubeMX den Code für MDK ARM und importiere das
> ganze Projekt in Visual Studio

Generiere doch lieber ein Projekt für eine GCC basierte IDE. Es sollte 
doch möglich sein, die Quelltext-Dateien in ein neues VisualGDB Projekt 
zu übernehmen..

von Stefan F. (friedi1987)


Lesenswert?

Dr. Sommer schrieb:
> Generiere doch lieber ein Projekt für eine GCC basierte IDE.

Ja. Keil hatte ich ja nur genutzt da es dafür eine Anleitung von Visual 
GDB gab die ganz einleuchtend klang und ich mir davon versprochen hab, 
dass das ganze makefile und linker Zeugs damit erschlagen wär :)

Mir ist schon klar das man das auch alles händisch reinwurschteln kann, 
allerdings hatte ich halt gehofft das vielleicht jemand dafür schon eine 
elegantere Lösung gefunden hat.

Wie gesagt das sind ein Haufen files aus 3 unterschiedlichen Quellen 
(Cube, VisualGDB und TouchGFX) und die alle unter einen Hut zu bringen 
inklusive FreeRTOS (mit dem ich bisher noch keinerlei Erfahrungen hab 
ausser ner Blinky Task) ist eben doch recht umständlich.

Keil user laden das generierte Projekt und alles tut, und können sich 
dann um die eigentliche high level Programmierung kümmern. (Ich weiß ist 
meckern auf hohem Niveau, allerdings hab ich auch schon oft genug low 
level Sachen gemacht und wollte jetzt eigtl. was, dass schnelle Erfolge 
bringt shame lazy_me */shame* )

Aber wie gesagt, Ich werde jetzt nochmal versuchen das alles händisch 
unter einen Hut zu bringen und dann bei den konkreten Fehlermeldungen 
hier nochmal um Rat ersuchen :)

von Björn G. (tueftler)


Lesenswert?

Das Thema würde mich auch brennend interessieren.
Eigentlich ist die Übergabe zwischen Cube und Vgdb ja super gemacht und 
funktioniert dank GPDSC recht flott.
Leider wird gerade diese Exportmöglichkeit beim Einbinden des Graphic 
Frameworks deaktiv geschaltet.

Weiß jemand hier genaueres warum Cube das derzeit so handhabt?

von Johannes S. (Gast)


Lesenswert?

touchGFX baut sich irgendwie als 'master' ein, das passt nicht zu der 
Struktur die Cube sonst anlegt. Wenn man da viel dran ändert wird das 
nicht mehr mit dem Designer zusammenpassen.
Ich hatte auch mal damit gespielt, da gab es den Designer noch nicht. 
Das in ein Eclipse Projekt zu bringen war aufwändig und das möchte ich 
auch nicht nochmal von Hand machen.
Aber super das touchGFX jetzt bei STM offen ist, für private Projekte 
waren mir die 3k€ auch etwas zuviel. Und dafür bekam man nicht alle 
Quellen, nur fertige Treiber Libs für Standardhardware.
Habe gestern mal den Designer installiert, die Beispiele lassen sich 
wirklich mit einem Klick erstellen und auf ein Board laden, das ist sehr 
schön.

von Dr. Sommer (Gast)


Lesenswert?

Wieso ist touchGFX eigentlich STM32-spezifisch? Eine GUI-Library sollte 
doch ziemlich Plattform-unabhängig sein, mindestens mal zwischen allen 
ARM-Prozessoren. Das riecht schon sehr nach forciertem Vendor-Lock-In...

von Johannes S. (Gast)


Lesenswert?

ist nicht STM32 spezifisch, es gab auch Treiber für zB LPC4088. Das 
braucht wegen der Animaierten Sachen schnelle Grafik und da hat STM die 
Nase vorn wie ich das sehe, die Grafkikbeschleuniger der STM werden da 
genutzt.
Ob es mit der Aquise durch ST den Support für andere noch gibt weiss ich 
nicht.

von Dr. Sommer (Gast)


Lesenswert?

Johannes S. schrieb:
> ist nicht STM32 spezifisch, es gab auch Treiber für zB LPC4088.

Ach, auf der Website heißt es:
"TouchGFX is a user-friendly graphical C++ tool integrated in the STM32 
ecosystem."

Aber ich finde es spannend dass hier "einfach so" eine C++-Bibliothek 
für Mikrocontroller angeboten und genutzt wird, und hier nicht sofort 
die Mistgabeln und Fackeln gezückt werden...

von Johannes S. (Gast)


Lesenswert?

Die verwenden aber schon C++ für Fortgeschrittene und ein MVC Modell. 
Das Ergebnis ist dafür Smartphone like.
Die Website ist auch neu, da ist nichts mehr von den anderen Plattformen 
zu sehen.

von Dr. Sommer (Gast)


Lesenswert?

Johannes S. schrieb:
> Die verwenden aber schon C++ für Fortgeschrittene und ein MVC
> Modell.

Interessant, kann man da ein paar Beispiele von sehen?

von Björn G. (tueftler)


Lesenswert?

Die Website von TouchGFX hat sich seit ca. einem halben Jahr ständig 
verändert.
Nun, seit einer Woche etwa gab es den großen Umschwung inkl. Download 
des Designers.
Auch die Integration in Cube ist nicht sehr weit her...

Es ist aber auf jeden Fall so, dass ST seit Juli das TouchGFX sein Eigen 
nennt:
https://www.st.com/content/st_com/en/about/media-center/press-item.html/c2854.html

Was offen bleibt ist die mögliche Codegenerierung für VisualGDB...

: Bearbeitet durch User
von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Ach die hamm das gekauft?
Da steht jetz die Frage im Raum was langfristig mit STemWin passieren 
wird.
Da ich vorhab das mal für Projekte zu nutzen wär das schon interessant.

von C. W. (chefkoch)


Lesenswert?

Mw E. schrieb:
> Da steht jetz die Frage im Raum was langfristig mit STemWin passieren
> wird.

Das sagt mir meine Glaskugel zwar nicht aber dazu ein paar Gedanken:

(ST)emWin kann ohne große Klimmzüge ein Display mit SPI z.B. an einen 
STM32F103C8 - kann man wohl bei TouchGFX auch hinbekommen aber nur mit 
im RAM gespiegeltem Displayinhalt
emWin gibt es auch weiterhin für andere Controller fertig lizensiert
gegen den Einwurf von Euros gibt es emWin auch zu kaufen um es mit jedem 
Controller benutzen zu können


btw - Hat jemand Erfahrungen bezüglich der Unterschiede beim Bedarf an 
Speicher?

von Johannes S. (Gast)


Lesenswert?

Dr. Sommer schrieb:
> Interessant, kann man da ein paar Beispiele von sehen?

hier ist ein Stück Doku:
https://touchgfx.zendesk.com/hc/en-us/articles/205717801-The-Screen-Concept-and-Model-View-Presenter

Es ist sehr einfach den Designer zu installieren (unter Windows 
jedenfalls) und ein Beispielprojekt aus einer Vorlage zu erstellen. Dann 
hat man den Quellcode wie ein Screen angelegt wird. Ich hatte mir das 
vor über einem Jahr angesehen und muss mich da auch erst wieder 
reinarbeiten. Mit dem Konzept kann man auch eine Simulation erzeugen die 
das gleiche Look & Feel hat wie auf dem µC.

Der komplette Quellcode ist aber wie früher bei den Demos auch nicht 
drin, ein Teil ist in einer lib die MCU abhängig dazugelinkt wird. Nur 
wurde in der Demo zeitweise ein Wasserzeichen eingeblendet und das ist 
jetzt wohl nicht mehr drin.

von Johannes S. (Gast)


Lesenswert?

C. W. schrieb:
> btw - Hat jemand Erfahrungen bezüglich der Unterschiede beim Bedarf an
> Speicher?

touchGFX braucht viel Flash, die Fonts sind hochaufgelöst und Bitmaps 
werden in voller Farbenpracht mit Alpha Kanal gebraucht.

von Christopher J. (christopher_j23)


Lesenswert?

Johannes S. schrieb:
> touchGFX braucht viel Flash, die Fonts sind hochaufgelöst und Bitmaps
> werden in voller Farbenpracht mit Alpha Kanal gebraucht.

Könnte man diesen Kladderadatsch nicht elegant in einen SPI-Flash 
auslagern?

von Johannes S. (Gast)


Lesenswert?

ja, das wird in den umfangreicheren Demos auch gemacht, da sind die 
Resourcen einige MB gross.

von Stefan F. (friedi1987)


Angehängte Dateien:

Lesenswert?

Also hab mal wieder weitergemacht und bin nun wieder an dem Punkt wo ich 
die Fehlermeldung habe wenn ich es versuche über das Makefile zu 
integrieren.
Anleitung hierfür:
https://touchgfx.zendesk.com/hc/en-us/articles/206116381-Using-other-IDEs-with-TouchGFX

Versuch nach Methode 1.
Das Make von dem durch TouchGFX Designer generierten Projekt wird 
hierbei vor dem eigentlichen build Prozess ausgeführt und liefert den 
Output wie auf dem Bild zu sehen ist.

Vermutung ist nun, dass entweder das aktuelle arm none eabi diesen einen 
Befehl nicht (wc) nicht kennt oder Ich das ganze hier irgendwie falsch 
aufrufe.

Eine andere Vermutung ist das er den Treiber um den extrernen Flash zu 
flashen vermisst. Dazu gäbe es auch eine Anleitung bei VisualGDB:
https://visualgdb.com/tutorials/arm/stm32/flash/
Allerdings hatte ich gehofft das das nicht nötig ist.

Komischerweise läuft das Makefile sauber durch wenn ich es in dem 
TouchGFX Environment mache.
Nach dieser Anleitung:
https://touchgfx.zendesk.com/hc/en-us/articles/206116381-Using-other-IDEs-with-TouchGFX
unter Methode 1 beschrieben.

Das besagte Makefile ist auch im Anhang.
Bei Bedarf oder falls es jemand hilft kann ich auch das gesamte Projekt 
hochladen.

Vielleicht hat ja jemand einen Tipp :)
Ansonsten würde ich als nächstes wohl oder übel versuchen des External 
Flash loader irgendwie reinzubekommen :D

Grüße Stefan

von Dr. Sommer (Gast)


Lesenswert?

Stefan F. schrieb:
> Vermutung ist nun, dass entweder das aktuelle arm none eabi diesen einen
> Befehl nicht (wc) nicht kennt oder Ich das ganze hier irgendwie falsch
> aufrufe.

Der gehört überhaupt nicht zum GCC, sondern zu Unix ("Word Count"). 
Schau doch mal ob bei TouchGFX eine wc.exe dabei ist und füge deren 
Verzeichnis zur Path-Variable hinzu.

Genau hier offenbaren sich die Probleme von Code-Generatoren - 
anscheinend braucht man das makefile vom Generator, welches ein 
bestimmtes Tool braucht, die Integration wird schwierig... Wäre es nur 
eine "normale" Bibliothek die man nur inkluden/hinzulinken müsste, und 
würde man seine GUI mit handgeschriebenem Code bauen (bei vernünftigem 
API kein Problem), hätte man solche Probleme nicht.

von Stefan F. (friedi1987)


Lesenswert?

Hmm, auch ne interessante Thesis.

Aber, sieht das wirklich nach einem Programm-Aufruf aus?
1
ifeq ($(shell find "$(application_path)" -wholename "$(application_path)/$(binary_output_path)/extflash.bin" -size +0c | wc -l | xargs echo),1)
(Zeile 311)

von Dr. Sommer (Gast)


Lesenswert?

Stefan F. schrieb:
> Aber, sieht das wirklich nach einem Programm-Aufruf aus?

Ja. Es werden "find", "wc", "xargs" und "echo" aufgerufen.

von Dr. Sommer (Gast)


Lesenswert?

Genauer: es wird geprüft ob die Datei existiert und nicht leer ist. Auf 
etwas kuriose Art...

von Björn G. (tueftler)


Lesenswert?

Gleiches bei mir...
Ich bekomme es einfach nicht zum Laufen in Verbindung mit eigenem Code.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.