Porting Qt for Embedded Linux on
Embedded Processors
Frank Walzer – Texas Instruments
Beagle Board
                                              Peripheral I/O
OMAP3530 Processor                             DVI-D video out
 600MHz Cortex-A8        10 cm
                                               SD/MMC+
     NEON+VFPv3                                S-Video out
     16KB/16KB L1$
                                               USB 2.0 HS OTG
     256KB L2$
                                               I2C, I2S, SPI,
 430MHz C64x+ DSP
     32K/32K L1$                               MMC/SD
     48K L1D                                   JTAG
     32K L2                                    Stereo in/out
 PowerVR SGX GPU                               Alternate power
 64K on-chip RAM                               RS-232 serial

POP Memory
                                    USB Powered
 256MB LPDDR RAM                     2W maximum consumption
 256MB NAND flash                         OMAP is small % of that
                                     Many adapter options
                                          Car, wall, battery, solar, …
Agenda


•   Motivation for using Qt at Texas Instruments
•   Porting Qt to TI Embedded Processors
•   What do we do with Qt?
•   Enhancing Qt through Accelerators
•   Future

                        Frank Walzer
                        Senior System Engineer
                        Texas Instruments Germany
                        f-walzer@ti.com
Motivation


• Complexity, complexity, complexity…
• Reduce amount of time to build a real system
   –   System software
   –   Feature complete
   –   Easy to learn & use
   –   OS API abstraction
   –   Cross-platform support
   –   Modular & flexible
   –   Open-source
• So we found Qt™
• Many other options exist but none are matching our
  requirements any better
Porting Qt to Embedded Processors


•   Many TI Embedded Processors are ARM core based
     – ARM supported as architecture in Qt
     – Qt Embedded Linux our standard choice
•   Follow the Qt build process
     –   Get source download or use Git to clone Gitorious Qt tree(s)
     –   Adaptation of mkspecs as needed
     –   Configure, compile & test
     –   Usually painless
•   Already tested devices
     –   OMAP35xx family (Cortex-A8, DSP, PowerVR SGX)
     –   AM35xx (Cortex-A8, PowerVR SGX)
     –   OMAP-L137/L138 (ARM9, DSP)
     –   DM365 and DM644x (ARM9)
•   Modifications to Qt sources?
     – Only once to work around a framebuffer issue (two lines of code)
     – 100% of demos and examples work unmodified
     – Expect changes needed for optimized hardware integration
OMAP3530 Processor
OMAP35x Processor
                              C64x+™ DSP and                      Display Subsystem
                             video accelerators
                              (3525/3530 only)
                                                                 LCD
    ARM®                                                                  Video      10 bit DAC
                                                                Cont-
                                                                roller     Enc       10 bit DAC
  Cortex™-A8
     CPU
                             POWERVR SGX™                                Camera I/F
                                 Graphics
                              (3515/3530 only)
                                                                 Image Pipe       Parallel I/F




                                  L3/L4 Interconnect


 Peripherals                        Connectivity                              System

                             USB 2.0 HS                                       Timers
                                                 USB
                                OTG                                           GP x12
                                           Host Controller x3
                              Controller                                      WDT x2
      Serial Interfaces                                 Program/Data Storage
  McBSP    I2C      UART          HDQ /
                     x2                                 SDRC                  MMC/
    x5      x3                    1-wire
                                                                               SD/
                                                        GPMC                  SDIO
  McSPI             UART
   x4               w/IRDA                                                     x3
Our Use of Qt

•   Ability to support customers porting Qt
     – Drive Qt releases to include tested mkspecs targeting TI devices
     – Provide example configurations to enable advanced hardware
•   Creation of focused applications
     – Targeted end-equipment GUIs
     – Customer or major event support
     – From bare GUI prototype to full applications
•   Standard demonstrations
     – Using Qt demos and examples a lot!
•   Benchmarks
     – Either Qt demos & examples or small applications
     – qgears for graphics
•   Early system testing
     – Quick way to evaluate complex peripherals on new hardware
Qt Application Development

• Often done cross-platform
   – New hardware not available in time
   – More efficient on PC
   – 99% of Qt application source code can be directly cross-
     compiled with no modification
        • Serial port exception!
• Porting final applications to multiple platforms
   –   Embedded platforms supported with multiple operating systems
   –   Again limited hardware availability
   –   Identical GUI maybe shown using PC only
   –   Rapid prototyping
Development Experience

• Focused on Qt Embedded Linux
• Human Machine Interface demo
   –   Done in 5 weeks
   –   New graphical display & communications
   –   1 student + 0.5 engineers
   –   Started on OMAP3 and ported to OMAP-L1
   –   New hardware, new to Qt
• Weight Scale GUI prototype
   – 2 days
   – Developed on PC and tested on OMAP3
     EVM using touch screen control
• Several customer applications
   – Just compile and run
   – For benchmarking on different OS
Demo Software Stack – OMAP-L1

  OS: MV pro5 Linux
  Qt 4.5 framework abstracts OS API
  Application program using C++ Object Oriented Programming
  Debug on other platforms possible due to Qt 4.5 cross-platform support
  High abstraction on application level leads to fast development



                        Temperature Demo

                 Qt 4.5 Embedded Linux

           GUI/FB    Serial IO   TCP/IP   Timer


                        Linux API                            Graphic
MV Pro5                                                    Acceleration
 Linux    Ethernet   USB/ACM Display      Timer             (optional)

              ARM / Peripherals                                DSP
Real Applications




                    TSC2046



                      SPI

                 OMAP3/
                OMAP-L1xx
Enhancing Qt

• Full support for embedded hardware beyond ARM core
   – PowerVR SGX core for OpenGLES, OpenVG
   – C6xxx DSP for effective signal processing
• Ready to use with Qt classes
   – Initial support in Qt for OpenGLES
   – Still evaluating best use cases
• DSP designated for multimedia applications
   – Possible integration of TI gstreamer-plugin with Phonon?
   – Already requested by customers
   – Very early discussion phase
• Optimizing Qt for dedicated hardware requires support
  from silicon vendor
Future

• Provide full Qt porting support
  – Using gitorious as platform
  – Update when new devices appear
  – Wiki: http://omap.wiki.com/Building_Qt
• Evaluate Qt 4.6 SVG support
  – Does it integrate well with OpenVG API on OMAP3?
• Drive Qt use in TI on world-wide level
• Develop additional reference applications
  – Industrial automation market
  – Use Qt as GUI for process control software
Summary

• Customers can benefit from Qt in a similar way
  –   Highly efficient development
  –   Portable and re-usable (C++)
  –   Great GUI creation tools
  –   Same constraints on resources as we have
• We stepped into Qt at the right time
  – Highly successful projects for TI
  – Lots of customer requests
  – Plays well with TI plans and needs for Embedded
    Processing
Demonstration

Case Study: Porting Qt for Embedded Linux on Embedded Processors

  • 1.
    Porting Qt forEmbedded Linux on Embedded Processors Frank Walzer – Texas Instruments
  • 2.
    Beagle Board Peripheral I/O OMAP3530 Processor DVI-D video out 600MHz Cortex-A8 10 cm SD/MMC+ NEON+VFPv3 S-Video out 16KB/16KB L1$ USB 2.0 HS OTG 256KB L2$ I2C, I2S, SPI, 430MHz C64x+ DSP 32K/32K L1$ MMC/SD 48K L1D JTAG 32K L2 Stereo in/out PowerVR SGX GPU Alternate power 64K on-chip RAM RS-232 serial POP Memory USB Powered 256MB LPDDR RAM 2W maximum consumption 256MB NAND flash OMAP is small % of that Many adapter options Car, wall, battery, solar, …
  • 3.
    Agenda • Motivation for using Qt at Texas Instruments • Porting Qt to TI Embedded Processors • What do we do with Qt? • Enhancing Qt through Accelerators • Future Frank Walzer Senior System Engineer Texas Instruments Germany f-walzer@ti.com
  • 4.
    Motivation • Complexity, complexity,complexity… • Reduce amount of time to build a real system – System software – Feature complete – Easy to learn & use – OS API abstraction – Cross-platform support – Modular & flexible – Open-source • So we found Qt™ • Many other options exist but none are matching our requirements any better
  • 5.
    Porting Qt toEmbedded Processors • Many TI Embedded Processors are ARM core based – ARM supported as architecture in Qt – Qt Embedded Linux our standard choice • Follow the Qt build process – Get source download or use Git to clone Gitorious Qt tree(s) – Adaptation of mkspecs as needed – Configure, compile & test – Usually painless • Already tested devices – OMAP35xx family (Cortex-A8, DSP, PowerVR SGX) – AM35xx (Cortex-A8, PowerVR SGX) – OMAP-L137/L138 (ARM9, DSP) – DM365 and DM644x (ARM9) • Modifications to Qt sources? – Only once to work around a framebuffer issue (two lines of code) – 100% of demos and examples work unmodified – Expect changes needed for optimized hardware integration
  • 6.
    OMAP3530 Processor OMAP35x Processor C64x+™ DSP and Display Subsystem video accelerators (3525/3530 only) LCD ARM® Video 10 bit DAC Cont- roller Enc 10 bit DAC Cortex™-A8 CPU POWERVR SGX™ Camera I/F Graphics (3515/3530 only) Image Pipe Parallel I/F L3/L4 Interconnect Peripherals Connectivity System USB 2.0 HS Timers USB OTG GP x12 Host Controller x3 Controller WDT x2 Serial Interfaces Program/Data Storage McBSP I2C UART HDQ / x2 SDRC MMC/ x5 x3 1-wire SD/ GPMC SDIO McSPI UART x4 w/IRDA x3
  • 7.
    Our Use ofQt • Ability to support customers porting Qt – Drive Qt releases to include tested mkspecs targeting TI devices – Provide example configurations to enable advanced hardware • Creation of focused applications – Targeted end-equipment GUIs – Customer or major event support – From bare GUI prototype to full applications • Standard demonstrations – Using Qt demos and examples a lot! • Benchmarks – Either Qt demos & examples or small applications – qgears for graphics • Early system testing – Quick way to evaluate complex peripherals on new hardware
  • 8.
    Qt Application Development •Often done cross-platform – New hardware not available in time – More efficient on PC – 99% of Qt application source code can be directly cross- compiled with no modification • Serial port exception! • Porting final applications to multiple platforms – Embedded platforms supported with multiple operating systems – Again limited hardware availability – Identical GUI maybe shown using PC only – Rapid prototyping
  • 9.
    Development Experience • Focusedon Qt Embedded Linux • Human Machine Interface demo – Done in 5 weeks – New graphical display & communications – 1 student + 0.5 engineers – Started on OMAP3 and ported to OMAP-L1 – New hardware, new to Qt • Weight Scale GUI prototype – 2 days – Developed on PC and tested on OMAP3 EVM using touch screen control • Several customer applications – Just compile and run – For benchmarking on different OS
  • 10.
    Demo Software Stack– OMAP-L1 OS: MV pro5 Linux Qt 4.5 framework abstracts OS API Application program using C++ Object Oriented Programming Debug on other platforms possible due to Qt 4.5 cross-platform support High abstraction on application level leads to fast development Temperature Demo Qt 4.5 Embedded Linux GUI/FB Serial IO TCP/IP Timer Linux API Graphic MV Pro5 Acceleration Linux Ethernet USB/ACM Display Timer (optional) ARM / Peripherals DSP
  • 11.
    Real Applications TSC2046 SPI OMAP3/ OMAP-L1xx
  • 12.
    Enhancing Qt • Fullsupport for embedded hardware beyond ARM core – PowerVR SGX core for OpenGLES, OpenVG – C6xxx DSP for effective signal processing • Ready to use with Qt classes – Initial support in Qt for OpenGLES – Still evaluating best use cases • DSP designated for multimedia applications – Possible integration of TI gstreamer-plugin with Phonon? – Already requested by customers – Very early discussion phase • Optimizing Qt for dedicated hardware requires support from silicon vendor
  • 13.
    Future • Provide fullQt porting support – Using gitorious as platform – Update when new devices appear – Wiki: http://omap.wiki.com/Building_Qt • Evaluate Qt 4.6 SVG support – Does it integrate well with OpenVG API on OMAP3? • Drive Qt use in TI on world-wide level • Develop additional reference applications – Industrial automation market – Use Qt as GUI for process control software
  • 14.
    Summary • Customers canbenefit from Qt in a similar way – Highly efficient development – Portable and re-usable (C++) – Great GUI creation tools – Same constraints on resources as we have • We stepped into Qt at the right time – Highly successful projects for TI – Lots of customer requests – Plays well with TI plans and needs for Embedded Processing
  • 15.