Linux GUI auf ARM PXA270 mit wxWidgets
-
Ich habe das Thema
http://www.c-plusplus.net/forum/viewtopic-var-t-is-175103.html
in diesem Forum gelesen.Die Themen sind verwandt. In meinem Fall geht's wohl um eine getroffene Entscheidung: wxWidgets und GTK. Hat jemand eine Idee, was ich versuchen könnte?
Problembeschreibung
Ich entwickle ein graphisches Bedienfeld für eine Gerätefamilie basierend auf dem Toradex Colibri 520 (PXA270) Modul.
Das System soll unter Linux laufen. Die Geräte sind über CAN Bus - realisiert mit SJA1000 am Datenbus des Moduls – an das Colibri angeschlossen. Die Anzeige der Signale und die Bedienung der Geräte erfolgt mittels eines Touch Screens.
Dabei sind einige Software Probleme aufgetretten.
Die Reaktionszeit der Bedienoberfläche ist extrem lang. Genau gesagt, viele Funktionen der GTK+ laufen sehr langsam. Z.B. 70 ms pro Erstellen einer Eingabebox! Beim Erstellen eines kompletten Dialogs (mit 50 Eingabeboxen) kämen dann bis 10-12 s zusammen.
Eine andere langsame Funktion ist das Ändern der Beschriftung (Texte) der Tasten. Das dauert auch um die 70 ms pro Taste. Bei 10 Tasten wird’s schon um eine Sekunde.
Die Bedienoberfläche ist relativ einfach. Es geht um eine grafische Anzeige der Sensorsignale und ca 10 verschiedene Dialogboxen mit je 20-50 Eingabefeldern. Es kann max 1 Dialog zur Eingabe aktiviert werden. Es gibt keine Animationen, Datenbänke o.ä.
Konfiguration
Kernel Basis:
linux-2.4.29-vrs1—col2 wie es aus der Toradex Internet Seite kommt.
Kernel Anpassungen:
Treiber für CAN SJA1000T von Can4Linux an die Hardware angepasst.
Glibc
2.3.2 pxa27x mit Ihrem Patch von Toradex Download Seite angepasst.
Gcc
3.4.3 pxa-r1 mit Ihrem Patch von Toradex Download Seite angepasst.
X-Server:
Xfbdev über OE CVS 2006.03.12-r11 läuft auf dem fbdev. Fbdev ist mit 16 Bits 640x400.
X11, libX:
verschiedene X Bibliotheke X11R7.1 von September 2006
Glib 2:
2.12.1 über OE September 2006
GTK+
2.10.2 mit pango(1.14.0) + cairo(1.2.4) über OE
wxWidgets
2.6.3 über OE September 2006Die Bediensoftware (mit wxWidgets) habe ich auch für Windows und für Linux-x86 kompiliert. Sie läuft anwandfrei an 4 Jahre alten Rechnern mit 600 MHz Intel CPUs. Ich habe auch eine Windows CE Testapplikation für Colibri geschrieben. Dort lassen sich die Eingabefelder auch anwandfrei bedienen.
Ich habe mehrere Tests durchgeführt
1. X-Server an einem anderen Linux-Rechner. In diesem Fall lief die Aufbau der Dialoge NICHT schneller, als wenn der X-Server am gleichen Colibri Rechner laufen würde.
2. Kernel 2.6 statt 2.4. Kernel 2.6 hat leider mehrere notwendige Treiber nicht mehr. Z.B. die Unterstützung vom Touch Screen über UCB1400, Ändern der CPU Frequenz über die „proc“ Kernelinterface. Die Aufbau der Dialoge war aber gleich langsam.
3. Ich habe den FrameBuffer von 8 Bit (mit Palette) auf 16 Bit (ohne Palette) umgestellt. So spart man den Aufwand der Palette. Das hat eine deutliche Verbesserung beim Zeigen und Verstecken der Fenster gebracht. Die Aufbau der neuen Dialoge ist leider gleich langsam geblieben.
Welche Gründe könnte es für die extrem langsame Funktion des Linux Systems mit X-Server, GTK+ und wxWidgets geben?
Wäre es sinnvoll einen Versuch mit Qt-X oder Qt-Embedded durchzuführen?
Über einige Tips würde ich mich sehr freuen.
-
Hm, du hast da schon eine spezielle Kombination *g*
Sicher das die Latenzzeit nicht am Display liegt?
Wie sieht es mit anderen Programmen aus, die du startest, sind die auch langsam?
Hast du es schon mit einem reinen GTK Programm versucht?QT wäre eine Alternative, wobei es natürlich sein kann, das es genau die gleichen Probleme hat.
Evtl. suchst du auch mal bei Google, ob man GTK irgendwie beschleunigen kann.
Ansonsten, wie erstellst du deine Events (für die Buttons z.b.)?
Wie sieht dein Code aus, kannst du uns ein Beispielprogramm zum testen geben?Und, müssen es wirklich soviele Steuerelemente in einer Form sein?
Manchmal ist weniger mehr...
Evtl. lässt sich das Problem entschärfen, wenn man die Menge der Steuerelmente besser
Gruppiert, und dann auf ein Notebook verteilt.phlox
-
Hi,
habe auch ein Colibri Modul mit WindowsCE und ein mit Linux
U-boot:1.1.2
Kernel: linux-2.4.29-vrs1—pxa-intc4-col3Was für eine CPU hast Du 312 oder 520?
Deine App läuft Ok mit WinCE?
Was für ein TFT hast DU mit 640x400 Auflösung? Kenn ich nicht.
Kannst Du mir den Linux Image schicken? Ich würde es gerne ausprobieren.
Meine email ist: jamiro007@yahoo.com
Gruß
Javier
-
Hallo Aleksej,
Ich benutze auch ein Colibri PXA270, mit toradex evaluation board. Ich wollte auch can4linux fuer meine applikation benutzen. Was fuer ein TARGET hast du im Makefile benutzt? Gibt es ein TARGET zwischen den vorgeschlagenen, der gut ist fuer colibri PXA270?
Danke im voraus.
Nick
-
Schreib mal das simpelste Testprogramm, das du kriegen kannst und lass einen Profiler drauf los. Dann siehst du ja, wo das Programm "hängt".