The addition of Intel's VT hardware technology to its x86 CPUs makes possible the creation of a software-based embedded virtual machine manager.
Migrating legacy software
Many systems exist today that depend on code written years ago. These legacy embedded applications continue to be used because they work; they're proven, they're reliable, and they may even be certified for an application (such as medical, defense, and aerospace). Unfortunately, these legacy applications may also be running on expensive obsolete hardware or be in need of an update, such as a graphical user interface or access to an enterprise network. Rewriting proven or certified embedded code is rarely desirable or economical.
With the help of an embedded VMM, legacy code can be migrated from obsolete hardware to modern embedded platforms. Because I/O can be virtualized, it's possible to simulate old hardware devices, minimizing rewrite of proven legacy code. For example, an obsolete ISA device could be simulated within the hypervisor by intercepting I/O requests and redirecting them to equivalent on-board PCI I/O devices.
Kernel-based hypervisor
Migrating legacy systems from a dedicated hardware platform onto a dedicated CPU in a multicore processor requires more than just a real-time aware hypervisor. In the case where an I/O device must be redirected and simulated, in order to adapt legacy code to a new platform, code that runs in the context of the hypervisor must be developed and debugged. Embedded systems are, by definition, unique, and there's no way a VMM vendor can provide all the combinations of "old to new" I/O possibilities in a single off-the-shelf product.
To get around this problem, the hypervisor needs to provide a structure that enables developers to simulate hardware, either to make new I/O devices appear to be old devices or to create virtual devices for sharing between multiple guest operating systems. In this role the hypervisor can also be thought of as a sort of para-virtualization tool, with the advantage of not requiring source code to a guest operating system in order to implement para-virtualized device drivers.
If the embedded developer is to create para-virtual devices for the hypervisor then development tools are needed to write and debug those devices. Without proper tools, both in the form of a development platform and a debugging environment, it will be difficult to create the virtual hardware needed to support the migration of legacy applications to an embedded VMM.
Of course, it's important to never lose sight of the fact that direct access to real hardware is fundamental to ensuring deterministic response in any virtual machine. If all the hardware is emulated you're no better off than using a server VMM that emulates all the devices in a generic "white-box" machine.
Paul Fischer is a senior technical marketing engineer at TenAsys Corporation in Beaverton, Oregon. He has over 25 years of experience building and writing about real-time and embedded systems in a variety of engineering and marketing roles. Paul has an MSE from UC Berkeley and a BSME from the University of Minnesota. You may reach him at Paul.Fischer@TenAsys.com.
Endnotes:
1. Venture Development Corporation report, "Operating System Virtualization in the Embedded Systems Market," March, 2008, available for a fee at www.vdc-corp.com.
2. Uhlig, Rich, et.al. "Intel Virtualization Technology," Computer Magazine, IEEE Computer Society, vol. 38, issue 5, May 2005, pp. 48–56, http://doi.ieeecomputersociety.org/10.1109/MC.2005.163 .