Download - Case Study: Porting Qt for Embedded Linux on Embedded Processors

Transcript
Page 1: Case Study: Porting Qt for Embedded Linux on Embedded Processors

Porting Qt for Embedded Linux on Embedded Processors Frank Walzer – Texas Instruments

Page 2: Case Study: Porting Qt for Embedded Linux on Embedded Processors

Beagle Board

Peripheral I/ODVI-D video outSD/MMC+S-Video outUSB 2.0 HS OTGI2C, I2S, SPI,MMC/SDJTAGStereo in/outAlternate powerRS-232 serial

OMAP3530 Processor600MHz Cortex-A8

NEON+VFPv316KB/16KB L1$256KB L2$

430MHz C64x+ DSP32K/32K L1$48K L1D32K L2

PowerVR SGX GPU64K on-chip RAM

POP Memory256MB LPDDR RAM256MB NAND flash

USB Powered2W maximum consumption

OMAP is small % of thatMany adapter options

Car, wall, battery, solar, …

10 cm

Page 3: Case Study: Porting Qt for Embedded Linux on Embedded Processors

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 WalzerSenior System EngineerTexas Instruments [email protected]

Page 4: Case Study: Porting Qt for Embedded Linux on Embedded Processors

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

Page 5: Case Study: Porting Qt for Embedded Linux on Embedded Processors

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

Page 6: Case Study: Porting Qt for Embedded Linux on Embedded Processors

OMAP3530 Processor

ARM®

Cortex™-A8CPU

L3/L4 Interconnect

C64x+™ DSP and video accelerators (3525/3530 only)

Peripherals

Program/Data Storage

System

I2Cx3

Serial Interfaces

Display Subsystem

Connectivity

MMC/SD/

SDIOx3

USBHost Controller x3

USB 2.0 HSOTG

Controller

GPMC

SDRCUART

x2

UARTw/IRDA

McBSPx5

McSPIx4

TimersGP x12WDT x2

Image Pipe Parallel I/F

Camera I/FPOWERVR SGX™Graphics

(3515/3530 only)

HDQ /1-wire

OMAP35x Processor

10 bit DACVideoEnc 10 bit DAC

LCDCont-roller

Page 7: Case Study: Porting Qt for Embedded Linux on Embedded Processors

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

Page 8: Case Study: Porting Qt for Embedded Linux on Embedded Processors

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

Page 9: Case Study: Porting Qt for Embedded Linux on Embedded Processors

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

Page 10: Case Study: Porting Qt for Embedded Linux on Embedded Processors

Demo Software Stack – OMAP-L1

ARM / Peripherals DSP

MV Pro5Linux Ethernet

Qt 4.5 Embedded Linux

Graphic Acceleration

(optional)

Temperature Demo

OS: MV pro5 LinuxQt 4.5 framework abstracts OS APIApplication program using C++ Object Oriented ProgrammingDebug on other platforms possible due to Qt 4.5 cross-platform supportHigh abstraction on application level leads to fast development

USB/ACM Display Timer

Linux API

GUI/FB TCP/IPSerial IO Timer

Page 11: Case Study: Porting Qt for Embedded Linux on Embedded Processors

Real Applications

TSC2046

OMAP3/OMAP-L1xx

SPI

Page 12: Case Study: Porting Qt for Embedded Linux on Embedded Processors

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

Page 13: Case Study: Porting Qt for Embedded Linux on Embedded Processors

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

Page 14: Case Study: Porting Qt for Embedded Linux on Embedded Processors

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

Page 15: Case Study: Porting Qt for Embedded Linux on Embedded Processors

Demonstration