By Nithya Ruff
I recently attended the Embedded Linux Conference in Barcelona representing Synopsys. I must admit, it is nice to have conferences in beautiful places so you can kill two birds with one stone. When not networking, speaking or sitting in sessions, I enjoyed seeing the beauty of Antoni Gaudi’s architecture, some great vegetarian restaurants like Juicy Jones and, of course, I enjoyed the Sangria. But this is not a travelogue. It’s about what is happening in embedded Linux today and four areas of transformation.
The Sagrada Família, Antoni Gaudí's unfinished masterpiece.
Having been in Embedded for the last six years, I have seen some radical changes. Coming from enterprise Linux and applications, it was a complex world to navigate a small footprint, real-time performance, cross development, a dizzying array of architectures and custom hardware. However, I have seen this industry go from specialized RTOS and hand-rolled OS to more standard embedded distributions and, of course, Android. But when you look at the various sessions at the conference, you realize that we still have a way to go before this world of embedded software development is tamer and easier. Check out the session here and you’ll see a lot of sessions on debugging and words like Apocalypse.
This challenging state is, of course, compounded by the continued rise in hardware complexity, volume of devices and applications to be supported and the volume and pace of embedded devices. So, if the fragmentation and custom nature of embedded Linux was bad before, it is worse now because of the rising complexity. Many tools are suggested; many techniques and guidelines are offered. But this is still nowhere near the simplification needed. In surveying what is happening, four shining areas come to mind that are creating standards and common practices and making a difference.
The first area that is making a real difference is the Linaro organization. Linaro is a not-for-profit engineering organization consolidating and optimizing open source Linux software and tools for the ARM architecture. The reason they make a real difference is the sheer volume of devices being created based on ARM in mobile, consumer and in many other vertical areas, in addition to the hundreds of ARM licensees who each add differentiation to their ARM chip. This made for a large number of ARM processor patches being contributed back upstream and a complexity problem in dealing with the vast variety. But licensees came together in the Linaro organization, which streamlined and standardized the work around ARM software. Their work has paid off. Linus Torvalds has changed his characterization of the “ARM thing” from a “pain” to “an outstanding citizen.”
The second major movement in embedded in the past few years has been the Yocto Project. Processor companies, OS companies, tool companies and services companies all came together to reduce complexity of developing embedded Linux, BSPs and increasing leverage and re-use. The project describes itself as “an open source collaboration project that provides templates, tools and methods to help you create custom Linux-based systems for embedded products regardless of hardware architecture,” helping semis create OSes and BSP formats that can be used by OS companies without having to recreate everything. It also allows customers who start with semi OSes to move to commercial OSes without losing the work and hardware optimization from the semis. These are good objectives for creating more reuse and leverage across supply chains and less islands of work. It is still a young project and has more to do to enable use by semis. But it is a great start and has the right objectives. You can find out more here.
The third area is developing software without hardware, or with more hardware awareness. At the conference, a number of people talked about the black box called hardware. In embedded it is compounded by the custom nature of hardware and the numerous architectures supported. The other aspect of the complexity is just getting access to hardware early enough to do software development and testing software that is specific to that hardware. Moreover, as one person said, the hardware is quirky and still in development. Software developers have always been smart about using emulators and other means of testing their product as hardware has either been expensive, fragile, limited or late to get their hands-on. While a lot of software developers are familiar with QEMU, when we shared what virtual prototyping can do, many were excited and interested because it creates a software prototype of hardware, not just standard hardware but custom hardware.
Even the most complex SoCs can be modeled in the right level of abstraction and speed software development. The benefit of having a prototype on your host or development computer is that it is fast, gives you analysis, profiling and tracing views. Further, when you can control it and make it stop, start and play certain scenarios, all without altering the hardware or software, it’s powerful. As more and more software is being developed at semi vendors, those are the places where prototypes are being created and used extensively. They simply use the specs that already are created for designing the chip into prototypes. This allows them to develop software, upstream contributions, and test the software. One way of beating complexity is to just invest more time and tools into the problem. When tools allow you to peer into what was once a black box for software developers, the problem becomes simpler to tackle. Further, if time is on your side and you can tackle much of the complexity by breaking it down into pieces and solving each, you have a chance to conquer complexity.
The last one is the events themselves that bring developers together. Linux and Android events are like no other. They focus on the developer at the center of the conference and arrange labs, tutorials, discussion groups and social events all around collaboration. These events, which started out informally, are now well organized by the Linux Foundation and other similar organizations. The level of openness and sharing at these events always surprises me in a good way. Going to an event like this, a new developer is often mentored. And, developing a relationship with maintainers helps you understand the optimal way to work with the projects. All together, this is the glue that keeps Linux and innovation moving. The former Consumer Electronics Linux Forum is now part of the Linux Foundation and is the backbone of the Embedded Linux Conference.
Just like the beautiful Sagrada Familia cathedral designed and started by Gaudi, embedded Linux is a work in progress. But it is more complete every time you look—and one day it will be ready for those billions of devices that will be based on it.
The Embedded Linux Conference brings developers together.
—Nithya Ruff is director of product marketing for Virtualizer Solutions at Synopsys.