The most widely deployed mobile virtualization solution
Clearly, most of the above use cases have no equivalent in present-day embedded systems (although some will become relevant with the advent of manycore chips). In order to understand why system virtual machines are recently receiving a lot of interest from embedded-systems developers, we need to have a look at the characteristics of modern embedded systems, and identify commonalities as well as differences to enterprise computing systems.
Embedded systems used to be relatively simple, single-purpose devices. They were dominated by hardware constraints (memory, processing power, battery charge). Their functionality was also mostly determined by hardware, with software consisting largely of device drivers, scheduler and a bit of control logic. As a result, they exhibited low to moderate software complexity. They were subject to real-time constraints, which poses demands on operating systems that are unusual in the general-purpose computing arena.
Traditional embedded systems are also closed: the complete software stack is provided by the device vendor, loaded pre-sale, and does not change (except for rare firmware upgrades).
Modern embedded systems, however, are increasingly taking on characteristics of general-purpose systems. Their functionality is growing, and so is the amount and complexity of their software. The software stack running on contemporary smartphones is already 5–7Mloc, and growing. Top-of-the-line cars contain literally gigabytes of software (and rumour has it that it takes longer to load the software than to build the physical vehicle). Increasingly, embedded systems run applications originally developed for the PC world (such as the Safari web browser running on the iPhone) and new applications (e.g. games) are increasingly written by programmers without embedded-systems expertise. This creates a demand for high-level application-oriented operating systems with commodity APIs (Linux, Windows, Mac OS).
Furthermore, there is a strong trend towards openness [4, 17]. Device owners want to load their own applications on the systems and run them there. This requires open APIs (and introduces all the security challenges known from the PC world, including viruses and worms).
Yet some of the old differences to general-purpose systems remain. Embedded devices are still real-time systems (or at least part of the software is real-time). They are also frequently still resource constrained: battery capacity increases only slowly over time, hence mobile devices have tight energy budgets. Also, as many embedded systems are sold for just a few dollars, memory is frequently still a cost factor (besides being a consumer of energy).
At the same time, embedded systems, already ubiquitous, are becoming more and more part of everyday life, to the degree that it is becoming hard to imagine living without them. They are increasingly used in mission- and life-critical scenarios. Correspondingly, there are high and increasing requirements on safety, reliability and security.
Energy Management
Build a Smartphone for the Mass-Market (Korean Version)
The NirvanaPhone Concept Specification and Reference Architeture
Motorola Evoke Teardown
seL4: Formal Verification of an OS Kernel
Automatic Device Driver Synthesis with Termite
The Motorola Evoke QA4 - A Case Study in Mobile Virtualization
Android Migration at the Speed of Light
Virtualization and Componentization in Embedded Systems
Virtualization for Embedded Systems
Role of Virtualization in Embedded Systems
Your System is Secure? Prove it!
Towards Trustworthy Computing Systems: Taking Microkernels to the Next Level
Secure Embedded Systems Need Microkernels