4. Qt for RTOS
• Qt for RTOS ports are Community Supported
• Not all Qt modules available
• Qt APIs available unmodified (code once...)
(with few exceptions that are documented in
platform notes)
6
5. Embedded vs. Desktop
• Qt Embedded can be fine-tuned for size
– configure options, e.g. -no-script
– feature macros, e.g. QT_NO_FILEDIALOG
4
6. Integration
• Before we can start developing, the following
must be considered:
– CPU Architecture
– Operating System
– Windowing System
6
11. Summary CPU Architecture
• Qt is CPU agnostic on operating systems that
feature atomic operations
– INTEGRITY, Windows CE
• Otherwise, Qt has built-in support for...
– x86_64, i386, ARM, MIPS, PowerPC, SuperH, ...
• Optional: Blend and Blit optimizations (using
iwMMXt, SSE, ...)
11
14. OS dependencies
• Qt Embedded is self-contained
– Build system is bootstrapped
– Requires libc, pthread, some math functions
– No other external library dependencies (like STL)
14
15. Classic OS diagram
QtCore
Linux Windows Solaris Mac
OS
X Symbian RTOS...
Hardware
15
17. Operating System
• Qt supports
– Win32 (*_win.cpp files)
– POSIX (*_unix.cpp files)
• Exception: Some native calls instead of POSIX for
optimization or deeper integration
(for example on Symbian, Mac OS X)
17
18. Operating System - Summary
• QtCore runs well on a POSIX compliant OS/RTOS
• Amount of required POSIX functionality varies (e.g.
QT_NO_FILESYSTEM)
• Subsystems (e.g. file system) can be replaced by
native calls if necessary
18
28. QWS vs. X11
• X11
– asynchronous client-server architecture, IPC
– requires additional window manager process
– complex due to lots of (optional) extensions
• QWS
– self-contained
– single process mode possible
28
30. HW Acceleration in Qt
• Qt supports OpenVG and OpenGL ES >= 2.0
• Both allow HW accelerated 2D [or 3D] painting
• However, both APIs don't define the interface to
the Windowing System
30
34. Something still missing for QWS
• EGL is still relying on an underlying windowing
system
• Works for X11, but not (out of the box) for QWS
• OpenKODE with KDui extension required
34
35. Something still missing (2)
• OpenKODE with KDui extension is its own
windowing system
• So is QWS
35
36. Something still missing (3)
• OpenKODE with KDui extension is its own
windowing system
• So is QWS
• #%^!@#!!
36
37. Introducing Lighthouse
• Lighthouse is the new QWS
• Lighthouse is not its own windowing system
• Instead, features plug-in architecture for
integrating existing windowing systems
WARNING! WORK IN PROGRESS
37
38. Embedded Windowing Systems
QtGui
EGL X11 Lighthouse EGL
+
KD
Opera)ng
System
OpenVG OpenGL
(ES)
Hardware
38
39. Summary Windowing System
• QWS works well with non accelerated displays
– HW acceleration possible, but tricky
• Lighthouse works best with existing windowing
systems (KDgui) with OpenGL (ES) or OpenVG
• X11 works best if the infrastructure already exists
for the target board, or if co-existence with other
X11 applications is required
39
40. Summary Integration
• Before writing an application, we need to...
– consider the atomic operation support
– consider the feature set
– consider the windowing system
– consider the hardware acceleration
• If that's done, it's write once, deploy everywhere
40
43. QNX
• QNX port is community supported
– About 5 occurrences of conditional Q_OS_QNX code
• Several successful deployments
– QWS without HW acceleration
• No Photon integration
– Photon is a windowing system → collides with QWS
• Photon's X11 server not recommended
– Doesn't feature Xrender, poor rendering quality
43
45. QNX - limitations
• No QSystemSemaphore, QSharedMemory
– SYSV style semaphores and shared memory missing
from QNX
• No QProcess support
– Starting a process in a thread not supported
• QWS has single process GUI support only
• No Qt3Support
45
46. QNX
• How to build (see Platform Notes - QNX)
– -xplatform unsupported/qws/qnx-i386-g++
– -embedded i386
– -no-qt3support
– -qt-gfx-qnx
– -qt-mouse-qnx
– -qt-kbd-qnx
– -no-exceptions
– ...
43
48. VxWorks
• VxWorks port is community supported
– About 60 VxWorks specific code changes
• Several successful deployments
– X11 with OpenGL acceleration
47
50. VxWorks - limitations
• No QSystemSemaphore, QSharedMemory
– No SYSV style semaphores, shared memory
• No QLibrary
– No plugins
• Only one QApplication per system
– VxWorks has flat address space
• No Qt3Support
49
51. QNX
• How to build (see Platform Notes - VxWorks)
– -xplatform unsupported/qws/vxworks-simpentium-g++
– -embedded vxworks
– -exceptions
– -no-qt3support
– ...
43