SlideShare une entreprise Scribd logo
1  sur  54
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

Introduction to Qt Creator
Introduction to Qt CreatorIntroduction to Qt Creator
Introduction to Qt CreatorQt
 
Android Multimedia Player Project Presentation
Android Multimedia Player Project PresentationAndroid Multimedia Player Project Presentation
Android Multimedia Player Project PresentationRashmi Gupta
 
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
 
ALSS14: Xen Project Automotive Hypervisor (Demo)
ALSS14: Xen Project Automotive Hypervisor (Demo)ALSS14: Xen Project Automotive Hypervisor (Demo)
ALSS14: Xen Project Automotive Hypervisor (Demo)The Linux Foundation
 
RunX: deploy real-time OSes as containers at the edge
RunX: deploy real-time OSes as containers at the edgeRunX: deploy real-time OSes as containers at the edge
RunX: deploy real-time OSes as containers at the edgeStefano Stabellini
 
Jetpack Compose.pptx
Jetpack Compose.pptxJetpack Compose.pptx
Jetpack Compose.pptxGDSCVJTI
 
Device tree support on arm linux
Device tree support on arm linuxDevice tree support on arm linux
Device tree support on arm linuxChih-Min Chao
 
Lecture 6 introduction to open gl and glut
Lecture 6   introduction to open gl and glutLecture 6   introduction to open gl and glut
Lecture 6 introduction to open gl and glutsimpleok
 
Scaling Eclipse on HiDPI Monitors - Niraj Modi
Scaling Eclipse on HiDPI Monitors - Niraj ModiScaling Eclipse on HiDPI Monitors - Niraj Modi
Scaling Eclipse on HiDPI Monitors - Niraj ModiEclipse Day India
 
Understaing Android EGL
Understaing Android EGLUnderstaing Android EGL
Understaing Android EGLSuhan Lee
 
UEFI時代のブートローダ
UEFI時代のブートローダUEFI時代のブートローダ
UEFI時代のブートローダTakuya ASADA
 
Lessons Learned from Building 100+ C++/Qt/QML Devices
Lessons Learned from Building 100+ C++/Qt/QML DevicesLessons Learned from Building 100+ C++/Qt/QML Devices
Lessons Learned from Building 100+ C++/Qt/QML DevicesICS
 
Meet Qt 6.0
Meet Qt 6.0 Meet Qt 6.0
Meet Qt 6.0 Qt
 
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3Linaro
 
We Love Performance! How Tic Toc Games Uses ECS in Mobile Puzzle Games
We Love Performance! How Tic Toc Games Uses ECS in Mobile Puzzle GamesWe Love Performance! How Tic Toc Games Uses ECS in Mobile Puzzle Games
We Love Performance! How Tic Toc Games Uses ECS in Mobile Puzzle GamesUnity Technologies
 

Tendances (20)

Introduction to Qt Creator
Introduction to Qt CreatorIntroduction to Qt Creator
Introduction to Qt Creator
 
Android Multimedia Player Project Presentation
Android Multimedia Player Project PresentationAndroid Multimedia Player Project Presentation
Android Multimedia Player Project Presentation
 
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
 
A prentation on github
A prentation on githubA prentation on github
A prentation on github
 
ALSS14: Xen Project Automotive Hypervisor (Demo)
ALSS14: Xen Project Automotive Hypervisor (Demo)ALSS14: Xen Project Automotive Hypervisor (Demo)
ALSS14: Xen Project Automotive Hypervisor (Demo)
 
RunX: deploy real-time OSes as containers at the edge
RunX: deploy real-time OSes as containers at the edgeRunX: deploy real-time OSes as containers at the edge
RunX: deploy real-time OSes as containers at the edge
 
Jetpack Compose.pptx
Jetpack Compose.pptxJetpack Compose.pptx
Jetpack Compose.pptx
 
Device tree support on arm linux
Device tree support on arm linuxDevice tree support on arm linux
Device tree support on arm linux
 
Lecture 6 introduction to open gl and glut
Lecture 6   introduction to open gl and glutLecture 6   introduction to open gl and glut
Lecture 6 introduction to open gl and glut
 
Flutter beyond hello world
Flutter beyond hello worldFlutter beyond hello world
Flutter beyond hello world
 
Qt 5 - C++ and Widgets
Qt 5 - C++ and WidgetsQt 5 - C++ and Widgets
Qt 5 - C++ and Widgets
 
OpenGL basics
OpenGL basicsOpenGL basics
OpenGL basics
 
Scaling Eclipse on HiDPI Monitors - Niraj Modi
Scaling Eclipse on HiDPI Monitors - Niraj ModiScaling Eclipse on HiDPI Monitors - Niraj Modi
Scaling Eclipse on HiDPI Monitors - Niraj Modi
 
Understaing Android EGL
Understaing Android EGLUnderstaing Android EGL
Understaing Android EGL
 
Epoxy 介紹
Epoxy 介紹Epoxy 介紹
Epoxy 介紹
 
UEFI時代のブートローダ
UEFI時代のブートローダUEFI時代のブートローダ
UEFI時代のブートローダ
 
Lessons Learned from Building 100+ C++/Qt/QML Devices
Lessons Learned from Building 100+ C++/Qt/QML DevicesLessons Learned from Building 100+ C++/Qt/QML Devices
Lessons Learned from Building 100+ C++/Qt/QML Devices
 
Meet Qt 6.0
Meet Qt 6.0 Meet Qt 6.0
Meet Qt 6.0
 
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3
 
We Love Performance! How Tic Toc Games Uses ECS in Mobile Puzzle Games
We Love Performance! How Tic Toc Games Uses ECS in Mobile Puzzle GamesWe Love Performance! How Tic Toc Games Uses ECS in Mobile Puzzle Games
We Love Performance! How Tic Toc Games Uses ECS in Mobile Puzzle Games
 

Similaire à 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
 
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
 

Similaire à 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
 

Plus de 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
 
Scripting Your Qt Application
Scripting Your Qt ApplicationScripting Your Qt Application
Scripting Your Qt Applicationaccount 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
 
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
 

Plus de 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
 
Scripting Your Qt Application
Scripting Your Qt ApplicationScripting Your Qt Application
Scripting Your Qt Application
 
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
 

Dernier

Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 

Dernier (20)

Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 

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