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