![Page 1: Case Study: Porting Qt for Embedded Linux on Embedded Processors](https://reader030.vdocuments.site/reader030/viewer/2022020712/5551d869b4c90501638b45bf/html5/thumbnails/1.jpg)
Porting Qt for Embedded Linux on Embedded Processors Frank Walzer – Texas Instruments
![Page 2: Case Study: Porting Qt for Embedded Linux on Embedded Processors](https://reader030.vdocuments.site/reader030/viewer/2022020712/5551d869b4c90501638b45bf/html5/thumbnails/2.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022020712/5551d869b4c90501638b45bf/html5/thumbnails/3.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022020712/5551d869b4c90501638b45bf/html5/thumbnails/4.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022020712/5551d869b4c90501638b45bf/html5/thumbnails/5.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022020712/5551d869b4c90501638b45bf/html5/thumbnails/6.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022020712/5551d869b4c90501638b45bf/html5/thumbnails/7.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022020712/5551d869b4c90501638b45bf/html5/thumbnails/8.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022020712/5551d869b4c90501638b45bf/html5/thumbnails/9.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022020712/5551d869b4c90501638b45bf/html5/thumbnails/10.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022020712/5551d869b4c90501638b45bf/html5/thumbnails/11.jpg)
Real Applications
TSC2046
OMAP3/OMAP-L1xx
SPI
![Page 12: Case Study: Porting Qt for Embedded Linux on Embedded Processors](https://reader030.vdocuments.site/reader030/viewer/2022020712/5551d869b4c90501638b45bf/html5/thumbnails/12.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022020712/5551d869b4c90501638b45bf/html5/thumbnails/13.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022020712/5551d869b4c90501638b45bf/html5/thumbnails/14.jpg)
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](https://reader030.vdocuments.site/reader030/viewer/2022020712/5551d869b4c90501638b45bf/html5/thumbnails/15.jpg)
Demonstration