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