Hallo, ich hätte mal gerne eine Einschätzung von euch erfahrenen Embedded Linux Entwicklern. Mein System soll bestehen aus: AT91SAM9G45 Prozessor mit 400MHz 128MB DDR2 RAM an EBI1 256MB NAND an EBI2 640x480 TFT am internen LCD-Controller (ohne Touchscreen, stattdessen:) ein paar Drehgeber und Tasten an den GPIO Und natürlich die üblichen Schnittstellen, Ethernet, USB, seriell etc. Die Applikation ist eine Industriesteuerung, bei der Prozessdaten visualisiert werden sollen. Die Daten werden dargestellt auf nachgebildeten Analoginstrumenten und Balkendiagrammen. Es existiert eine Anwendung von meinem Vorgänger, die auf GTK+ im Linux Framebuffer basiert. Gerendert wird das Bild mittels cairo. Auf einem PC läuft das flüssig und erreicht ausreichende Framerates. Die Anwendung ist von einem guten Programmierer recht effizient umgesetzt, jedenfalls ist es eine Freude, den Quelltext zu lesen und zu verstehen. Im Gegensatz zu dem, was man meistens so zu lesen bekommt. Meine Frage wäre jetzt, bekommt ich eine solche Applikation (GTK, Cairo) auf dem Linux Embedded System in akzeptabler Geschwindigkeit zum Laufen oder brauche ich da mehr Rechenpower?
Richard schrieb: > Und natürlich die üblichen Schnittstellen, Ethernet, USB, seriell etc. > > Die Applikation ist eine Industriesteuerung, bei der Prozessdaten > visualisiert werden sollen. Die Daten werden dargestellt auf > nachgebildeten Analoginstrumenten und Balkendiagrammen. > > Es existiert eine Anwendung von meinem Vorgänger, die auf GTK+ im Linux > Framebuffer basiert. Gerendert wird das Bild mittels cairo. Auf einem PC > läuft das flüssig und erreicht ausreichende Framerates. Die Anwendung > ist von einem guten Programmierer recht effizient umgesetzt, jedenfalls > ist es eine Freude, den Quelltext zu lesen und zu verstehen. Im > Gegensatz zu dem, was man meistens so zu lesen bekommt. > > Meine Frage wäre jetzt, bekommt ich eine solche Applikation (GTK, Cairo) > auf dem Linux Embedded System in akzeptabler Geschwindigkeit zum Laufen > oder brauche ich da mehr Rechenpower? Mal eine voellig unsinnige Verallgemeinerung, das geht alles locker, abhaengig von Deiner Definition von "ausreichend", "akzeptabel" und ob aller Code auch immer im DDR RAM ist. "Auf einem PC läuft das flüssig und erreicht ausreichende Framerates." Ich hab hier ein paar PCs und Laptops rumstehen, zwischen dem langsamsten und dem schnellsten sind >> Faktor 10 an Verarbeitungsgeschwindigkeit drin. Also mit was fuer einem PC vergleichst Du... Die Definitionen sollten schon etwas eindeutiger sein damit jemand eine bessere Antwort als die meinige posten kann. Aus dem Bauchfaktor heraus wuerde ich sagen dass alles laeuft aber die Frame Rate koennte nicht ausreichend oder unakzeptabel sein. Robert p.s. ist wirklich nicht boese gemeint.
Ok, ich sehe es ein, das war nicht besonders konkret. Lassen wir den PC-Vergleich und die existierende Software mal beiseite. Würdest du ein solches System - also ARM 9 mit DDR2 und 400 MHz - eingebauter LCD-Controller ohne HW-Beschleunigung für fähig halten, analoge Anzeigen mit einer Framerate von > 20 fps zu rendern? Oder nochmal anders, hat jemand Erfahrung mit gtk2.0 auf Framebuffer im Embedded-Bereich? Was kann man da für Leistungen erwarten?
Ich würde empfehlen, das AT91SAM9G45-EKES zu kaufen und es auszuprobieren. Linux ist schon bei, sodaß du wahrscheinlich recht leicht eine einfache GTK-Anwendung zum laufen bringen kannst. Aus meiner Erfahrung: Ich habe mal mit dem AT91SAM9G20 eine Anwendung programmiert, allerdings mit externem Grafikbeschleuniger und Qt. Wenn man mit Qt zeichnet, ins SDRAM, dann bekommt man keinen vollständigen Bildschirmupdate bei 640x480 mit 60 Hz hin. Liegt je nach Komplexität eher bei 5 Hz oder so für einen vollen Bildschirmupdate mit ein paar dutzend Grafikelementen. Bei Balkenanzeigen kannst du aber einiges tricksen, z.B. erstmal alles drumherum einmal zeichnen und dann nur inkrementell aktualisieren, mit mehreren Framebuffern und Offscreen-Images. Das geht dann locker mit 60 Hz. Müsste mit Cairo auch zu schaffen sein, allerdings richte dich schonmal darauf ein, ein wenig Low-Level Code zu schreiben, der kein Cairo verwendet und direkt Teile von Offscreen-Images in den Framebuffer kopiert. Kann aber auch sein, daß DDR RAM einiges an Geschwindigkeit bringt und du nur Cairo brauchst. Für ein flüssiges Update brauchst du aber noch Double-Buffering. War bei meinem Projekt nicht ganz so einfach, das mit Qt unter einen Hut zu bringen, aber vielleicht geht das mit GTK einfacher.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.