“When I use a word,” Humpty Dumpty said, in a rather a scornful tone, “it means just what I choose it to mean—neither more nor less.”
“The question is,” said Alice, “whether you can make words mean so many different things.”
The debate in Through the Looking Glass discusses the issue that when Humpty, you or me use a word, it has to convey a meaning not to the user but to other people. Take the word “free.” It can mean free as in unfettered: “Free Speech.” Or it can mean not paid for: “Free Beer.” And as we have seen before, the Free Software Movement can get itself tied into ideological knots over which is which.
“Embedded” is another word that seems to slide through the fingers. We are not going to spend time discussing what is an Embedded System, but this is just to flag up a warning that the term covers a wide range of activities and products.
What brought on this linguistic introspection was a session with Microsoft about Windows for embedded applications. Microsoft has recently made a raft of very high profile announcements about the embedded space, and it seemed time to try to understand the company’s strategy in embedded. In fact, it seemed time to understand Microsoft’s strategy generally.
Hands up, all those who used MS-DOS. It was introduced in the very early 1980s, when the mainframe was worshipped by acolytes in air-conditioned temples, when mini-computers were used by specialists for scientific and technical applications, and when micro-computers were stand-alone desktop units.
Today, the enterprise may possibly have a main-frame, but, overwhelmingly, most work is done by the ubiquitous PC, both freestanding on the desk and as ranks of servers in darkened rooms. And just as, forty years ago, “No one got fired for choosing IBM,” today the safe corporate response is to go along the route of deploying Microsoft’s raft of products. And today, the enterprise increasingly communicates, not by using custom-designed specialist systems, but through the internet. The internet is also used for marketing, and, with the rise of web-based applications — tools and databases that are collectively being called “the cloud” — enterprises are sharing applications and data without investing in yet more data centres.
Look at retailing. The corner shop used to take things off the shelf, take money for them, and once a week order replacement stock by running an eye over the shelf. Today the supermarket records your sales at a till, and you pay with a credit card. From the customer point of view – a simple transaction. From the point of view of the retailer – the scan of the barcode triggers a range of transactions. The overnight stock replacement is tuned to reflect the sale, and the sales data is rolled into an overall business information system that provides managers with shopping trends in that branch, that region, and so on upwards. The overnight restocking is also modified by the weather forecast, by awareness of external events, and other factors: fine weather and a World Cup football game with England playing will mean that sales of beer and barbeques will rise in England. Each customer’s purchases are recorded in a database that is used to target special-offer discount coupons and to encourage the customer to spend more. And of course the transaction details are approved immediately by the credit card issuer. Much of the communication takes place using the internet. The point-of-sale processing includes bar code reading, code look-up and pricing, till-roll printing, credit card processing, and cash-drawer management (for those people who insist on using money).
While the main databases and business intelligence systems were traditionally from specialists like SAP or Oracle, now they may also be from Microsoft. The results of the intelligence will almost certainly be linked to applications within Office. With the core of the enterprise dominated by Microsoft, the company is reaching out into other areas, and in late 2009 launched the ‘three screens and a cloud’ vision (sorry, but “vision” is their word).
The three screens are PCs, phones, and TVs. The cloud can be public, the internet as a whole, or private, based on, for example, an enterprise server infrastructure. By extension it is possible that the private cloud might also be a household. A Microsoft demo has a slate-PC user dragging a video icon onto a TV icon and the video then plays on the chosen TV. The video might be held in a local computer, in a local storage device, or somewhere on the web.
The vision has evolved, and recently, Steve Ballmer, Microsoft’s CEO, spoke about ‘Extending windows and the benefits of cloud computing to the world of specialised devices.’ Specialised devices is, I think, Microsoft speak for embedded systems. Certainly their embedded operating systems come from a business unit called Windows Embedded.
Before 2009, the desire to extend beyond the desktop and the enterprise had evolved in a relatively un-coordinated way. Today, Microsoft is pulling together the operating systems. This has led to a recent rash of embedded OS announcements and road maps as they come together under a single Windows Embedded umbrella and are aligned with Windows 7 technology.
The three key components are what used to be called Windows Embedded CE, now to be called Windows Embedded Compact, Windows Embedded Standard, and Windows Handheld, a sort of evolution of Windows Mobile. Windows Phone 7, the OS that is competing against Apple and Android, is not in this family.
Windows Embedded CE is the oldest member of the family. It is described as ‘a componentized, real-time operating system.’ Unlike desk-top Windows, where you normally have to load the whole operating system, no matter what features your computer has, the componentized approach allows the creation of a target-specific OS. The application developer is constrained by the OS to use only those features which the system specifier felt were necessary. Also, unlike the desktop, Microsoft provides source code for a large segment of the OS under a “Shared Source” licence. Unlike open source, there is no requirement to make publicly available any changes made to the source code. Embedded Compact 7 is out for what other companies call “Beta Test,” but which Microsoft calls “Public Community Tech Preview.”
Widows Embedded Standard 7 is a componentized version of full-blown Windows 7, for heavy-lifting embedded applications. It is not real-time.
Finally, Windows Embedded Handheld. Another re-naming, it stems from Windows Mobile 6.5. The next release, in 2011, will build on Windows 7 and will be called Windows Handheld 7. (You can see the pattern now, I think.) Windows Embedded Handheld is targeted at what the company identifies as “the enterprise handheld device market.” Motorola has just launched the first Embedded Mobile based device, the ES400 global Enterprise Digital Assistant. From the outside, these look like customized cell phones, with cameras, bar-code readers, GPS, wireless data and 3G communication, including voice and data. The customization continues with software that is specific to a particular enterprise and a ruggedized package.
Microsoft has used the componentized nature of the Windows Embedded family to create a couple of platforms. We looked earlier at the processing needed for supermarket checkouts and the like, and Windows Embedded POSReady uses the Windows Embedded Standard platform to provide a package for developers working in partnership with retailers.
Another platform is the Windows Embedded Automotive, which provides info-tainment systems for cars and other vehicles.
Obviously, while Microsoft tells a convincing tale, I also thought it was worth checking with someone who was perhaps just a little more objective. Plextek is an electronics design house that works in a range of application areas, including automotive, defense, and consumer, with a range of hardware and software, including Linux and proprietary RTOSs. The team have done a lot of work with CE (now Windows Embedded Compact) and have a lot of time for it and for Microsoft.
They praised the real-time capabilities and the way in which it can be customized and configured. But what is, in some ways, more important, is the eco-system. Surrounding Windows is a great deal of software, both from the company and from third parties. In particular, where an open-source project might require acquiring a range of software components from a range of sources, and then there may still be problems with integration, with Microsoft, most of what is needed is easily available and plays well together.
CE is used often where a good quality user interface is needed. It might look like a Microsoft front end, or it might, using Microsoft’s Silverlight, look like anything; for example, an e–book reader or a weather station. One area where Microsoft scores over open-source is, naturally, in support. Technical support for development issues is well-priced and reliable. (And your money back if the problem is a bug in the Microsoft software – not the case with some other suppliers.) Regular monthly updates are predictable, and longer-term revisions are clearly spelled out in the road-map.
There are also development tools, both for customizing the operating system and for creating the application.
The final thing I will quote from Plextek is that build time for a CE system is around half an hour compared to several hours or more for Linux, and boot time is measured in seconds as opposed to minutes.
That said, there are occasions where other software might be needed, alone or in conjunction with Microsoft’s. Safety-critical is the primary one. Microsoft itself says that the Embedded Windows is not suitable for safety-critical or potentially life-threatening applications. The solution normally adopted is for the safety-critical parts of the application to be implemented in appropriate software, while the GUI and communication to the outside world is handled by Windows Embedded, usually on a separate controller.
An alternative is virtualization; for example, with Green Hills INTEGRITY Secure Virtualisation. INTEGRITY runs one or more safety-critical and real-time applications, and “guest” operating systems run in their own, separate, area.
Now I have to make a confession here – I went into this with a certain amount of reserve. Somehow there seemed a mismatch between Microsoft’s often large software and the needs of the embedded industry. I think this was a misconception. The Windows Embedded team still have work to do, but if they hit their road-map targets and maintain the quality of their products, then, as long as you are on an x86 platform or, for Embedded Compact, on ARM, MIPs and SH4, then you should look carefully at Microsoft.