Embedded Linux Open Frame Smart Panel (OFSP) von Ultratronik mit Nano-X f¨ ur analytische Ger¨ ate 13 — 01 — 2009 S¨ oren Wellh¨ ofer
Jun 08, 2015
Embedded LinuxOpen Frame Smart Panel (OFSP) von Ultratronik
mit Nano-Xfur analytische Gerate
13—01—2009
Soren Wellhofer
OpenSourceHard- und Software
Nano-XUnix
Quellen
Gliederung
1 OpenSource
2 Hard- und Software
3 Nano-X
4 Unix
5 Quellen
Soren Wellhofer Embedded Linux mit Nano-X - Open Frame Smart Panel (OFSP) von Ultratronik fur analytische Gerate
OpenSource
Vorteile
• Geringe Kosten
• OpenSource-Community
• Stabilitat vonSource-Code
• Source-Wiederverwertung
• Unterstutzung
• KeineLizenz-Gebundenheit
• KeineMaintainance-Kosten
Nachteile
• Kein Support
• Konkurrenz / Ausnutzung
• Einarbeitung / Umstieg
• Hardware-Unterstutzung
• Lizenzen
• Keine Garantie
”There is NO warranty; not
even forMERCHANTABILITY orFITNESS FOR APARTICULAR PURPOSE.“
Vorteile
• Geringe Kosten
• OpenSource-Community• Stabilitat von
Source-Code
• Source-Wiederverwertung
• Unterstutzung
• KeineLizenz-Gebundenheit
• KeineMaintainance-Kosten
Nachteile
• Kein Support
• Konkurrenz / Ausnutzung
• Einarbeitung / Umstieg
• Hardware-Unterstutzung
• Lizenzen
• Keine Garantie
”There is NO warranty; not
even forMERCHANTABILITY orFITNESS FOR APARTICULAR PURPOSE.“
Vorteile
• Geringe Kosten
• OpenSource-Community• Stabilitat von
Source-Code• Source-
Wiederverwertung
• Unterstutzung
• KeineLizenz-Gebundenheit
• KeineMaintainance-Kosten
Nachteile
• Kein Support
• Konkurrenz / Ausnutzung
• Einarbeitung / Umstieg
• Hardware-Unterstutzung
• Lizenzen
• Keine Garantie
”There is NO warranty; not
even forMERCHANTABILITY orFITNESS FOR APARTICULAR PURPOSE.“
Vorteile
• Geringe Kosten
• OpenSource-Community• Stabilitat von
Source-Code• Source-
Wiederverwertung• Unterstutzung
• KeineLizenz-Gebundenheit
• KeineMaintainance-Kosten
Nachteile
• Kein Support
• Konkurrenz / Ausnutzung
• Einarbeitung / Umstieg
• Hardware-Unterstutzung
• Lizenzen
• Keine Garantie
”There is NO warranty; not
even forMERCHANTABILITY orFITNESS FOR APARTICULAR PURPOSE.“
Vorteile
• Geringe Kosten
• OpenSource-Community• Stabilitat von
Source-Code• Source-
Wiederverwertung• Unterstutzung
• KeineLizenz-Gebundenheit
• KeineMaintainance-Kosten
Nachteile
• Kein Support
• Konkurrenz / Ausnutzung
• Einarbeitung / Umstieg
• Hardware-Unterstutzung
• Lizenzen
• Keine Garantie
”There is NO warranty; not
even forMERCHANTABILITY orFITNESS FOR APARTICULAR PURPOSE.“
Vorteile
• Geringe Kosten
• OpenSource-Community• Stabilitat von
Source-Code• Source-
Wiederverwertung• Unterstutzung
• KeineLizenz-Gebundenheit
• KeineMaintainance-Kosten
Nachteile
• Kein Support
• Konkurrenz / Ausnutzung
• Einarbeitung / Umstieg
• Hardware-Unterstutzung
• Lizenzen
• Keine Garantie
”There is NO warranty; not
even forMERCHANTABILITY orFITNESS FOR APARTICULAR PURPOSE.“
Vorteile
• Geringe Kosten
• OpenSource-Community• Stabilitat von
Source-Code• Source-
Wiederverwertung• Unterstutzung
• KeineLizenz-Gebundenheit
• KeineMaintainance-Kosten
Nachteile
• Kein Support
• Konkurrenz / Ausnutzung
• Einarbeitung / Umstieg
• Hardware-Unterstutzung
• Lizenzen
• Keine Garantie
”There is NO warranty; not
even forMERCHANTABILITY orFITNESS FOR APARTICULAR PURPOSE.“
Vorteile
• Geringe Kosten
• OpenSource-Community• Stabilitat von
Source-Code• Source-
Wiederverwertung• Unterstutzung
• KeineLizenz-Gebundenheit
• KeineMaintainance-Kosten
Nachteile
• Kein Support
• Konkurrenz / Ausnutzung
• Einarbeitung / Umstieg
• Hardware-Unterstutzung
• Lizenzen
• Keine Garantie
”There is NO warranty; not
even forMERCHANTABILITY orFITNESS FOR APARTICULAR PURPOSE.“
Vorteile
• Geringe Kosten
• OpenSource-Community• Stabilitat von
Source-Code• Source-
Wiederverwertung• Unterstutzung
• KeineLizenz-Gebundenheit
• KeineMaintainance-Kosten
Nachteile
• Kein Support
• Konkurrenz / Ausnutzung
• Einarbeitung / Umstieg
• Hardware-Unterstutzung
• Lizenzen
• Keine Garantie
”There is NO warranty; not
even forMERCHANTABILITY orFITNESS FOR APARTICULAR PURPOSE.“
Vorteile
• Geringe Kosten
• OpenSource-Community• Stabilitat von
Source-Code• Source-
Wiederverwertung• Unterstutzung
• KeineLizenz-Gebundenheit
• KeineMaintainance-Kosten
Nachteile
• Kein Support
• Konkurrenz / Ausnutzung
• Einarbeitung / Umstieg
• Hardware-Unterstutzung
• Lizenzen
• Keine Garantie
”There is NO warranty; not
even forMERCHANTABILITY orFITNESS FOR APARTICULAR PURPOSE.“
Vorteile
• Geringe Kosten
• OpenSource-Community• Stabilitat von
Source-Code• Source-
Wiederverwertung• Unterstutzung
• KeineLizenz-Gebundenheit
• KeineMaintainance-Kosten
Nachteile
• Kein Support
• Konkurrenz / Ausnutzung
• Einarbeitung / Umstieg
• Hardware-Unterstutzung
• Lizenzen
• Keine Garantie
”There is NO warranty; not
even forMERCHANTABILITY orFITNESS FOR APARTICULAR PURPOSE.“
Vorteile
• Geringe Kosten
• OpenSource-Community• Stabilitat von
Source-Code• Source-
Wiederverwertung• Unterstutzung
• KeineLizenz-Gebundenheit
• KeineMaintainance-Kosten
Nachteile
• Kein Support
• Konkurrenz / Ausnutzung
• Einarbeitung / Umstieg
• Hardware-Unterstutzung
• Lizenzen
• Keine Garantie
”There is NO warranty; not
even forMERCHANTABILITY orFITNESS FOR APARTICULAR PURPOSE.“
Vorteile
• Geringe Kosten
• OpenSource-Community• Stabilitat von
Source-Code• Source-
Wiederverwertung• Unterstutzung
• KeineLizenz-Gebundenheit
• KeineMaintainance-Kosten
Nachteile
• Kein Support
• Konkurrenz / Ausnutzung
• Einarbeitung / Umstieg
• Hardware-Unterstutzung
• Lizenzen
• Keine Garantie
”There is NO warranty; not
even forMERCHANTABILITY orFITNESS FOR APARTICULAR PURPOSE.“
Vorteile
• Geringe Kosten
• OpenSource-Community• Stabilitat von
Source-Code• Source-
Wiederverwertung• Unterstutzung
• KeineLizenz-Gebundenheit
• KeineMaintainance-Kosten
Nachteile
• Kein Support
• Konkurrenz / Ausnutzung
• Einarbeitung / Umstieg
• Hardware-Unterstutzung
• Lizenzen
• Keine Garantie
”There is NO warranty; not
even forMERCHANTABILITY orFITNESS FOR APARTICULAR PURPOSE.“
Vorteile
• Geringe Kosten
• OpenSource-Community• Stabilitat von
Source-Code• Source-
Wiederverwertung• Unterstutzung
• KeineLizenz-Gebundenheit
• KeineMaintainance-Kosten
Nachteile
• Kein Support
• Konkurrenz / Ausnutzung
• Einarbeitung / Umstieg
• Hardware-Unterstutzung
• Lizenzen
• Keine Garantie
”There is NO warranty; not
even forMERCHANTABILITY orFITNESS FOR APARTICULAR PURPOSE.“
GNU General Public License
• Starkes Copyleft
• Software-Derivate unter GPL
• Garantiert”Freiheit von Software“
”Free as in Freedom“
• 4 Grund-Freiheiten:
1 Ausfuhren
2 Anpassen
3 Verteilen
4 Verbessern
Quelltextjedem
zuganglich!
GNU General Public License
• Starkes Copyleft
• Software-Derivate unter GPL
• Garantiert”Freiheit von Software“
”Free as in Freedom“
• 4 Grund-Freiheiten:
1 Ausfuhren
2 Anpassen
3 Verteilen
4 Verbessern
Quelltextjedem
zuganglich!
GNU General Public License
• Starkes Copyleft
• Software-Derivate unter GPL
• Garantiert”Freiheit von Software“
”Free as in Freedom“
• 4 Grund-Freiheiten:
1 Ausfuhren
2 Anpassen
3 Verteilen
4 Verbessern
Quelltextjedem
zuganglich!
GNU General Public License
• Starkes Copyleft
• Software-Derivate unter GPL
• Garantiert”Freiheit von Software“
”Free as in Freedom“
• 4 Grund-Freiheiten:
1 Ausfuhren
2 Anpassen
3 Verteilen
4 Verbessern
Quelltextjedem
zuganglich!
GNU General Public License
• Starkes Copyleft
• Software-Derivate unter GPL
• Garantiert”Freiheit von Software“
”Free as in Freedom“
• 4 Grund-Freiheiten:
1 Ausfuhren
2 Anpassen
3 Verteilen
4 Verbessern
Quelltextjedem
zuganglich!
Hard- und Software
”Eingebettetes System“
• Technischer Kontext
• Steuern, Regeln, Uberwachen
• In PKWs, TVs, DVD-Playern, Handys, ...
”Eingebettete Software“
• Hardware-speziell und -restriktiv
• Aufgaben-spezifisch
=⇒ Nicht-universell
”Eingebettetes System“
• Technischer Kontext
• Steuern, Regeln, Uberwachen
• In PKWs, TVs, DVD-Playern, Handys, ...
”Eingebettete Software“
• Hardware-speziell und -restriktiv
• Aufgaben-spezifisch
=⇒ Nicht-universell
”Eingebettetes System“
• Technischer Kontext
• Steuern, Regeln, Uberwachen
• In PKWs, TVs, DVD-Playern, Handys, ...
”Eingebettete Software“
• Hardware-speziell und -restriktiv
• Aufgaben-spezifisch
=⇒ Nicht-universell
”Eingebettetes System“
• Technischer Kontext
• Steuern, Regeln, Uberwachen
• In PKWs, TVs, DVD-Playern, Handys, ...
”Eingebettete Software“
• Hardware-speziell und -restriktiv
• Aufgaben-spezifisch
=⇒ Nicht-universell
”Eingebettetes System“
• Technischer Kontext
• Steuern, Regeln, Uberwachen
• In PKWs, TVs, DVD-Playern, Handys, ...
”Eingebettete Software“
• Hardware-speziell und -restriktiv
• Aufgaben-spezifisch
=⇒ Nicht-universell
”Eingebettetes Betriebssystem“
• Kompakte, kleine und effiziente Echtzeit-Betriebssysteme
• Steueraufgaben: Programme
=⇒ Universell und Integrierbar
”Eingebettetes Betriebssystem“
• Kompakte, kleine und effiziente Echtzeit-Betriebssysteme
• Steueraufgaben: Programme
=⇒ Universell und Integrierbar
”Eingebettetes Betriebssystem“
• Kompakte, kleine und effiziente Echtzeit-Betriebssysteme
• Steueraufgaben: Programme
=⇒ Universell und Integrierbar
Windows Embedded
• Support
• Hardware-Unterstutzung
• OEM-Versionen
Embedded Linux
• Optimierbar
• Viele Architekturen
• Kernel-Modularitat
• OpenSource Tools
Windows Embedded
• Support
• Hardware-Unterstutzung
• OEM-Versionen
Embedded Linux
• Optimierbar
• Viele Architekturen
• Kernel-Modularitat
• OpenSource Tools
Windows Embedded
• Support
• Hardware-Unterstutzung
• OEM-Versionen
Embedded Linux
• Optimierbar
• Viele Architekturen
• Kernel-Modularitat
• OpenSource Tools
Windows Embedded
• Support
• Hardware-Unterstutzung
• OEM-Versionen
Embedded Linux
• Optimierbar
• Viele Architekturen
• Kernel-Modularitat
• OpenSource Tools
Windows Embedded
• Support
• Hardware-Unterstutzung
• OEM-Versionen
Embedded Linux
• Optimierbar
• Viele Architekturen
• Kernel-Modularitat
• OpenSource Tools
Windows Embedded
• Support
• Hardware-Unterstutzung
• OEM-Versionen
Embedded Linux
• Optimierbar
• Viele Architekturen
• Kernel-Modularitat
• OpenSource Tools
Windows Embedded
• Support
• Hardware-Unterstutzung
• OEM-Versionen
Embedded Linux
• Optimierbar
• Viele Architekturen
• Kernel-Modularitat
• OpenSource Tools
Windows Embedded
• Support
• Hardware-Unterstutzung
• OEM-Versionen
Embedded Linux
• Optimierbar
• Viele Architekturen
• Kernel-Modularitat
• OpenSource Tools
Open Frame Smart Panel
• MIPS Prozessor 131 MHz
• 64 MB SDRAM, 32 MB Flash
• 5.7”320x240 QVGA Touchscreen
• 1 x 10/100 MBit Ethernet
• 1 x USB
• 2 x RS232 Serielle Schnittstellen
• Klein, Gunstig und Leistungsstark
Open Frame Smart Panel
• MIPS Prozessor 131 MHz
• 64 MB SDRAM, 32 MB Flash
• 5.7”320x240 QVGA Touchscreen
• 1 x 10/100 MBit Ethernet
• 1 x USB
• 2 x RS232 Serielle Schnittstellen
• Klein, Gunstig und Leistungsstark
Open Frame Smart Panel
• MIPS Prozessor 131 MHz
• 64 MB SDRAM, 32 MB Flash
• 5.7”320x240 QVGA Touchscreen
• 1 x 10/100 MBit Ethernet
• 1 x USB
• 2 x RS232 Serielle Schnittstellen
• Klein, Gunstig und Leistungsstark
Open Frame Smart Panel
• MIPS Prozessor 131 MHz
• 64 MB SDRAM, 32 MB Flash
• 5.7”320x240 QVGA Touchscreen
• 1 x 10/100 MBit Ethernet
• 1 x USB
• 2 x RS232 Serielle Schnittstellen
• Klein, Gunstig und Leistungsstark
Open Frame Smart Panel
• MIPS Prozessor 131 MHz
• 64 MB SDRAM, 32 MB Flash
• 5.7”320x240 QVGA Touchscreen
• 1 x 10/100 MBit Ethernet
• 1 x USB
• 2 x RS232 Serielle Schnittstellen
• Klein, Gunstig und Leistungsstark
Windows CE
• Schlanker Kernel
• Komponenten-basierend
• Teilweise Quellcode
• Entwicklungsumgebungen
• Microwindows (Nano-X)
Windows CE
• Schlanker Kernel
• Komponenten-basierend
• Teilweise Quellcode
• Entwicklungsumgebungen
• Microwindows (Nano-X)
Windows CE
• Schlanker Kernel
• Komponenten-basierend
• Teilweise Quellcode
• Entwicklungsumgebungen
• Microwindows (Nano-X)
Windows CE
• Schlanker Kernel
• Komponenten-basierend
• Teilweise Quellcode
• Entwicklungsumgebungen
• Microwindows (Nano-X)
Windows CE
• Schlanker Kernel
• Komponenten-basierend
• Teilweise Quellcode
• Entwicklungsumgebungen
• Microwindows (Nano-X)
Windows CE
• Schlanker Kernel
• Komponenten-basierend
• Teilweise Quellcode
• Entwicklungsumgebungen
• Microwindows (Nano-X)
Ultratronik (Debian) Linux
• Modifiziertes und reduziertesDebian
• GNU Tools und Bibliotheken
• Linux Kernel Trees fur OFSP
• Root-Dateisystem
• Microwindows (Nano-X)
Ultratronik (Debian) Linux
• Modifiziertes und reduziertesDebian
• GNU Tools und Bibliotheken
• Linux Kernel Trees fur OFSP
• Root-Dateisystem
• Microwindows (Nano-X)
Ultratronik (Debian) Linux
• Modifiziertes und reduziertesDebian
• GNU Tools und Bibliotheken
• Linux Kernel Trees fur OFSP
• Root-Dateisystem
• Microwindows (Nano-X)
Ultratronik (Debian) Linux
• Modifiziertes und reduziertesDebian
• GNU Tools und Bibliotheken
• Linux Kernel Trees fur OFSP
• Root-Dateisystem
• Microwindows (Nano-X)
Ultratronik (Debian) Linux
• Modifiziertes und reduziertesDebian
• GNU Tools und Bibliotheken
• Linux Kernel Trees fur OFSP
• Root-Dateisystem
• Microwindows (Nano-X)
Ultratronik (Debian) Linux
• Modifiziertes und reduziertesDebian
• GNU Tools und Bibliotheken
• Linux Kernel Trees fur OFSP
• Root-Dateisystem
• Microwindows (Nano-X)
Nano-X
Nano-X – Ein schlankes graphisches System
”The Nano-X Window System is an Open Source
project aimed at bringing the features of moderngraphical windowing environments to smaller devicesand platforms.“
”... Open Source ... “
”... modern graphical windowing environments ... “
”... smaller devices ... “
Graphics Windowing Standard fur Embedded Linux
Nano-X – Ein schlankes graphisches System
”The Nano-X Window System is an Open Source
project aimed at bringing the features of moderngraphical windowing environments to smaller devicesand platforms.“
”... Open Source ... “
”... modern graphical windowing environments ... “
”... smaller devices ... “
Graphics Windowing Standard fur Embedded Linux
Nano-X – Ein schlankes graphisches System
”The Nano-X Window System is an Open Source
project aimed at bringing the features of moderngraphical windowing environments to smaller devicesand platforms.“
”... Open Source ... “
”... modern graphical windowing environments ... “
”... smaller devices ... “
Graphics Windowing Standard fur Embedded Linux
Mozilla Public License
• Schwaches Copyleft • Derivate auch MPL
Original-Quelltext
Originalautor
OpenSource
Autor von Derivaten
Neuentwicklungen ClosedSource
Proprietar
Mozilla Public License
• Schwaches Copyleft • Derivate auch MPL
Original-Quelltext
Originalautor
OpenSource
Autor von Derivaten
Neuentwicklungen ClosedSource
Proprietar
Mozilla Public License
• Schwaches Copyleft • Derivate auch MPL
Original-Quelltext
Originalautor
OpenSource
Autor von Derivaten
Neuentwicklungen ClosedSource
Proprietar
Mozilla Public License
• Schwaches Copyleft • Derivate auch MPL
Original-Quelltext
Originalautor
OpenSource
Autor von Derivaten
Neuentwicklungen ClosedSource
Proprietar
Mozilla Public License
• Schwaches Copyleft • Derivate auch MPL
Original-Quelltext
Originalautor
OpenSource
Autor von Derivaten
Neuentwicklungen
ClosedSource
Proprietar
Mozilla Public License
• Schwaches Copyleft • Derivate auch MPL
Original-Quelltext
Originalautor
OpenSource
Autor von Derivaten
Neuentwicklungen ClosedSource
Proprietar
Mozilla Public License
• Schwaches Copyleft • Derivate auch MPL
Original-Quelltext
Originalautor
OpenSource
Autor von Derivaten
Neuentwicklungen ClosedSource
Proprietar
Mozilla Public License
• Schwaches Copyleft • Derivate auch MPL
Original-Quelltext
Originalautor
OpenSource
Autor von Derivaten
Neuentwicklungen ClosedSource
Proprietar
Nano-X Architektur
”Glue-Layer“ - Prinzip
Treiberebene”Driver level“
Betriebsebene”Engine level“ (MicroGUI)
Anwendungsebene Nano-X API Microwindows API
Nano-X API =⇒ Xlib (X11)
Microwindows API =⇒ APIW (Win32 API)
”Glue-Layer“ - Prinzip
Treiberebene”Driver level“
Betriebsebene”Engine level“ (MicroGUI)
Anwendungsebene Nano-X API Microwindows API
Nano-X API =⇒ Xlib (X11)
Microwindows API =⇒ APIW (Win32 API)
”Glue-Layer“ - Prinzip
Treiberebene”Driver level“
Betriebsebene”Engine level“ (MicroGUI)
Anwendungsebene Nano-X API Microwindows API
Nano-X API =⇒ Xlib (X11)
Microwindows API =⇒ APIW (Win32 API)
”Glue-Layer“ - Prinzip
Treiberebene”Driver level“
Betriebsebene”Engine level“ (MicroGUI)
Anwendungsebene Nano-X API Microwindows API
Nano-X API =⇒ Xlib (X11)
Microwindows API =⇒ APIW (Win32 API)
”Glue-Layer“ - Prinzip
Treiberebene”Driver level“
Betriebsebene”Engine level“ (MicroGUI)
Anwendungsebene Nano-X API Microwindows API
Nano-X API =⇒ Xlib (X11)
Microwindows API =⇒ APIW (Win32 API)
Advanced Programmer’s Interfaces
Nano-X API
• Client/Server
• Ressourceneffizient
• X11 Entwicklungsumgebung
• Erweiterungen
Microwindows API
• Kein Client/Server
• Langsamere Programme
• Großere Executables
• Win32 API Unterstutzung
Advanced Programmer’s Interfaces
Nano-X API
• Client/Server
• Ressourceneffizient
• X11 Entwicklungsumgebung
• Erweiterungen
Microwindows API
• Kein Client/Server
• Langsamere Programme
• Großere Executables
• Win32 API Unterstutzung
Advanced Programmer’s Interfaces
Nano-X API
• Client/Server
• Ressourceneffizient
• X11 Entwicklungsumgebung
• Erweiterungen
Microwindows API
• Kein Client/Server
• Langsamere Programme
• Großere Executables
• Win32 API Unterstutzung
Advanced Programmer’s Interfaces
Nano-X API
• Client/Server
• Ressourceneffizient
• X11 Entwicklungsumgebung
• Erweiterungen
Microwindows API
• Kein Client/Server
• Langsamere Programme
• Großere Executables
• Win32 API Unterstutzung
Advanced Programmer’s Interfaces
Nano-X API
• Client/Server
• Ressourceneffizient
• X11 Entwicklungsumgebung
• Erweiterungen
Microwindows API
• Kein Client/Server
• Langsamere Programme
• Großere Executables
• Win32 API Unterstutzung
Advanced Programmer’s Interfaces
Nano-X API
• Client/Server
• Ressourceneffizient
• X11 Entwicklungsumgebung
• Erweiterungen
Microwindows API
• Kein Client/Server
• Langsamere Programme
• Großere Executables
• Win32 API Unterstutzung
Kernkonzepte Nano-X API
Fenster
• Fenster-ID (GR WINDOW ID)
• Baumstrukture (Parent, Child, Sibling, ...)
• Bildschirm =”Root window“
• Eigenschaften (Hintergrundfarbe, Rahmen, ...)
Graphische Kontexte
• Menge an graphischen Eigenschaften (Farbe, Dicke, ...)
• GR GC ID kontext = GrNewGC();
• Ahnliche graphische Elemente
Kernkonzepte Nano-X API
Fenster
• Fenster-ID (GR WINDOW ID)
• Baumstrukture (Parent, Child, Sibling, ...)
• Bildschirm =”Root window“
• Eigenschaften (Hintergrundfarbe, Rahmen, ...)
Graphische Kontexte
• Menge an graphischen Eigenschaften (Farbe, Dicke, ...)
• GR GC ID kontext = GrNewGC();
• Ahnliche graphische Elemente
Kernkonzepte Nano-X API
Fenster
• Fenster-ID (GR WINDOW ID)
• Baumstrukture (Parent, Child, Sibling, ...)
• Bildschirm =”Root window“
• Eigenschaften (Hintergrundfarbe, Rahmen, ...)
Graphische Kontexte
• Menge an graphischen Eigenschaften (Farbe, Dicke, ...)
• GR GC ID kontext = GrNewGC();
• Ahnliche graphische Elemente
Kernkonzepte Nano-X API
Ereignisse
• Ereignisschlange(”Event queue“)
• Ereignisstruktur furEreignistypen
• Polymorpher C-UnionTyp GR EVENT
typedef union {
/* Ereignistyp */GR_EVENT_TYPE type;
/* Ereignisstrukturen */...GR_EVENT_BUTTON button;GR_EVENT_MOUSE mouse;GR_EVENT_EXPOSURE ex;...
} GR_EVENT;
Kernkonzepte Nano-X API
Ereignisse
• Ereignisschlange(”Event queue“)
• Ereignisstruktur furEreignistypen
• Polymorpher C-UnionTyp GR EVENT
typedef union {
/* Ereignistyp */GR_EVENT_TYPE type;
/* Ereignisstrukturen */...GR_EVENT_BUTTON button;GR_EVENT_MOUSE mouse;GR_EVENT_EXPOSURE ex;...
} GR_EVENT;
Kernkonzepte Nano-X API
Ereignisse
• Ereignisschlange(”Event queue“)
• Ereignisstruktur furEreignistypen
• Polymorpher C-UnionTyp GR EVENT
typedef union {
/* Ereignistyp */GR_EVENT_TYPE type;
/* Ereignisstrukturen */...GR_EVENT_BUTTON button;GR_EVENT_MOUSE mouse;GR_EVENT_EXPOSURE ex;...
} GR_EVENT;
Kernkonzepte Nano-X API
Ereignisse
• Ereignisschlange(”Event queue“)
• Ereignisstruktur furEreignistypen
• Polymorpher C-UnionTyp GR EVENT
typedef union {
/* Ereignistyp */GR_EVENT_TYPE type;
/* Ereignisstrukturen */...GR_EVENT_BUTTON button;GR_EVENT_MOUSE mouse;GR_EVENT_EXPOSURE ex;...
} GR_EVENT;
Kernkonzepte Nano-X API
Ereignisse
• Ereignisschlange(”Event queue“)
• Ereignisstruktur furEreignistypen
• Polymorpher C-UnionTyp GR EVENT
typedef union {
/* Ereignistyp */GR_EVENT_TYPE type;
/* Ereignisstrukturen */...GR_EVENT_BUTTON button;GR_EVENT_MOUSE mouse;GR_EVENT_EXPOSURE ex;...
} GR_EVENT;
Kernkonzepte Nano-X API
Ereignisse
• Ereignisschlange(”Event queue“)
• Ereignisstruktur furEreignistypen
• Polymorpher C-UnionTyp GR EVENT
typedef union {
/* Ereignistyp */GR_EVENT_TYPE type;
/* Ereignisstrukturen */...GR_EVENT_BUTTON button;GR_EVENT_MOUSE mouse;GR_EVENT_EXPOSURE ex;...
} GR_EVENT;
Kernkonzepte Nano-X API
GR EVENT EXPOSURE
• Bei Fenster-Sichtbarkeit • (Neu)zeichnen von Inhalten
typedef struct {
/* Ereignistyp = GR_EVENT_TYPE_EXPOSURE */GR_EVENT_TYPE type;
/* Sichtbarkeits - Informationen */GR_WINDOW_ID wid;GR_COORD x, y;GR_SIZE width, height;
} GR_EVENT_EXPOSURE;
Kernkonzepte Nano-X API
GR EVENT EXPOSURE
• Bei Fenster-Sichtbarkeit • (Neu)zeichnen von Inhalten
typedef struct {
/* Ereignistyp = GR_EVENT_TYPE_EXPOSURE */GR_EVENT_TYPE type;
/* Sichtbarkeits - Informationen */GR_WINDOW_ID wid;GR_COORD x, y;GR_SIZE width, height;
} GR_EVENT_EXPOSURE;
Kernkonzepte Nano-X API
GR EVENT EXPOSURE
• Bei Fenster-Sichtbarkeit • (Neu)zeichnen von Inhalten
typedef struct {
/* Ereignistyp = GR_EVENT_TYPE_EXPOSURE */GR_EVENT_TYPE type;
/* Sichtbarkeits - Informationen */GR_WINDOW_ID wid;GR_COORD x, y;GR_SIZE width, height;
} GR_EVENT_EXPOSURE;
Kernkonzepte Nano-X API
GR EVENT EXPOSURE
• Bei Fenster-Sichtbarkeit • (Neu)zeichnen von Inhalten
typedef struct {
/* Ereignistyp = GR_EVENT_TYPE_EXPOSURE */GR_EVENT_TYPE type;
/* Sichtbarkeits - Informationen */GR_WINDOW_ID wid;GR_COORD x, y;GR_SIZE width, height;
} GR_EVENT_EXPOSURE;
Kernkonzepte Nano-X API
GR EVENT EXPOSURE
• Bei Fenster-Sichtbarkeit • (Neu)zeichnen von Inhalten
typedef struct {
/* Ereignistyp = GR_EVENT_TYPE_EXPOSURE */GR_EVENT_TYPE type;
/* Sichtbarkeits - Informationen */GR_WINDOW_ID wid;GR_COORD x, y;GR_SIZE width, height;
} GR_EVENT_EXPOSURE;
Ereignisschleife (”Event loop“)
/* Deklarationen */GR_WINDOW_ID fenster;GR_EVENT ereignis;
/* Bitmaske: Akzeptierte Fenster-Ereignisse */GrSelectEvents(fenster, GR_EVENT_MASK_EXPOSURE);
/* Ereignisschleife */for(;;) {
/* Nachstes Ereignis */GrGetNextEvent(&ereignis);if (ereignis.type == GR_EVENT_TYPE_EXPOSURE)
{ /* Zeichenroutinen */ }
else if ...
}
Ereignisschleife (”Event loop“)
/* Deklarationen */GR_WINDOW_ID fenster;GR_EVENT ereignis;
/* Bitmaske: Akzeptierte Fenster-Ereignisse */GrSelectEvents(fenster, GR_EVENT_MASK_EXPOSURE);
/* Ereignisschleife */for(;;) {
/* Nachstes Ereignis */GrGetNextEvent(&ereignis);if (ereignis.type == GR_EVENT_TYPE_EXPOSURE)
{ /* Zeichenroutinen */ }
else if ...
}
Ereignisschleife (”Event loop“)
/* Deklarationen */GR_WINDOW_ID fenster;GR_EVENT ereignis;
/* Bitmaske: Akzeptierte Fenster-Ereignisse */GrSelectEvents(fenster, GR_EVENT_MASK_EXPOSURE);
/* Ereignisschleife */for(;;) {
/* Nachstes Ereignis */GrGetNextEvent(&ereignis);if (ereignis.type == GR_EVENT_TYPE_EXPOSURE)
{ /* Zeichenroutinen */ }
else if ...
}
Ereignisschleife (”Event loop“)
/* Deklarationen */GR_WINDOW_ID fenster;GR_EVENT ereignis;
/* Bitmaske: Akzeptierte Fenster-Ereignisse */GrSelectEvents(fenster, GR_EVENT_MASK_EXPOSURE);
/* Ereignisschleife */for(;;) {
/* Nachstes Ereignis */GrGetNextEvent(&ereignis);
if (ereignis.type == GR_EVENT_TYPE_EXPOSURE){ /* Zeichenroutinen */ }
else if ...
}
Ereignisschleife (”Event loop“)
/* Deklarationen */GR_WINDOW_ID fenster;GR_EVENT ereignis;
/* Bitmaske: Akzeptierte Fenster-Ereignisse */GrSelectEvents(fenster, GR_EVENT_MASK_EXPOSURE);
/* Ereignisschleife */for(;;) {
/* Nachstes Ereignis */GrGetNextEvent(&ereignis);if (ereignis.type == GR_EVENT_TYPE_EXPOSURE)
{ /* Zeichenroutinen */ }
else if ...
}
Ereignisschleife (”Event loop“)
/* Deklarationen */GR_WINDOW_ID fenster;GR_EVENT ereignis;
/* Bitmaske: Akzeptierte Fenster-Ereignisse */GrSelectEvents(fenster, GR_EVENT_MASK_EXPOSURE);
/* Ereignisschleife */for(;;) {
/* Nachstes Ereignis */GrGetNextEvent(&ereignis);if (ereignis.type == GR_EVENT_TYPE_EXPOSURE)
{ /* Zeichenroutinen */ }
else if ...
}
Ereignisschleife (”Event loop“)
/* Deklarationen */GR_WINDOW_ID fenster;GR_EVENT ereignis;
/* Bitmaske: Akzeptierte Fenster-Ereignisse */GrSelectEvents(fenster, GR_EVENT_MASK_EXPOSURE);
/* Ereignisschleife */for(;;) {
/* Nachstes Ereignis */GrGetNextEvent(&ereignis);if (ereignis.type == GR_EVENT_TYPE_EXPOSURE)
{ /* Zeichenroutinen */ }
else if ...
}
Serielle Schnittstelleund Unix
Weiblicher RS232 DB09 Connector
Senden/dev/tts/0 /dev/tts/1
/* Offnen fur Lesezugriff */int f1 = open("/dev/tts/0", O_RDONLY | O_NDELAY);
/* Offnen zum Schreiben */int f2 = open("/dev/tts/1", O_WRONLY | O_NDELAY);
/* 4 Bytes von /dev/tts/0 */char buffer[4];read(f1, buffer, 4);
/* 4 Bytes an /dev/tts/1 */write(f2, buffer, 4);
Senden/dev/tts/0 /dev/tts/1
/* Offnen fur Lesezugriff */int f1 = open("/dev/tts/0", O_RDONLY | O_NDELAY);
/* Offnen zum Schreiben */int f2 = open("/dev/tts/1", O_WRONLY | O_NDELAY);
/* 4 Bytes von /dev/tts/0 */char buffer[4];read(f1, buffer, 4);
/* 4 Bytes an /dev/tts/1 */write(f2, buffer, 4);
Senden/dev/tts/0 /dev/tts/1
/* Offnen fur Lesezugriff */int f1 = open("/dev/tts/0", O_RDONLY | O_NDELAY);
/* Offnen zum Schreiben */int f2 = open("/dev/tts/1", O_WRONLY | O_NDELAY);
/* 4 Bytes von /dev/tts/0 */char buffer[4];read(f1, buffer, 4);
/* 4 Bytes an /dev/tts/1 */write(f2, buffer, 4);
Senden/dev/tts/0 /dev/tts/1
/* Offnen fur Lesezugriff */int f1 = open("/dev/tts/0", O_RDONLY | O_NDELAY);
/* Offnen zum Schreiben */int f2 = open("/dev/tts/1", O_WRONLY | O_NDELAY);
/* 4 Bytes von /dev/tts/0 */char buffer[4];read(f1, buffer, 4);
/* 4 Bytes an /dev/tts/1 */write(f2, buffer, 4);
Senden/dev/tts/0 /dev/tts/1
/* Offnen fur Lesezugriff */int f1 = open("/dev/tts/0", O_RDONLY | O_NDELAY);
/* Offnen zum Schreiben */int f2 = open("/dev/tts/1", O_WRONLY | O_NDELAY);
/* 4 Bytes von /dev/tts/0 */char buffer[4];read(f1, buffer, 4);
/* 4 Bytes an /dev/tts/1 */write(f2, buffer, 4);
Embedded Linux + Nano-X = Alternative ... ?
Zusammenfassung
• Lizenzmodelle
• Kostengunstig
• Ungebundenheit
• Moglichkeiten
• Graphisches
• GNU/Linux
Embedded Linux + Nano-X = Alternative ... ?
Zusammenfassung
• Lizenzmodelle
• Kostengunstig
• Ungebundenheit
• Moglichkeiten
• Graphisches
• GNU/Linux
Embedded Linux + Nano-X = Alternative ... ?
Zusammenfassung
• Lizenzmodelle
• Kostengunstig
• Ungebundenheit
• Moglichkeiten
• Graphisches
• GNU/Linux
Embedded Linux + Nano-X = Alternative ... ?
Zusammenfassung
• Lizenzmodelle
• Kostengunstig
• Ungebundenheit
• Moglichkeiten
• Graphisches
• GNU/Linux
Embedded Linux + Nano-X = Alternative ... ?
Zusammenfassung
• Lizenzmodelle
• Kostengunstig
• Ungebundenheit
• Moglichkeiten
• Graphisches
• GNU/Linux
Embedded Linux + Nano-X = Alternative ... ?
Zusammenfassung
• Lizenzmodelle
• Kostengunstig
• Ungebundenheit
• Moglichkeiten
• Graphisches
• GNU/Linux
Embedded Linux + Nano-X = Alternative ... ?
Zusammenfassung
• Lizenzmodelle
• Kostengunstig
• Ungebundenheit
• Moglichkeiten
• Graphisches
• GNU/Linux
Embedded Linux + Nano-X = Alternative ... ?
Zusammenfassung
• Lizenzmodelle
• Kostengunstig
• Ungebundenheit
• Moglichkeiten
• Graphisches
• GNU/Linux
Embedded Linux + Nano-X = Alternative ... ?
Zusammenfassung
• Lizenzmodelle
• Kostengunstig
• Ungebundenheit
• Moglichkeiten
• Graphisches
• GNU/Linux
[http://www.microwindows.org]The Official Microwindows WebsiteGreg Haerr ([email protected]), 05.01.2009
[http://www.ultratronik.de/linux.html]Ultratronik Linux DistributionUltratronik GmbH, 06.01.2009
[http://embedded.centurysoftware.com/docs/nx]Century Embedded Technologies Nano-X SDK andDeveloper’s GuideCentury Software, 04.01.2009
[http://www.webadventures.au]WebAdventures – Find your place on the webHeath L’Estrange, 03.01.2009
Embedded LinuxOpen Frame Smart Panel (OFSP) von Ultratronik
mit Nano-Xfur analytische Gerate
13—01—2009
Soren Wellhofer