Intro to Embedded Linux Part 1: Defining Android vs. Embedded Linux

By Libby Clark - March 6, 2013 - 4:39pm

Is Android the new embedded Linux? Of course not, said Karim Yaghmour, OperSys founder, during the panel discussion on this topic at the Android Builders Summit[1] last month in San Francisco. It was a question meant to spur discussion, he said, that’s all.

It worked. The idea ignited a lively debate among embedded Linux pros with three of the four panelists ultimately siding with Yaghmour. What seemed to be their litmus test? If Android can conceivably be used in “classic” embedded projects, it is embedded Linux.

A classic embedded device has a fixed function, argued Tim Bird, senior staff engineer for Sony Entertainment, in the panel discussion. “When you bake it at the factory that’s what it does forever. “ By this definition, Android is not embedded Linux because it’s “more of a platform play,” he said.

Google custom-built Android as a mobile operating system that comes with its own ecosystem, separate from the classic Linux ecosystem. Its user interface is optimized for touch screen devices. It comes with a set of APIs that make for a more standardized application development environment. And Android devices can tap a slew of Google services.

Android makes a lot of sense when building an embedded device that needs access to those features. But most classic embedded devices don’t need Google maps, for example. And therefore, the panelists largely concluded, Android is not embedded Linux.

A Viable Embedded Replacement

But the line between what is and is not a mobile device is blurring. Processors shrink in size, get more powerful and cheaper. And everyday things, from TVs to parking meters, are more connected.

“As the capabilities of the hardware changes, the definition of embedded Linux is bound to change as well,” said John Cherry, senior engineering manager at Mentor Graphics, via email.

Android becomes an appealing alternative as those “classics” get smarter and become more phone/tablet/ TV-like. Some would even say Android becomes a viable embedded Linux replacement because it standardizes software development for such devices.

“Before the invention of the loom you had artisans that would craft textiles. The loom standardized how you created textiles,” said Zach Pfeffer, who leads the Android effort at Linaro, during the ABS panel. “Android is the loom for craft weavers.”

Still, Android may be gaining in popularity but it has a ways to go before it’s used in equal proportion to embedded Linux, let alone replaces it. It’s still a distant second to “classic” embedded Linux varieties that dominate as the OS of choice for embedded developers. In a recent EE Times survey, 50 percent of developers planned to use embedded Linux in their projects this year, compared with 16 percent using Android, according to an analysis by LinuxGizmos[2].

Android as ‘Linux-plus’

Arguing over the definition of embedded Linux, or the future of the OS, “would be going down an unproductive rathole,” in the words of Mentor’s John Cherry. So the real question becomes, what can embedded developers do with Android now?

At its core, Android runs the same kind of Linux kernel that embedded Linux runs and shares the same drivers, memory management and networking capabilities. But it also includes some kernel modifications that make it ideal for mobile systems. And it comes loaded with extra features pulled from other open source projects. (For a full comparison of the technical differences see Frank Maker and Yu-Hsuan Chan’s survey on Android vs. Linux[3].)

Or to say it simply: “Android is really Linux plus a lot of stuff,” said Steve Sakoman, an independent embedded engineering consultant.

For most embedded Linux devices that are tucked away in industrial machinery, for example, and that thrive on low power – those mobile-friendly features are extra bulk that a developer needs to strip away. A developer would do better to build the OS from scratch with a framework like Buildroot, OpenEmbedded or the Yocto Project than to pare down Android for a purpose it wasn’t optimized to serve.

“The monolithic nature of (Android) makes it really tough to pull things out when you do want to save on boot time or footprint or those types of things,” said David Stewart, Embedded Linux engineering manager at Intel, in the panel discussion. “Which is kind of a constraint; Not everybody has a Xeon-class processor.”

Android has been wildly successful as a mobile OS. But it’s not being used much yet for that classic embedded development geared more toward headless devices, said Chris Buerger, senior director of open platform products at Wind River. And where it is being used in consumer-grade products such as multi-function printers or point-of-sale devices, it tends to replace embedded Windows not embedded Linux, he said.

Android makes the most sense in a device that plays to its strengths in UI and media, said Sakoman. But it’s not great for just about anything else, he said.

“Android certainly wasn't optimized for the traditional embedded world and is totally inappropriate for devices with real-time requirements,” Sakoman said. “That's not to say that there aren't applications where it makes sense -- things like media players, gps/navigation, dedicated devices for medical offices make perfect sense.”

To most embedded developers it’s very obvious that Android doesn’t fill their needs for embedded Linux projects… Yet. But there are still many factors to consider when making the decision. Next week we’ll explore how to choose an embedded operating system – comparing some of the pros and cons of Android vs. classic embedded Linux.