The increased use of software virtualization in embedded systems is enabling additional use of open-source operating systems (OSes) and applications. The notion of providing a virtualized interface to hardware and using software separation to contain different applications and OSes is presenting many new use cases for embedded software developers. One such new use more elegantly combines open-source software with proprietary or commercial applications.
Before examining this interesting use case, it's important to understand how software virtualization works in embedded systems. The term "virtualization" is overused and needs to be broken down to clearly see which virtualization technologies are most relevant to embedded systems developers.
Hardware vs. software virtualization
Hardware and software virtualization are more complementary than competitive. Hardware virtualization is now being implemented by many of the processor vendors and provides a more efficient mechanism for partition/OS switching and hardware resource allocation for a software virtualized environment.
Software virtualization provides an application programming interface for OSes that enables embedded systems designers to take advantage of these virtualized hardware features without having to make any changes to the OS. This has great advantages for the embedded systems market as legacy applications on both legacy and open-source OSes can take advantage of new processor features without new ports or modifications, allowing for an unprecedented migration path for embedded software.
Generally, software virtualization technologies are interchangeably referred to as hypervisors or virtual machine monitors (VMM) and some different technologies are underneath the hood that enable guest OSes to run on top of them. In general, there are two types of hypervisors--Type 1 (Native) and Type 2 (Hosted).