SlideShare ist ein Scribd-Unternehmen logo
1 von 54
Downloaden Sie, um offline zu lesen
Qt on Real Time OSs
... or how to get your Qt app on QNX and friends   10/09/09
Contents

• Some Basics
  – CPU, Operating System, Windowing System

• Hardware Acceleration
• Deeper look into...
  – QNX
  – VxWorks
  – INTEGRITY




                                              2
Contents




           Some Basics




                         3
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
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
Integration

• Before we can start developing, the following
  must be considered:
  – CPU Architecture
  – Operating System
  – Windowing System




                                                  6
Contents




           CPU Architecture




                              7
Classic layer diagram




                     QtCore

                Opera)ng	
  System

                      CPU




                                     8
Classic layer diagram + atomics




                      QtCore
       Atomic
    Operations   Opera)ng	
  System

                       CPU




                                      9
Classic layer diagram + atomics II




             Atomics    QtCore

                       INTEGRITY

                         CPU




                                     10
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
Contents




           Operating Systems




                               12
Classic layer diagram (again)




                      QtCore

                 Opera)ng	
  System

                    Hardware




                                      13
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
Classic OS diagram



                               QtCore




   Linux   Windows   Solaris      Mac	
  OS	
  X   Symbian   RTOS...

                          Hardware




                                                                       15
Classic OS diagram (simplified)



                   QtCore




         POSIX              Win32

                 Hardware




                                    16
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
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
Contents




           Windowing Systems




                               19
Classic layer diagram with GUI



                           QtGui

             QtCore       Windowing	
  System

                      Opera)ng	
  System

                         Hardware




                                                20
Windowing Systems

                                 QtGui




      X11             S60                Windows                    Mac	
  OS	
  X




                                                                            ???
   Linux    Solaris    Symbian     Windows         Mac	
  OS	
  X         RTOS...

                            Hardware




                                                                                     21
Introducing QWS

• Qt contains it's own Windowing System:
  “Qt Windowing System” (QWS)
• Contains a compositing window manager
• Requires direct access to graphics card and input
  devices (mouse/touchscreen, keyboard/keypad)




                                                      22
Classic layer diagram with GUI



                           QtGui

             QtCore              QWS
                                           Screen	
  Drivers
                      Opera)ng	
  System   Input	
  Drivers
                         Hardware




                                                               23
QWS vs. OS


                   QWS




                         Drivers???




             Opera)ng	
  System

                Hardware




                                      24
QWS diagram with gfx output


                                     QWS




    DirectFB         LinuxFB        Custom    VNC      Virtual	
  FB




               Opera)ng	
  System

                  Hardware                   Network      qvW




                                                                       25
QVFB screenshot




                  26
Embedded Windowing Systems

                              QtGui




            X11                               QWS




  Linux   Solaris   Symbian     Windows   Mac	
  OS	
  X   RTOS...

                         Hardware




                                                                     27
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
Contents




           Hardware Acceleration




                                   29
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
Embedded Windowing Systems

                           QtGui




              X11                        QWS

              ???                        ???

                    Opera)ng	
  System
     OpenVG                               OpenGL	
  (ES)
                       Hardware




                                                           31
EGL to the rescue

• EGL is the glue layer between Windowing
  Systems and hardware acceleration
  (http://www.khronos.org/egl/)




                                            32
Embedded Windowing Systems

                               QtGui




   EGL            X11                        QWS

                                             ???

                        Opera)ng	
  System
         OpenVG                               OpenGL	
  (ES)
                           Hardware




                                                               33
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
Something still missing (2)

• OpenKODE with KDui extension is its own
 windowing system
• So is QWS




                                            35
Something still missing (3)

• OpenKODE with KDui extension is its own
 windowing system
• So is QWS
• #%^!@#!!




                                            36
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
Embedded Windowing Systems

                               QtGui




   EGL            X11                        Lighthouse        EGL	
  +	
  KD




                        Opera)ng	
  System
         OpenVG                               OpenGL	
  (ES)
                           Hardware




                                                                                38
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
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
Contents




           Demo




                  41
Contents




           A Deeper Look Into...
                  QNX




                                   42
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
QWS diagram on QNX


                                           QWS




             io-­‐display         Custom          VNC

 Experimental!


                            QNX

                      Hardware                   Network




                                                           44
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
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
Contents




           A Deeper Look Into...
                VxWorks




                                   46
VxWorks

• VxWorks port is community supported
  – About 60 VxWorks specific code changes

• Several successful deployments
  – X11 with OpenGL acceleration




                                             47
QtGui diagram on VxWorks


                 QtGui




                  X11

                VxWorks

                Hardware




                           48
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
QNX

• How to build (see Platform Notes - VxWorks)
  –   -xplatform unsupported/qws/vxworks-simpentium-g++

  –   -embedded vxworks

  –   -exceptions

  –   -no-qt3support

  –   ...




                                                          43
Contents




           A Deeper Look Into...
               INTEGRITY




                                   50
INTEGRITY

• Only a subset of Qt supported
• Port currently only available on request




                                             51
Contents




           Thank you :)
           (Questions?)




                          52

Weitere ähnliche Inhalte

Was ist angesagt?

Scripting Your Qt Application
Scripting Your Qt ApplicationScripting Your Qt Application
Scripting Your Qt Applicationaccount inactive
 
QThreads: Are You Using Them Wrong?
QThreads: Are You Using Them Wrong? QThreads: Are You Using Them Wrong?
QThreads: Are You Using Them Wrong? ICS
 
Best Practices in Qt Quick/QML - Part 3
Best Practices in Qt Quick/QML - Part 3Best Practices in Qt Quick/QML - Part 3
Best Practices in Qt Quick/QML - Part 3ICS
 
Qt 5 - C++ and Widgets
Qt 5 - C++ and WidgetsQt 5 - C++ and Widgets
Qt 5 - C++ and WidgetsJuha Peltomäki
 
Introduction to QML
Introduction to QMLIntroduction to QML
Introduction to QMLAlan Uthoff
 
Introduction to the Qt Quick Scene Graph
Introduction to the Qt Quick Scene GraphIntroduction to the Qt Quick Scene Graph
Introduction to the Qt Quick Scene GraphICS
 
Software Development Best Practices: Separating UI from Business Logic
Software Development Best Practices: Separating UI from Business LogicSoftware Development Best Practices: Separating UI from Business Logic
Software Development Best Practices: Separating UI from Business LogicICS
 
Introduction to Qt Creator
Introduction to Qt CreatorIntroduction to Qt Creator
Introduction to Qt CreatorQt
 
Integer quantization for deep learning inference: principles and empirical ev...
Integer quantization for deep learning inference: principles and empirical ev...Integer quantization for deep learning inference: principles and empirical ev...
Integer quantization for deep learning inference: principles and empirical ev...jemin lee
 
Best Practices in Qt Quick/QML - Part 1 of 4
Best Practices in Qt Quick/QML - Part 1 of 4Best Practices in Qt Quick/QML - Part 1 of 4
Best Practices in Qt Quick/QML - Part 1 of 4ICS
 
Introduction to CUDA
Introduction to CUDAIntroduction to CUDA
Introduction to CUDARaymond Tay
 
State of the Art OpenGL and Qt
State of the Art OpenGL and QtState of the Art OpenGL and Qt
State of the Art OpenGL and QtICS
 
In-Depth Model/View with QML
In-Depth Model/View with QMLIn-Depth Model/View with QML
In-Depth Model/View with QMLICS
 
XPDS13: Xen in OSS based In–Vehicle Infotainment Systems - Artem Mygaiev, Glo...
XPDS13: Xen in OSS based In–Vehicle Infotainment Systems - Artem Mygaiev, Glo...XPDS13: Xen in OSS based In–Vehicle Infotainment Systems - Artem Mygaiev, Glo...
XPDS13: Xen in OSS based In–Vehicle Infotainment Systems - Artem Mygaiev, Glo...The Linux Foundation
 
Monitors
MonitorsMonitors
MonitorsMohd Arif
 
QVariant, QObject — Qt's not just for GUI development
QVariant, QObject — Qt's not just for GUI developmentQVariant, QObject — Qt's not just for GUI development
QVariant, QObject — Qt's not just for GUI developmentICS
 
data structures- back tracking
data structures- back trackingdata structures- back tracking
data structures- back trackingAbinaya B
 

Was ist angesagt? (20)

Scripting Your Qt Application
Scripting Your Qt ApplicationScripting Your Qt Application
Scripting Your Qt Application
 
QThreads: Are You Using Them Wrong?
QThreads: Are You Using Them Wrong? QThreads: Are You Using Them Wrong?
QThreads: Are You Using Them Wrong?
 
Best Practices in Qt Quick/QML - Part 3
Best Practices in Qt Quick/QML - Part 3Best Practices in Qt Quick/QML - Part 3
Best Practices in Qt Quick/QML - Part 3
 
Qt 5 - C++ and Widgets
Qt 5 - C++ and WidgetsQt 5 - C++ and Widgets
Qt 5 - C++ and Widgets
 
Introduction to QML
Introduction to QMLIntroduction to QML
Introduction to QML
 
Introduction to the Qt Quick Scene Graph
Introduction to the Qt Quick Scene GraphIntroduction to the Qt Quick Scene Graph
Introduction to the Qt Quick Scene Graph
 
Software Development Best Practices: Separating UI from Business Logic
Software Development Best Practices: Separating UI from Business LogicSoftware Development Best Practices: Separating UI from Business Logic
Software Development Best Practices: Separating UI from Business Logic
 
Introduction to Qt Creator
Introduction to Qt CreatorIntroduction to Qt Creator
Introduction to Qt Creator
 
Integer quantization for deep learning inference: principles and empirical ev...
Integer quantization for deep learning inference: principles and empirical ev...Integer quantization for deep learning inference: principles and empirical ev...
Integer quantization for deep learning inference: principles and empirical ev...
 
Qt programming-using-cpp
Qt programming-using-cppQt programming-using-cpp
Qt programming-using-cpp
 
Best Practices in Qt Quick/QML - Part 1 of 4
Best Practices in Qt Quick/QML - Part 1 of 4Best Practices in Qt Quick/QML - Part 1 of 4
Best Practices in Qt Quick/QML - Part 1 of 4
 
Introduction to CUDA
Introduction to CUDAIntroduction to CUDA
Introduction to CUDA
 
State of the Art OpenGL and Qt
State of the Art OpenGL and QtState of the Art OpenGL and Qt
State of the Art OpenGL and Qt
 
In-Depth Model/View with QML
In-Depth Model/View with QMLIn-Depth Model/View with QML
In-Depth Model/View with QML
 
UI Programming with Qt-Quick and QML
UI Programming with Qt-Quick and QMLUI Programming with Qt-Quick and QML
UI Programming with Qt-Quick and QML
 
XPDS13: Xen in OSS based In–Vehicle Infotainment Systems - Artem Mygaiev, Glo...
XPDS13: Xen in OSS based In–Vehicle Infotainment Systems - Artem Mygaiev, Glo...XPDS13: Xen in OSS based In–Vehicle Infotainment Systems - Artem Mygaiev, Glo...
XPDS13: Xen in OSS based In–Vehicle Infotainment Systems - Artem Mygaiev, Glo...
 
Monitors
MonitorsMonitors
Monitors
 
QVariant, QObject — Qt's not just for GUI development
QVariant, QObject — Qt's not just for GUI developmentQVariant, QObject — Qt's not just for GUI development
QVariant, QObject — Qt's not just for GUI development
 
CUDA
CUDACUDA
CUDA
 
data structures- back tracking
data structures- back trackingdata structures- back tracking
data structures- back tracking
 

Ähnlich wie Qt on Real Time Operating Systems

Embedded Linux
Embedded LinuxEmbedded Linux
Embedded LinuxShiraz LUG
 
OSCON: System software goes weird
OSCON: System software goes weirdOSCON: System software goes weird
OSCON: System software goes weirdDocker, Inc.
 
Linux container & docker
Linux container & dockerLinux container & docker
Linux container & dockerejlp12
 
KubeCon EU 2016: "rktnetes": what's new with container runtimes and Kubernetes
KubeCon EU 2016: "rktnetes": what's new with container runtimes and KubernetesKubeCon EU 2016: "rktnetes": what's new with container runtimes and Kubernetes
KubeCon EU 2016: "rktnetes": what's new with container runtimes and KubernetesKubeAcademy
 
Embedded Linux Talk Uni Forum
Embedded Linux Talk Uni ForumEmbedded Linux Talk Uni Forum
Embedded Linux Talk Uni ForumSumant Diwakar
 
2. Vagin. Linux containers. June 01, 2013
2. Vagin. Linux containers. June 01, 20132. Vagin. Linux containers. June 01, 2013
2. Vagin. Linux containers. June 01, 2013ru-fedora-moscow-2013
 
Fedora Virtualization Day: Linux Containers & CRIU
Fedora Virtualization Day: Linux Containers & CRIUFedora Virtualization Day: Linux Containers & CRIU
Fedora Virtualization Day: Linux Containers & CRIUAndrey Vagin
 
下午3 intel fenghaitao_mee_go api and application development
下午3 intel fenghaitao_mee_go api and application development下午3 intel fenghaitao_mee_go api and application development
下午3 intel fenghaitao_mee_go api and application developmentcsdnmobile
 
Qt 6 Chat - Are You Ready?
Qt 6 Chat - Are You Ready?Qt 6 Chat - Are You Ready?
Qt 6 Chat - Are You Ready?ICS
 
K vector embedded_linux_workshop
K vector embedded_linux_workshopK vector embedded_linux_workshop
K vector embedded_linux_workshopKeroles karam khalil
 
Rapid prototyping with open source
Rapid prototyping with open sourceRapid prototyping with open source
Rapid prototyping with open sourceAlison Chaiken
 
Low fat virtualization for embedded systems
Low fat virtualization for embedded systemsLow fat virtualization for embedded systems
Low fat virtualization for embedded systemsJacques Supcik
 
Engage 2019 - SUSE Linux and Container update
Engage 2019  - SUSE Linux and Container updateEngage 2019  - SUSE Linux and Container update
Engage 2019 - SUSE Linux and Container updateChristian Holsing
 
Storage-Performance-Tuning-for-FAST-Virtual-Machines_Fam-Zheng.pdf
Storage-Performance-Tuning-for-FAST-Virtual-Machines_Fam-Zheng.pdfStorage-Performance-Tuning-for-FAST-Virtual-Machines_Fam-Zheng.pdf
Storage-Performance-Tuning-for-FAST-Virtual-Machines_Fam-Zheng.pdfaaajjj4
 
Kvm and libvirt
Kvm and libvirtKvm and libvirt
Kvm and libvirtplarsen67
 
Module 4 Embedded Linux
Module 4 Embedded LinuxModule 4 Embedded Linux
Module 4 Embedded LinuxTushar B Kute
 

Ähnlich wie Qt on Real Time Operating Systems (20)

Embedded Linux
Embedded LinuxEmbedded Linux
Embedded Linux
 
OSCON: System software goes weird
OSCON: System software goes weirdOSCON: System software goes weird
OSCON: System software goes weird
 
EOS
EOSEOS
EOS
 
Linux container & docker
Linux container & dockerLinux container & docker
Linux container & docker
 
Ansible docker
Ansible dockerAnsible docker
Ansible docker
 
KubeCon EU 2016: "rktnetes": what's new with container runtimes and Kubernetes
KubeCon EU 2016: "rktnetes": what's new with container runtimes and KubernetesKubeCon EU 2016: "rktnetes": what's new with container runtimes and Kubernetes
KubeCon EU 2016: "rktnetes": what's new with container runtimes and Kubernetes
 
Embedded Linux Talk Uni Forum
Embedded Linux Talk Uni ForumEmbedded Linux Talk Uni Forum
Embedded Linux Talk Uni Forum
 
2. Vagin. Linux containers. June 01, 2013
2. Vagin. Linux containers. June 01, 20132. Vagin. Linux containers. June 01, 2013
2. Vagin. Linux containers. June 01, 2013
 
MIPS-X
MIPS-XMIPS-X
MIPS-X
 
Fedora Virtualization Day: Linux Containers & CRIU
Fedora Virtualization Day: Linux Containers & CRIUFedora Virtualization Day: Linux Containers & CRIU
Fedora Virtualization Day: Linux Containers & CRIU
 
下午3 intel fenghaitao_mee_go api and application development
下午3 intel fenghaitao_mee_go api and application development下午3 intel fenghaitao_mee_go api and application development
下午3 intel fenghaitao_mee_go api and application development
 
Qt 6 Chat - Are You Ready?
Qt 6 Chat - Are You Ready?Qt 6 Chat - Are You Ready?
Qt 6 Chat - Are You Ready?
 
K vector embedded_linux_workshop
K vector embedded_linux_workshopK vector embedded_linux_workshop
K vector embedded_linux_workshop
 
Rapid prototyping with open source
Rapid prototyping with open sourceRapid prototyping with open source
Rapid prototyping with open source
 
Low fat virtualization for embedded systems
Low fat virtualization for embedded systemsLow fat virtualization for embedded systems
Low fat virtualization for embedded systems
 
Engage 2019 - SUSE Linux and Container update
Engage 2019  - SUSE Linux and Container updateEngage 2019  - SUSE Linux and Container update
Engage 2019 - SUSE Linux and Container update
 
Storage-Performance-Tuning-for-FAST-Virtual-Machines_Fam-Zheng.pdf
Storage-Performance-Tuning-for-FAST-Virtual-Machines_Fam-Zheng.pdfStorage-Performance-Tuning-for-FAST-Virtual-Machines_Fam-Zheng.pdf
Storage-Performance-Tuning-for-FAST-Virtual-Machines_Fam-Zheng.pdf
 
Kvm and libvirt
Kvm and libvirtKvm and libvirt
Kvm and libvirt
 
QtQuick Day 1
QtQuick Day 1QtQuick Day 1
QtQuick Day 1
 
Module 4 Embedded Linux
Module 4 Embedded LinuxModule 4 Embedded Linux
Module 4 Embedded Linux
 

Mehr von account inactive

KDE Plasma for Mobile Phones
KDE Plasma for Mobile PhonesKDE Plasma for Mobile Phones
KDE Plasma for Mobile Phonesaccount inactive
 
Shipping Mobile Applications Using Qt for Symbian
Shipping Mobile Applications Using Qt for SymbianShipping Mobile Applications Using Qt for Symbian
Shipping Mobile Applications Using Qt for Symbianaccount inactive
 
The Future of Qt Widgets
The Future of Qt WidgetsThe Future of Qt Widgets
The Future of Qt Widgetsaccount inactive
 
Special Effects with Qt Graphics View
Special Effects with Qt Graphics ViewSpecial Effects with Qt Graphics View
Special Effects with Qt Graphics Viewaccount inactive
 
Developments in The Qt WebKit Integration
Developments in The Qt WebKit IntegrationDevelopments in The Qt WebKit Integration
Developments in The Qt WebKit Integrationaccount inactive
 
Development with Qt for Windows CE
Development with Qt for Windows CEDevelopment with Qt for Windows CE
Development with Qt for Windows CEaccount inactive
 
Translating Qt Applications
Translating Qt ApplicationsTranslating Qt Applications
Translating Qt Applicationsaccount inactive
 
Qt State Machine Framework
Qt State Machine FrameworkQt State Machine Framework
Qt State Machine Frameworkaccount inactive
 
Mobile Development with Qt for Symbian
Mobile Development with Qt for SymbianMobile Development with Qt for Symbian
Mobile Development with Qt for Symbianaccount inactive
 
How to Make Your Qt App Look Native
How to Make Your Qt App Look NativeHow to Make Your Qt App Look Native
How to Make Your Qt App Look Nativeaccount inactive
 
Animation Framework: A Step Towards Modern UIs
Animation Framework: A Step Towards Modern UIsAnimation Framework: A Step Towards Modern UIs
Animation Framework: A Step Towards Modern UIsaccount inactive
 
Using Multi-Touch and Gestures with Qt
Using Multi-Touch and Gestures with QtUsing Multi-Touch and Gestures with Qt
Using Multi-Touch and Gestures with Qtaccount inactive
 
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)account inactive
 
The Mobility Project
The Mobility ProjectThe Mobility Project
The Mobility Projectaccount inactive
 
Copy Your Favourite Nokia App with Qt
Copy Your Favourite Nokia App with QtCopy Your Favourite Nokia App with Qt
Copy Your Favourite Nokia App with Qtaccount inactive
 
The Next Generation Qt Item Views
The Next Generation Qt Item ViewsThe Next Generation Qt Item Views
The Next Generation Qt Item Viewsaccount inactive
 

Mehr von account inactive (20)

Meet Qt
Meet QtMeet Qt
Meet Qt
 
KDE Plasma for Mobile Phones
KDE Plasma for Mobile PhonesKDE Plasma for Mobile Phones
KDE Plasma for Mobile Phones
 
Shipping Mobile Applications Using Qt for Symbian
Shipping Mobile Applications Using Qt for SymbianShipping Mobile Applications Using Qt for Symbian
Shipping Mobile Applications Using Qt for Symbian
 
The Future of Qt Widgets
The Future of Qt WidgetsThe Future of Qt Widgets
The Future of Qt Widgets
 
Special Effects with Qt Graphics View
Special Effects with Qt Graphics ViewSpecial Effects with Qt Graphics View
Special Effects with Qt Graphics View
 
Developments in The Qt WebKit Integration
Developments in The Qt WebKit IntegrationDevelopments in The Qt WebKit Integration
Developments in The Qt WebKit Integration
 
Qt Kwan-Do
Qt Kwan-DoQt Kwan-Do
Qt Kwan-Do
 
Development with Qt for Windows CE
Development with Qt for Windows CEDevelopment with Qt for Windows CE
Development with Qt for Windows CE
 
Translating Qt Applications
Translating Qt ApplicationsTranslating Qt Applications
Translating Qt Applications
 
Qt Creator Bootcamp
Qt Creator BootcampQt Creator Bootcamp
Qt Creator Bootcamp
 
Qt Widget In-Depth
Qt Widget In-DepthQt Widget In-Depth
Qt Widget In-Depth
 
Qt State Machine Framework
Qt State Machine FrameworkQt State Machine Framework
Qt State Machine Framework
 
Mobile Development with Qt for Symbian
Mobile Development with Qt for SymbianMobile Development with Qt for Symbian
Mobile Development with Qt for Symbian
 
How to Make Your Qt App Look Native
How to Make Your Qt App Look NativeHow to Make Your Qt App Look Native
How to Make Your Qt App Look Native
 
Animation Framework: A Step Towards Modern UIs
Animation Framework: A Step Towards Modern UIsAnimation Framework: A Step Towards Modern UIs
Animation Framework: A Step Towards Modern UIs
 
Using Multi-Touch and Gestures with Qt
Using Multi-Touch and Gestures with QtUsing Multi-Touch and Gestures with Qt
Using Multi-Touch and Gestures with Qt
 
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)
 
The Mobility Project
The Mobility ProjectThe Mobility Project
The Mobility Project
 
Copy Your Favourite Nokia App with Qt
Copy Your Favourite Nokia App with QtCopy Your Favourite Nokia App with Qt
Copy Your Favourite Nokia App with Qt
 
The Next Generation Qt Item Views
The Next Generation Qt Item ViewsThe Next Generation Qt Item Views
The Next Generation Qt Item Views
 

KĂźrzlich hochgeladen

CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 

KĂźrzlich hochgeladen (20)

CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 

Qt on Real Time Operating Systems

  • 1. Qt on Real Time OSs ... or how to get your Qt app on QNX and friends 10/09/09
  • 2. Contents • Some Basics – CPU, Operating System, Windowing System • Hardware Acceleration • Deeper look into... – QNX – VxWorks – INTEGRITY 2
  • 3. Contents Some Basics 3
  • 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
  • 7. Contents CPU Architecture 7
  • 8. Classic layer diagram QtCore Opera)ng  System CPU 8
  • 9. Classic layer diagram + atomics QtCore Atomic Operations Opera)ng  System CPU 9
  • 10. Classic layer diagram + atomics II Atomics QtCore INTEGRITY CPU 10
  • 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
  • 12. Contents Operating Systems 12
  • 13. Classic layer diagram (again) QtCore Opera)ng  System Hardware 13
  • 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
  • 16. Classic OS diagram (simplified) QtCore POSIX Win32 Hardware 16
  • 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
  • 19. Contents Windowing Systems 19
  • 20. Classic layer diagram with GUI QtGui QtCore Windowing  System Opera)ng  System Hardware 20
  • 21. Windowing Systems QtGui X11 S60 Windows Mac  OS  X ??? Linux Solaris Symbian Windows Mac  OS  X RTOS... Hardware 21
  • 22. Introducing QWS • Qt contains it's own Windowing System: “Qt Windowing System” (QWS) • Contains a compositing window manager • Requires direct access to graphics card and input devices (mouse/touchscreen, keyboard/keypad) 22
  • 23. Classic layer diagram with GUI QtGui QtCore QWS Screen  Drivers Opera)ng  System Input  Drivers Hardware 23
  • 24. QWS vs. OS QWS Drivers??? Opera)ng  System Hardware 24
  • 25. QWS diagram with gfx output QWS DirectFB LinuxFB Custom VNC Virtual  FB Opera)ng  System Hardware Network qvW 25
  • 27. Embedded Windowing Systems QtGui X11 QWS Linux Solaris Symbian Windows Mac  OS  X RTOS... Hardware 27
  • 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
  • 29. Contents Hardware Acceleration 29
  • 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
  • 31. Embedded Windowing Systems QtGui X11 QWS ??? ??? Opera)ng  System OpenVG OpenGL  (ES) Hardware 31
  • 32. EGL to the rescue • EGL is the glue layer between Windowing Systems and hardware acceleration (http://www.khronos.org/egl/) 32
  • 33. Embedded Windowing Systems QtGui EGL X11 QWS ??? Opera)ng  System OpenVG OpenGL  (ES) Hardware 33
  • 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
  • 41. Contents Demo 41
  • 42. Contents A Deeper Look Into... QNX 42
  • 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
  • 44. QWS diagram on QNX QWS io-­‐display Custom VNC Experimental! QNX Hardware Network 44
  • 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
  • 47. Contents A Deeper Look Into... VxWorks 46
  • 48. VxWorks • VxWorks port is community supported – About 60 VxWorks specific code changes • Several successful deployments – X11 with OpenGL acceleration 47
  • 49. QtGui diagram on VxWorks QtGui X11 VxWorks Hardware 48
  • 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
  • 52. Contents A Deeper Look Into... INTEGRITY 50
  • 53. INTEGRITY • Only a subset of Qt supported • Port currently only available on request 51
  • 54. Contents Thank you :) (Questions?) 52