I believe that 2010 will be the year of embedded virtualization, all the signs point in the right direction. It always takes a while for new technology to grab the imagination of embedded device developers. Embedded developers are traditionally a conservative bunch, however, the benefits of virtualization can not be ignored, even by them.
I would love to give blow-by-blow examples of real customer scenarios, but for obvious reasons I can not. Instead I will use a fictitious example: a digital camera. Everybody is familiar with a digital camera and knows a lot of the capabilities that it offers. A digital camera has several really obvious requirements such as quick boot. Remember the first crop of digital cameras? By the time the camera had booted the moment had slipped away. Some of the other real-time requirements have to do with lens control, light measurements, focus and so forth.
Todays devices however are more and more integrated. A mobile phone is more and more also a capable camera, it's first purpose is to be a good phone, it's second purpose is to take pictures and share (on Twitter, Facebook and other social media sites). What I have not seen yet though is a device that has 'digital camera' as it's first purpose, but integrates some aspects of a mobile phone, Wifi and a GPS into it.
Maybe these devices exist and are simply out of the reach of my toy budget, nevertheless, I think the integrated camera makes a great example to use when discussing virtualization. Cameras exist and a lot of software content has been written for it, typically for real-time operating systems. Now all we have to do is to add the 'integrated' part to it.
The type of content that we need to add could be things like networking (TCP/IP probably), browsing, file sharing, WiFi, bluetooth, GPS, a more advanced GUI (though screen!), you name it. Wouldn't it be great if your camera could record GPS coordinates when you take the picture (ok, some can do this), that you can tag pictures on your camera while on the road, then sync when you get home, which would upload certain pics to your facebook profile or on-line photo album as well as back up all pictures and remove them from the memory stick.
Many of the building blocks of these features are readily available on open-source operating systems, such as Linux. Wouldn't it be great if our device could run a real-time OS for the real-time tasks, re-using the code that we have and that we know works and run Linux for new content?
Well, this is exactly where virtualization comes in, virtualization allows partitioning of single and multicore devices to run multiple operating systems on a single processor efficiently, thereby enabling this type of innovation.
Virtualization also allows for the development of a low-end pocket camera (which are the ones that I typically end up buying) that could have this functionality on a low-power single core processor, and re-use it on a top-of-the-line SLR and add more features and processing power by using a dual core processor.
Again, the example is fictitious, but I wouldn't mind seeing a nice pocket-camera that can display its pictures on an iPad, laptop or netbook for editing and commenting while I wait in an airport-lounge and then automatically syncs with iPhoto over 802.11 when I get home and uploads them to my blog for good measure, preparing my camera for the next day of picture taking.
<let's not argue whether the camera, the iPad or iPhoto is responsible for uploading or syncing, I really shouldn't need to worry about it>
Hmm, in hindsight, maybe I should submit this for a patent application 🙂