PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Linux GUI auf ARM PXA270 mit wxWidgets



Alexej
21-03-2007, 20:24
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 2006

Die 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.

anda_skoa
21-03-2007, 21:30
Ich glaube es gibt (oder gab) eine Version von wxWidgets für X11, die auf etwas anderes als GTK+ aufbaut.

Man könnte diese Version mal probeweise einsetzten, um zu sehen, ob vielleicht GTK+ die Bremse ist (im Java Forum gibt es ähnliche Beobachtungen bezüglich GTK+ basiertes SWT)

Vielleicht läßt sich auch das angepasste GTK+ von Maemo besorgen (d.h. die auf Nokias N770 und N800 eingesetzte Framework)

Ciao,
_