There's a critical difference between servers and embedded systems. Usually, embedded systems include realtime operation requirements - most servers do not. Where servers work correctly so long as the software completes and performs a logically-oriented algorithm, hard realtime embedded systems fail if the algorithm doesn't complete in time. Developers of soft realtime embedded systems gain a technique to make the system function even if the algorithm fails to complete in time on occasion. So long as the system permits discarding some data that allows the system to "catch up." MPEG decoders are one example of soft realtime systems.
As systems developers gained experience creating complex systems combining hard realtime operation with non-realtime user interfaces, the need to separate realtime algorithms from non-critical operation became obvious. Ideally this is accomplished by developing realtime software on a realtime OS(RTOS), and user interfaces on a fully featured non-realtime OS. This may be accomplished using Virtualization Technology.
Virtualization provides logically separate environments for multiple instances of the same operating system, or more than one operating system. It permits systems designers and programmers to use existing hard realtime or non-realtime code without developing specialized code to arbitrate between hard realtime and non-realtime software. In addition, when using the right virtualization approach, partitioning between realtime and general purpose OSes is enforced by a Virtual Machine Monitor (VMM) with a guarantee that realtime operations always get enough processing resources to complete correctly.
TenAsys, an Affiliate member of the Intel® Embedded Alliance pairs their hard realtime OS, INtime RTOS, Microsoft®'s Windows® OS. Supported Windows versions include Windows Vista, Windows XP, Windows XP Embedded, Windows 2000 and Windows Server 2003. Microsoft is an Associate member of the Alliance.
Cleveland Motion Controls (CMC) of Cleveland, OH applied INtime to their Phantom Computer Numeric Controlled (CNC) controller. CMC real-time applications are developed and debugged directly within the Microsoft Visual Studio development environment, just as they do for their Windows applications. By using a common software development platform, engineers have a minimal learning curve when moving between the Windows and INtime applications. Real-time software running on the INtime RTOS provides position control of the CNC drives. In addition to managing limit switch actions and other similar inputs, the INtime real-time system hosts one of two motion control loops. It can host a one-millisecond loop for conventional analog drives - where velocity is determined from position feedback - or a two-millisecond loop that controls SErial Real-time COmmunication System (SERCOS) drives. The type of loop to use is based on the motion hardware employed by the CNC system. The system also directly implements multi-axis motion coordination.
The CNC controller system runs on a harsh environment PC-compatible single-board computer. The single-board computer supports both Microsoft Windows XP Embedded and the INtime RTOS on a Pentium M mobile processor.
Wind River, also an Associate member of the Alliance, takes a different approach to running multiple OSes at the same time. Their Hypervisor supports multiple different OSes and multiple instances of the same OS operating simultaneously. But embedded systems aren't just made of a Hypervisor. For those developing embedded telecom products, Wind River offers a carrier grade telecommunications platform, including Hypervisor. VxWorks 6.7 network platform includes industry standard security protocols, and pre-integrated Linux (offered separately) adds more capability. One advantage to the Wind River products is that they have already been validated together. Validation can be a time-consuming and expensive process, but in this case an initial validation can come with the combination.
Automotive applications for embedded processors have grown in pervasiveness and complexity to the point that minimization of hardware is an important goal - one that Virtualization can aid. To address the full complement of requirements in automotive applications, designers can use a Virtual Machine Monitor from Real Time Systems GmbH (RTS), an Affiliate member of the Alliance. RTS's Hypervisor provides basic partitioning for standard OSes, including an RTOS, and a non-realtime OS for user interface applications.RTS supports one of the largest varieties of OSes including: Windows XP , Windows CE , QNX, Linux, On Time RTOS-32 , VxWorks , Microware OS-9 , and Pharlap ETS. By using RTS Real-Time Hypervisor, developers may mix and match from all of these operating systems. RTS Hypervisor provides virtualization services for guest operating systems. Single or multiple instances of each OS may be operating simultaneously. QNX Software Systems RTOS is one possible OS to run on Hypervisor.
QNX® Software Systems' Neutrino RTOS runs every driver, application, protocol stack, and file system outside the kernel. By using memory-protected user space for all of these functions, fault resilience is a built in part of the RTOS. This means that nearly any component can fail, be automatically restarted, and not affect other software components or the kernel. Combining QNX Neutrino with Real Time Systems GmbH's Hypervisor adds additional Virtualization which in turn improves fault resilience and permits developers to use additional OSes. QNX, an Associate member of the Alliance, also offers a series of products under the term "Connected Automotive Reference." Designers can start with portions of their automotive system already developed, saving time and effort.
Intel Virtualization technology is a crystallizing improvement for embedded systems. Now designers can choose the OS that best supports the realtime elements of the application without regard for the type of operating system required for other parts of the embedded system.
As a former systems architect I appreciate the ability to mix OSes as my system requires. But it also seems that the advances in Virtualization come with some downside for programmers. What do you think?