Forum: Mikrocontroller und Digitale Elektronik STMF4xxx - Welches RTOS welche GFX Engine?


von Christian J. (Gast)


Lesenswert?

Hi,

ich pack das mal in einen eigene Thread rein. Da ich mein Disco Board 
mal wieder belebt habe und auch EmBlocks wieder eingeichtet ist frage 
ich mal die, die es schon hinter sich haben:

Welches RTOS soll es denn sein? FreeRTOS oder ChibiOS/RT ?
Welche Grafiklib: StemWin oder ugFX?

Die Einarbeitung ist ja nicht ganz ohne, das API-Handbuch zu ChBiOS hat 
allein schon 600 Seiten.

Brauche ich dann zb immer noch die StdPeriph Libs? Oder kann ich andere 
einbinden wie meine von Tilen?

Egal was es auch ist, es muss sich in Emblocks realsieren lassen.

Gruss,
Christian

von Joel B. (Firma: µGFX) (tectu)


Lesenswert?

Hallo Christian,

Als Author des uGFX Projekts möchte ich dir natürlich gerne zu uGFX 
raten ;)
Gegenüber emWin ist der Quellcode der uGFX Bibliothek offen. Des 
Weiteren ist uGFX sehr Modular aufgebaut. Jedes Feature welches du nicht 
benutzt ist standardmässig deaktiviert und landet somit auch nicht in 
der kompilierten Datei.

Wenn du mit ChibiOS arbeitest brauchst du die StdPeriph Library (jetzt 
in STM32 CubeHAL umbenannt) nicht. ChibiOS bringt seinen eigenen HAL 
mit. Wenn du jedoch lieber einen anderen HAL verwenden möchtest ist das 
kein Problem: Seit der Version 3.x ist der ChibiOS Kernel und der 
ChibiOS HAL vollständig von einander entkoppelt (ChibiOS/RT und 
ChibiOS/HAL).

Ich habe selbst einige Projekte in Em::Blocks sowohl mit FreeRTOS als 
auch mit ChibiOS realisiert. Probleme hatte ich mit keinem davon.
Inzwischen gibt es in Em::Blocks auch ein Plug-in um ChibiOS/RT Projekte 
besser debuggen zu können (du siehst die liste an Threads, freie 
Speicherresourcen etc.).
Wenn du mit Em::Blocks arbeitest kannst du dich entweder dazu 
entscheiden ein externes Makefile zu benutzen oder die Dateien innerhalb 
des Projektmanagers von Em::Blocks hinzu zu fügen.
uGFX kommt von haus aus mit einem integrierten Makefile System. Wenn du 
dies nicht benuzten willst gibt es die "Single File"-Option: Du musst 
nur die gfx_mk.c Datei welche du im Hauptverzeichnis der uGFX Bibliothek 
findest hinzufügen und alle restichen benötigten Dateien werden 
automatisch inkludiert.

Egal für was du dich entscheiden wirst, uGFX kannst du auf alle Fälle 
benutzen. Sowohl ChibiOS als auch FreeRTOS sind von Haus aus 
unterstützt.
Welchen HAL du verwendest ist uGFX auch egal. Es gibt die sog. "Board 
Files" in welchen du ein paar wenige Funktionen implementieren musst 
welche die Kommunikation mit dem Display (oder auch Touchscreen) 
definieren. Beispielsweise gibt es da eine funktion welche ein Byte zum 
Display Controller sendet und du musst dann nur noch gucken dass das 
Byte auch wirklich ankommt.

Wenn du weitere Fragen zu uGFX hast helfen wir dir gerne im uGFX Forum 
weiter.


~ Tectu

von Christian J. (Gast)


Lesenswert?

Hallo Joel,

danke erstmal für die lange Mail, die ich mir erstmal abgelegt habe, 
damit sie hier nicht untergeht. Dass ich mit makefiles auf Kriegsfuss 
stehe, weil ich sie nicht verstehe und nicht slebst erstellen bzw 
editieren kann macht es vielleicht nicht leicher aber bisher ging es 
auch ohne, bzw mit "geklauten" Makefiles.

Wie das mit den eigenen .mk abläuft verstehe ich noch nicht ganz. 
EmBlocks nimmt ja normalerweise die Dateien aus dem Projekt, berechnet 
deren Abhängigkeiten und errzeugt daraus ein eigenes Make, mit dem man 
nichts zu tun hat. Wie es dann gehen soll, dass noch "Untermakes" 
ausgeführt werden weiss ich leider nicht.

Der Anfang ist immer der schwerste, vor allem wenn man es grad mal packt 
in Emblocks den Wizard zu bedienen und daraus ein Template zu erzeugen. 
naja, nicht ganz, ich habe da schon eigene Link Files erzeugt und auch 
die Debug möglichkeiten erweitert, bzw. den Startup Code modifiziert. 20 
Jahre mit Mikros können ja nicht umsonst gewesen sein.

Ich denke mal, dass er einfachste Start der ist, ein fertiges Template 
für Emblocks zu bekommen mit einer Demo drin, die einwandfrei 
durchkompiliert, wo alle Defines und sonstigen Einstellungen schon 
gemacht sind. So fange ich meist an und beginne dann meine Projekte auf 
sowas aufzubauen.

Vielleicht hadt Du ja ein "ordentliches" Template für das F429 Disco 
Board, welches Du bereitstellen kannst?


Gruss,
Christian

von Joel B. (Firma: µGFX) (tectu)


Lesenswert?

Hallo Christian,

Emm::Blocks bietet eine Option die sich "Use External/Existing Makefile" 
nennt. In dem Fall wird nichts anderes gemacht als dass Em::Blocks nur 
noch make mit definierbaren Parametern aufruft (es wird also dein 
bestehendes Makefile benutzt).

Wenn du Probleme mit Makefiles hast bietet dir uGFX auch da Hand an: Wir 
stellen ein Makefile template für ChibiOS zur Verfügung. In dem Makefile 
musst du nichts anderes machen als den Pfad zum uGFX Verzeichnis und den 
Pfad zum ChibiOS Verzeichnis anzugeben. Das Makefile wird dann 
automatisch im Hintergrund das uGFX Makefile- und das ChibiOS 
Makefile-System zusammenführen. Das klappt ganz gut und ist auch schon 
von einigen hundert Benutztern im Praxiseinsatz getestet worden.
Aber wie bei allem mit uGFX: Es ist vollständig optional und dem User 
überlassen ob er ein solches Feature benutzten will oder nicht. Für 
Benutzer die solche Abstrahierungen nicht mögen zeigen wir in der uGFX 
Dokumentation wie man ein bestehendes ChibiOS Makefile erweitern muss um 
uGFX zu verwenden.

Wenn du jedoch Makefiles wirklich garnicht magst empfehle ich dir es 
einfach nicht zu verwenden. Wie bereits erwähnt musst du innerhalb von 
Em::Blocks nur eine einzige Datei der uGFX Bibliothek einbinden und 
alles andere wird für dich erledigt (mittels klassischen #includes, 
keine versteckte Magie!).

Ich habe bereits Em::Blocks mit dem STM32F429i-Discovery board 
verwendet, jedoch ist das lange her und sowohl Em::Blocks als auch uGFX 
haben sich stark weiter entwickelt.
Wenn du ein paar Tage warten kannst kann ich dir ein Hello-World Projekt 
zusammenstellen.

Mein Persönlicher Rat: Wenn du nicht mit Makefiles arbeiten willst würde 
ich eher den CubeHAL zusammen mit FreeRTOS verwenden. ChibiOS besteht 
aus gefühlten 10 Millionen Dateien welche noch in unterschiedlichen 
Versionen daher kommen und es ist eine sehr sehr sehr langatmige Arbeit, 
jede Datei einzeln im Em::Blocks Dateibaum einzufügen. Ich weiss leider 
wovon ich spreche...
Da der Wizard von Em::Blocks bereits die CubeHAL Bibliothek mit 
einbindet und alle benötigten Dateien hinzufügt geht das recht 
schmerzlos. FreeRTOS selbst ist sehr klein und besteht aus nur einer 
handvoll Dateien welche sich mehr oder weniger alle im selben 
Verzeichnis finden.

Noch eine Überlegung: Bist du dir sicher, dass du ein RTOS für dein 
Vorhaben benutzten musst? Oftmals wird zu einem RTOS gegriffen obwohl 
dies eigentlich nicht nötig währe.
uGFX kann ohne probleme bare-metal ohne OS darunter benutzt werden.


~ Tectu

von Christian J. (Gast)


Lesenswert?

Joel B. schrieb:
> uGFX kann ohne probleme bare-metal ohne OS darunter benutzt werden.

Ja klar! Ich brauche kein OS drunter. Sonst würde ja direkt einen Raspi 
nehmen, der schon alles dabei hat.

Nur ein fertiges Template wäre toll (Fenster "Hello World", OK Button 
drunter und fertig, so als Anfang. Da kann man sich dann durchhangeln 
und sehen was wo und wie gemacht ist. Habe auch Zeit, werde mich erstmal 
einlesen in uFGX.

Nen Ansatz gab es ja schon mal:

http://www.emblocks.org/forum/viewtopic.php?f=26&t=524

von Joel B. (Firma: µGFX) (tectu)


Lesenswert?

Hallo Christian,

Ich werde in den nächsten Tagen ein bare-metal HelloWorld Projekt für 
das STM32F429i-Discovery in Em::Blocks zusammenstellen.
Diese Woche wird jedoch etwas stressig also sei mir bitte nicht böse 
wenn es vor nächstem Samstag Abend nichts wird.

Deine E-Mail Adresse habe ich ja jetzt ;)

Das Projekt von dem Forum-Thread den du gelink hast würde ich dir 
anraten zu ignorieren.


~ Tectu

von Dennis X. (Gast)


Lesenswert?

Hallo nochmal,
gerade eben diesen Thread in meinen Lesezeichen gefunden. Mich hat es 
damals sehr interessiert, geht es hier noch irgendwie weiter?

Grüße
Dennis

von Torsten S. (tse)


Lesenswert?

Würde mich auch interessieren...

von Christian J. (Gast)


Lesenswert?

Der Joel hat sich nie wieder gemeldet und inzwischen habe ich meine 
eigenen Widgets geschrieben.....

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.