Citius, Altius, Fortius
Faster, Higher, Stronger – the Olympic motto could just as easily be applied to the expectations driving the alarming rate of evolution of embedded hardware. In the form of today’s mobile devices, we now hold more processing power than high-end PCs of yesteryears! A single mobile device has replaced the functionality of a myriad of discrete devices: GPS, camera, pager, voice recorder etc. on top of still functioning as a phone!
Embedded hardware has evolved from simple 8/16-bit microcontrollers and single/multi-core processors to the more complex new generation multi-core heterogeneous SoCs. For example, the latest generation DRA74x “Jacinto 6” automotive infotainment processor from Texas Instruments includes dual ARM® Cortex™-A15 cores, quad Cortex-M4 cores and dual SGX544 3D graphics cores – all on the same chip! This multi-core multi-OS heterogeneous device is capable of supporting applications on multiple runtimes, e.g. Linux and a RTOS, concurrently.
All of this progress is great news for the end consumer, perhaps not so much for the embedded developer who has to deal with the significant increase in complexity. Developing multi-threaded applications that take full advantage of a multi-core architecture is in itself quite challenging. On top of this, accounting for multiple-OSes and delivering a fully performance optimized system in ever shrinking time-to-market windows is no trivial task. At the end of the day, the best hardware is only as good as the software and the tools that enable it.
Enabling the highest development productivity without sacrificing product quality or missing deadlines is the holy grail of product development. This is achieved only with the right combination of the effective resources: both human and technical. Embedded development tools play a crucial role in this equation. While embedded hardware has grown by leaps and bounds, progress of software development flows has been slow. The overall development methodology has not seen any major changes. For example, performance optimization, which is becoming increasingly critical in differentiating one’s product offerings, is not usually included as part of a typical development schedule. Optimization steps, if any, are performed towards the tail-end of the development flow, mostly out of necessity rather than by design.
An enhanced embedded development methodology built upon efficient practices and newer, powerful tools could be viewed as a strategic differentiator for an organization, providing an advantage over its competitors in the industry. A new whitepaper authored by my colleague Don Harbin proposes one such methodology, built upon software instrumentation. Trace instrumentation technology offers significant potential and broadly speaking, can be applied on two separate fronts – to fortify an existing debugging flow and also to optimize embedded application performance.
Read the paper to learn more about how to leverage open-source trace technologies such as LTTng along with powerful tools like Sourcery Analyzer to build a new performance-driven embedded design methodology.