Software developers for embedded devices have just now begun to discover the power of developing and running their software on GNU/Linux.
As graphical environments on embedded devices have also become a crucial point for any kind of application it is majorly important to use a stable and flexible graphics system for this purpose.
Therefore, this paper makes the far-reaching attempt at explaining, describing and elaborating on Nano-X, THE free and OpenSource graphical windowing environment of choice for smaller devices.
Unfortunately, up to this point, material concerning good and complete introductions to the Nano-X API is rarely to be found. With this paper a resourceful piece of collected and easy-to-understand compact knowledge base has been compiled for practical or any other kind of use.
As this paper has been intentionally written to be used within the frames of software development for analytical gadgets, a concrete device, that is the Open Frame Smart Panel (OFSP) from Ultratronik, is taken under scrutiny and shown to be a viable device for the tasks at hand.
Furthermore, some additionally relevant topics concerning Unix (especially serial port communication) are also discussed in some detail.
Inhaltsverzeichnis
Einleitung
1 Grundlegendes
1.1 Software und Analysetechnik
1.2 Problemstellung
2 Hardware
2.1 OFSP — Open Frame Smart Panel
3 Betriebssoftware
3.1 Embedded-Systems
3.2 Windows CE™
3.3 Ultratronik Linux Distribution
3.4 X-Window Systeme
3.5 Cross-Compiler
4 Nano-X — Die schlanke X-Window Variante
4.1 Gesamtüberblick
4.2 Lizenz und Bedingungen
4.3 Einrichtung des Systems
4.4 Einführung in die Nano-X Programmierbibliothek
4.4.1 Fenster
4.4.2 Graphische Kontexte
4.4.3 Ereignisse
4.4.3.1 Ereignistypen
4.4.3.2 Ereignisverarbeitung
4.4.3.3 Ereignisorientierte Anwendungsprogrammierung
4.5 Der Nano-X Server
4.6 Nano-X API und Microwindows API
4.6.1 Kernkonzepte im Vergleich
4.6.2 Nano-X API oder Microwindows API — Ein Fazit
4.7 State Saver — Visueller Zustandsspeicher
4.7.1 Verwendung
4.7.2 Funktionsweise
4.7.3 Kompilierungshinweise
4.8 dkbd — Eine virtuelle Tastatur für das OFSP
4.8.1 Anwendungskonzeption
4.8.2 Programmiertechnische Umsetzung
4.8.2.1 Abstrakt
4.8.2.2 Grundlegender Code
4.8.2.3 Ereignisverarbeitender Code
4.9 Die TinyWidgets Bibliothek
4.9.0.4 Grundlegendes
4.9.0.5 Grundlegende Verwendung
5 Zusammenfassung
6 Ausblick
A Anhang I
A.1 Linux Serialschnittstellenkommunikation
A.1.1 Grundlegendes
A.1.2 Überprüfung der Schnittstellenfunktionalität
A.1.3 Programmierung
B Anhang II
B.1 Nano-X Kurzreferenz
B.1.1 Fenstereigenschaften
B.1.2 Ereignisstrukturen und Ereignistypen
B.1.3 Nano-X Zeichenroutinen
C Anhang III
C.1 Quelltext der virtuellen Tastatur „dkbd“
C.1.0.1 Quelltext-Datei dkbd.h
C.1.0.2 Quelltext-Datei dkbd.c
C.1.0.3 Quelltext-Datei stuff.c
C.2 Der Zustandsspeichers „state saver“
C.2.1 Hinweise zur Verwendung
C.2.1.1 Package description
C.2.1.2 Package use
C.2.2 Quelltext einer Beispielanwendung
C.2.3 Quelltext des Zustandsspeichers
C.3 Quelltext eines einfachen Nano-X Ladebalkens
C.3.1 Header-Datei sbar.h
C.3.2 Quelltext-Datei sbar.c
C.4 Quelltext der Tiny-Widgets und Serialport-Testanwendung
Zielsetzung & Themen
Die vorliegende Arbeit setzt sich zum Ziel, eine fundierte Wissensbasis und einen Einstiegspunkt für die Entwicklung von Embedded-Linux-Anwendungen für das Open Frame Smart Panel (OFSP) von Ultratronik zu schaffen. Dabei liegt der Fokus auf der Überwindung von Wissenslücken bei der Nutzung der Nano-X-Bibliothek für graphische Applikationen in analytischen Geräten.
- Grundlagen der Embedded-Systems und der Linux-Architektur für industrielle Anwendungsgeräte
- Einsatz des Nano-X-Window-Systems als leichtgewichtige Alternative zu X11 für ressourcenarme Hardware
- Entwicklung und Implementierung graphischer Benutzeroberflächen unter Verwendung von Nano-X
- Praktische Erweiterungen wie der "State Saver" zur permanenten Fensterinhaltsverwaltung
- Entwicklung einer virtuellen Tastatur ("dkbd") und Nutzung der TinyWidgets-Bibliothek
- Programmierung der seriellen Schnittstelle zur Kommunikation mit externen Messgeräten unter Linux
Auszug aus dem Buch
4.4 Einführung in die Nano-X Programmierbibliothek
Da die Nano-X API in der Programmiersprache C implementiert wurde, handelt es sich bei dieser auch um die Sprache, in welcher Nano-X Anwendungen generell geschrieben werden, so auch in dieser Arbeit.
Mit dem Ziel, einen ersten Überblick über das Arbeiten mit der Nano-X API zu bekommen, wird hier der Quelltext einer einfachen Nano-X Anwendung angebracht, welcher allerdings bereits viele wichtige Kernpunkte der Programmierung beinhaltet.
1 #include <stdio.h>
2 /* Nano-X Farben sollen verwendet werden */
3 #define MWINCLUDECOLORS
4 /* Inkludiere Nano-X Header-Dateien */
5 #include <microwin/nano-X.h>
6 #include <microwin/nxcolors.h>
7
8 int main(int arc, char **argv)
9 {
10 /* Deklaration eines Fensters (Window) */
11 GR_WINDOW_ID fenster;
12 /* Deklaration eines c */
13 GR_GC_ID gk;
14 /* Deklaration eines Ereignisses (Event) */
15 GR_EVENT ereignis;
16
17 /* Stelle Verbindung zum Nano-X Server her */
18 GrOpen();
Zusammenfassung der Kapitel
Einleitung: Beschreibt die Herausforderungen bei der Wahl von Software-Entwicklungswerkzeugen für Industrieunternehmen und motiviert die Erarbeitung einer soliden Basis für Nano-X-Anwendungen auf dem OFSP.
1 Grundlegendes: Analysiert den Bedarf an effizienten, nicht-proprietären Softwarelösungen für Mess- und Analysegeräte in produktorientierten Unternehmen.
2 Hardware: Stellt das "Open Frame Smart Panel" (OFSP) als vollwertiges Embedded-System mit Touchscreen vor, das sich für MMI-Aufgaben eignet.
3 Betriebssoftware: Unterscheidet zwischen proprietärem Windows CE und der Linux-basierten Alternative, wobei die Bedeutung von Cross-Compilern für MIPS-Architekturen hervorgehoben wird.
4 Nano-X — Die schlanke X-Window Variante: Erläutert das Mehr-Schichten-Prinzip von Nano-X und führt detailliert in die API, Ereignisverarbeitung sowie praktische Erweiterungen wie den "State Saver" und die virtuelle Tastatur "dkbd" ein.
5 Zusammenfassung: Fasst die Kernaussagen zur Implementierung von Nano-X und der Hardware-Kommunikation in Embedded-Szenarien zusammen.
6 Ausblick: Reflektiert über den Nutzen der Arbeit für zukünftige Entwickler und den Beitrag zur Förderung von OpenSource im industriellen Umfeld.
Schlüsselwörter
Embedded Linux, Nano-X, OFSP, Ultratronik, Microwindows, graphische Benutzeroberfläche, C-Programmierung, serielle Schnittstelle, Cross-Compiler, Window Manager, Softwareentwicklung, OpenSource, GUI, Event-Handling, Zustandsverwaltung
Häufig gestellte Fragen
Worum geht es in dieser Arbeit?
Die Arbeit befasst sich mit der Entwicklung von graphischen Anwendungen für das Embedded-Gerät OFSP von Ultratronik unter Verwendung des Nano-X Window-Systems.
Welche zentralen Themenfelder werden behandelt?
Im Zentrum stehen die Programmierung unter Linux für Embedded-Systeme, der Einsatz von Nano-X als GUI-Bibliothek, die Ansteuerung der seriellen Schnittstelle und die Entwicklung spezifischer Hilfsmittel wie virtueller Tastaturen.
Was ist das primäre Ziel der Arbeit?
Das Hauptziel ist es, eine strukturierte Wissensbasis zu schaffen und praktische Vorarbeiten für Entwickler zu leisten, die für die Nano-X-Programmierung bisher nur wenig Dokumentation vorfinden.
Welche wissenschaftliche Methode wird verwendet?
Es handelt sich um eine technologische Untersuchung und Implementierungsarbeit, bei der bestehende Konzepte evaluiert, Beispielapplikationen entwickelt und die Resultate dokumentiert werden.
Was wird im Hauptteil der Arbeit behandelt?
Der Hauptteil gliedert sich in eine Hardware-Vorstellung, den Vergleich von Betriebssystem-Ansätzen (Windows CE vs. Linux), die theoretische und praktische Einführung in Nano-X sowie die Dokumentation von Erweiterungen wie "State Saver" und "dkbd".
Welche Schlüsselwörter charakterisieren die Arbeit?
Die Arbeit wird primär durch Begriffe wie Embedded Linux, Nano-X, OFSP, graphische Benutzerschnittstellen und C-Programmierung geprägt.
Was leistet die "State Saver"-Erweiterung genau?
Die Erweiterung speichert temporär den visuellen Zustand eines Fensters, um bei Überlappungen oder Sichtbarkeitsereignissen ein effizientes Wiederherstellen des Inhalts ohne aufwendiges, CPU-lastiges Neuzeichnen zu ermöglichen.
Warum wird Nano-X gegenüber der Microwindows API bevorzugt?
Nano-X ist näher an der Standard-Xlib orientiert, bietet eine bessere Dokumentation, Erweiterbarkeit durch TinyWidgets und ist unter Linux-Host-Systemen für Testzwecke besser integrierbar.
- Arbeit zitieren
- Sören Wellhöfer (Autor:in), 2008, Embedded Linux mit Nano-X, München, GRIN Verlag, https://www.hausarbeiten.de/document/120447