SlideShare uma empresa Scribd logo
1 de 54
Baixar para ler offline
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

Mais conteĂșdo relacionado

Mais procurados

Hacking QNX
Hacking QNXHacking QNX
Hacking QNX
ricardomcm
 
Xilkernel
XilkernelXilkernel
Xilkernel
Vincent Claes
 

Mais procurados (20)

QEMU in Cross building
QEMU in Cross buildingQEMU in Cross building
QEMU in Cross building
 
Driving Down Automotive Costs for Richer HMIs with Qt & i.MX RT1170
Driving Down Automotive Costs for Richer HMIs with Qt & i.MX RT1170Driving Down Automotive Costs for Richer HMIs with Qt & i.MX RT1170
Driving Down Automotive Costs for Richer HMIs with Qt & i.MX RT1170
 
Introduction to Qt
Introduction to QtIntroduction to Qt
Introduction to Qt
 
Intro to Embedded OS, RTOS and Communication Protocols
Intro to Embedded OS, RTOS and Communication ProtocolsIntro to Embedded OS, RTOS and Communication Protocols
Intro to Embedded OS, RTOS and Communication Protocols
 
Introduction to CUDA
Introduction to CUDAIntroduction to CUDA
Introduction to CUDA
 
Qt Internationalization
Qt InternationalizationQt Internationalization
Qt Internationalization
 
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
 
Introduction to QML
Introduction to QMLIntroduction to QML
Introduction to QML
 
micro-ROS: Developing ROS 2 professional applications based on MCUs
micro-ROS: Developing ROS 2 professional applications based on MCUsmicro-ROS: Developing ROS 2 professional applications based on MCUs
micro-ROS: Developing ROS 2 professional applications based on MCUs
 
Qt programming-using-cpp
Qt programming-using-cppQt programming-using-cpp
Qt programming-using-cpp
 
Linux-Internals-and-Networking
Linux-Internals-and-NetworkingLinux-Internals-and-Networking
Linux-Internals-and-Networking
 
Switchdev - No More SDK
Switchdev - No More SDKSwitchdev - No More SDK
Switchdev - No More SDK
 
Hacking QNX
Hacking QNXHacking QNX
Hacking QNX
 
êČŒìž„ì„œëČ„í”„ëĄœê·žëž˜ë° #2 - IOCP Adv
êČŒìž„ì„œëČ„í”„ëĄœê·žëž˜ë° #2 - IOCP AdvêČŒìž„ì„œëČ„í”„ëĄœê·žëž˜ë° #2 - IOCP Adv
êČŒìž„ì„œëČ„í”„ëĄœê·žëž˜ë° #2 - IOCP Adv
 
Simultaneously Leveraging Linux and Android in a GENIVI compliant IVI System
Simultaneously Leveraging Linux and Android in a GENIVI compliant IVI System Simultaneously Leveraging Linux and Android in a GENIVI compliant IVI System
Simultaneously Leveraging Linux and Android in a GENIVI compliant IVI System
 
Xilkernel
XilkernelXilkernel
Xilkernel
 
Running distributed tests with k6.pdf
Running distributed tests with k6.pdfRunning distributed tests with k6.pdf
Running distributed tests with k6.pdf
 
Andes RISC-V vector extension demystified-tutorial
Andes RISC-V vector extension demystified-tutorialAndes RISC-V vector extension demystified-tutorial
Andes RISC-V vector extension demystified-tutorial
 
Toolchain
ToolchainToolchain
Toolchain
 
Andes building a secure platform with the enhanced iopmp
Andes building a secure platform with the enhanced iopmpAndes building a secure platform with the enhanced iopmp
Andes building a secure platform with the enhanced iopmp
 

Semelhante a Qt on Real Time Operating Systems

Embedded Linux Talk Uni Forum
Embedded Linux Talk Uni ForumEmbedded Linux Talk Uni Forum
Embedded Linux Talk Uni Forum
Sumant Diwakar
 
Fedora Virtualization Day: Linux Containers & CRIU
Fedora Virtualization Day: Linux Containers & CRIUFedora Virtualization Day: Linux Containers & CRIU
Fedora Virtualization Day: Linux Containers & CRIU
Andrey 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 development
csdnmobile
 
Low fat virtualization for embedded systems
Low fat virtualization for embedded systemsLow fat virtualization for embedded systems
Low fat virtualization for embedded systems
Jacques Supcik
 
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
aaajjj4
 

Semelhante a 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
 

Mais de account inactive

Mais 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
 

Último

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Último (20)

Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 

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