Embedded Linux can claim at least two great achievements in standardization in the past few years, according to Wolfgang Denk, managing director of DENX Software Engineering and creator of U-Boot, the open source universal boot loader for embedded devices. First, developers were not completely disrupted with the introduction of ARM systems.
"Thanks to Linux, the low level hardware details are well abstracted away, and on the application level it does not really matter at all which exact architecture or SoC you are working with," Denk said via email.
And second, the rapid adoption of the Yocto Project, the open source build system, as "the best approximation of a standard Linux distribution for embedded systems we ever had so far," he said.
In this Q&A, Denk discusses the upcoming U-Boot release; the future of U-Boot; the current state and future of embedded Linux and Android; the role of the Yocto Project in standardizing embedded development; and the best tools for embedded developers.
U-Boot v2013.04 was released two months ago and you have another version set for release in July. What’s new?
Wolfgang Denk: I'm happy to see that the project goes on in a well- organized, predictable way. When I had to give up the role as U-Boot maintainer in autumn last year due to personal reasons I was not sure what would happen, but fortunately Tom Rini agreed to take over, and he has been doing a marvelous job since. He and the other custodians, and of course the huge number of developers who form this community, continue to drive this project. It's reassuring to see that the project has reached a point where it can stand and walk on its own feet.
The most interesting recent features are the improved support for cryptographically signed images (as used for example by the Chromium project), and the "Falcon" boot mode, which allows for very short boot times while still maintaining the flexibility of the full U-Boot toolbox.
What are important future activities in U-Boot development?
Two important tasks that are in early prototyping stages right now are adapting the Linux kernel's Kconfig approach for configuration, and the development of a new device driver model. I highly appreciate all efforts to further these developments and expect to hear more about this at the U-Boot summit at the Embedded Linux Conference Europe in Edinburgh.
What’s the current state of embedded Linux, especially given the rise of Android and mobile devices?
Linux is - and has been for a number of years – the unchallenged top OS for all kinds of applications, including and especially for embedded applications. But the really dramatic changes do not happen in Linux, but in the hardware. If you consider the landslide-like move from Power Architecture to ARM systems in the last two or three years it is highly notable that this happened without disconcertment for both developers and users: thanks to Linux, the low level hardware details are well abstracted away, and on application level it does not really matter at all which exact architecture or SoC you are working with. This is really a great achievement.
We see an increased usage of Linux in environments where security and/or reliability is essential, like thermal and hydro power plants, smart meters and such, but also in systems with hard real-time requirements, where we use the Xenomai real-time extension, which also allows to emulate proprietary RTOS like pSOS+ or VxWorks so existing code can be re-used.
With our focus on the industrial embedded market we don't see much of Android yet. Of course we support it, and there are a few customers who ask for it, but at least so far Android does not really play a role in the DENX business. Most customers in the embedded market understand that Android is a good OS and software stack for smartphones and tablets, but not really well suited for classical embedded projects. This has been discussed often enough before so I don't have to repeat the arguments. If you are interested, read The Penguin and the Droid - a Comparison or Defining Android vs. Embedded Linux.
Where is embedded Linux headed?
With the quickly growing capabilities (CPU performance, memory and storage sizes) we see less and less need for resource-optimized configurations. This allows a growing number of systems to use (either unchanged, or with minimal adaptations) off-the-shelf solutions like for example the Linux Foundation's Yocto Project, or even standard distributions like Ubuntu. This allows for standardization, and the growing size of the community leads to improved overall quality, both very important benefits.
I see more and more companies pushing their code into U-Boot and Linux mainline. This is a very good thing, but there is still a long way to go for many of them. Especially most of the chip vendor trees are only usable for prototyping, but not for real life projects.
What’s your involvement in the Yocto Project?
We have long been waiting for a project like Yocto – a community driven open source project and with the full commitment of the Linux Foundation. We were happy to drop efforts of developing our own "embedded distribution" and switch to basing related works on top of Yocto right from the beginning.
Where is the Yocto Project headed and what do you see as its role in embedded Linux development?
The Yocto Project has become the best approximation of a standard Linux distribution for embedded systems we ever had so far. We see more and more customers, projects and vendors adapting this approach. This is really a great achievement.
What are some advantages of the Denx Embedded Linux Development Kit for embedded developers?
The ELDK is intended as a Yocto jump-start package.
To use Yocto on a custom board, you will have to create your own board configuration and then run a build of the tool chain (SDK) and the target packages. This includes the download of several gigabytes of data and requires significant CPU power and storage capacity. In short, it takes a long time before you can actually run your first example code.
ELDK allows you to download and install precompiled binaries that are not specific to just one board, but can be used for any system based on one of the supported CPU architectures. This allows you to start developing and testing your own code within minutes, without need for lengthy and resource intensive software builds of the cross tool chain or the target libraries and tools.
But of course ELDK also allows customization for specific hardware, so the customers can use it as a software production environment for their own specific projects - a task that before Yocto everybody had to solve on his own.
What are some other essential tools for embedded developers?
First of all git; without git projects like Linux or U-Boot or so many others could not be run even nearly as efficiently as they are today, if at all.
Yocto and the underlying bitbake build tool are essential when you start building your own target images or even your own project or product-specific distribution.
The Linux kernel offers a number of powerful tracing tools which appear to be largely unknown, which is a pity.
Last but not least, people can get a lot of work done if they really know and use the standard Unix toolbox - give me bash, find, grep, sed and I will feel at home; add awk, perl, python, gcc and gdb and I will need little more.