Conducted Friday, February 23, 2007 by Justin Whitney
1. You've already written about the difference between Windows Mobile and Windows Embedded CE. In your own words, can you describe the difference between Windows Embedded CE, Windows XP Embedded, and Windows Embedded Point of Service?
Add to that list .NET Micro Framework, which just launched in Germany (at Embedded World 2007 in Nuremburg on February 13, 2007).
We have a stack of operating systems, with some overlap. Developers can start at a baseline position and think about whether to move up to another OS or whether the one they're considering fulfills all their needs.
One huge advantage of the .NET Micro Framework is that it has a super low bill of materials for running the Framework. Think of typical baseline requirements: 32-bit processor with MMU [Memory Management Unit], a certain amount of RAM, and a certain amount of storage. With Embedded CE, the OS starts at about 300k for a kernel-only image. As soon as you layer in some level of UI, networking, you get up to 800k to 1MB in size. Add support for media players, browsers, other network technologies—and you get up to 10-20MB for a complete image. XP Embedded has a minimum footprint of 40MB.
But with the .NET Micro Framework, you don't need an MMU. In .NET Micro Framework, you have a reduced bill of materials: you have hardware and an abstraction layer. Then … that's it. No OS. You go straight into managed code on the hardware. Everything is written in managed code—C#, Visual Studio 2005. Assemblies give you access to I/O, serial, networking, graphics library, and more. Development is very fast and easy. The entire "OS" is only about 400k. That's the entire stack: abstraction layer and managed assemblies. It's slightly larger than the CE kernel-only size.
The issue with the .NET Micro Framework is that it doesn't have a media
player, browser, SOAP toolkit, or many of other features in Embedded CE.
That's why it's perfect for ultra-lightweight devices and network end
points that don't need these features.
For example: home automation. Think about having a CE-based home automation controller through a Web UI and Web server. The end points of the network could be .NET Micro Framework devices—light switches, temperature sensors—all talking to a central point running on Windows Embedded CE or another embedded controller, itself controlled by a PC or mobile devices.
Bottom line: .NET Micro Framework is small and enables rapid development all in managed code (C#). It also has limited functionality.
2. How about Windows Embedded CE?
Windows Embedded CE is a componentized, hard real-time embedded operating system that runs on multiple processor architectures and processor power, like MIPS, ARM, SH4, and x86. Most handheld mobile devices, including cell phones, are based around ARM, which has a good balance of power vs. performance. Set-top boxes may use an x86 processor or customized SuperH or MIPS processor.
With CE, developers get to choose from among 700 individual OS features. They can pick from a catalog to build their custom OS design. If you don't need a media player, Web browser, or SOAP toolkit, you simply don't put them into the design. You also get a choice of application development frameworks, choose from C/C++ on Win32, MFC (Microsoft Foundation Classes), ATL (Active Template Libraries), WTL (Windows Template Libraries), or STL (Standard Template Libraries). It also supports the .NET Compact Framework, so again Visual Studio becomes the development environment not only for applications, but also for the operating system.
With Windows Embedded CE 6, the O/S development tools are a plug-in to Visual Studio 2005. This means that you get one development environment to configure, build, deploy, debug, and test your custom embedded operating system, and the same development tools to develop your applications. With Visual Studio you have one development environment with a well known set of APIs and frameworks that can be used to program robots, medical monitoring devices, set top boxes, , industrial-scale pig slicing machines, industrial scale rice cookers in Japan—a whole diverse and strange range of devices, and of course, Windows Mobile devices, Windows Desktop, and servers!
Bottom line: Windows Embedded CE is a low-footprint, custom-built OS that runs on a variety of processors, such as MIPS, ARM, SH4 and x86.
3. And Windows XP Embedded?
People have been embedding the operating systems on devices for years: Windows 3.1, Windows 95, Windows NT, Windows 2000, even MS-DOS. You can put the entire OS on a device, but that tends to be overkill. Embedded systems have specific scenarios. For example, look at airport display panels. These should be showing you inbound and outbound flights. But instead you may see an update balloon waiting for a user to take action.
The desktop OS has a whole set of features that you just don't need. With Windows XP Embedded, we've taken Windows XP Pro SP2 and broken it up into 12,000 individual pieces: 9,000 for devices drivers and 3,000 for operating system components. Like Windows Embedded CE, you can choose the exact features you want to include in your device and build your OS from the ground up. If you don't want to boot into the Windows Explorer shell then don't put it into your o/s image. You can boot your own OS without the desktop shell. When you power up, the device boots directly into your app without anything else being available to the user.
Windows XP Embedded runs on a PC architecture hardware since it's just a componentized version of desktop Windows. It requires an x86 processor. Online you can find several vendors around the world who provide hardened XP hardware, such as customized embedded boards, for military use.
In addition, Windows XP Embedded ships with some additional embedded-enabling features, so you as the embedded developer can optionally add them into your design. This gives you the chance to boot and run the entire OS from a USB key, for example. Why? Think about an embedded system that needs to be updated in the field: an engineer brings a bootable disk on a key with update code. Booting from the key allows it to update the embedded OS with new features, run diagnostics, etc.
XP Embedded also supports booting from flash media, from CD ROM, even from across a network, such as for POS [Point of Service] in a supermarket. But here's the question: if I'm booting from read-only media, then how does it work when the system writes back to the registry? The answer: XP Embedded has Enhanced Write Filter and File-based Write Filter. These features intercept all read/write operations and redirect them into a memory cache instead of onto the underlying media.
One of the most interesting aspects of XP Embedded is that ANY existing device driver runs on it because it's essentially Windows XP Pro, componentized. Hardware is easy to get hold of. The development tools are already there—there's no porting effort because it's just a PC. By comparison, in Windows Embedded CE, where the hardware and OS are both customized, it requires some time to build new custom hardware. With XP Embedded, I can get an x86 reference board that I've never seen before and in 1 hour have a bootable XP Embedded operating image. Not counting custom drivers and UI, that's one hour start to finish: configured, built, downloaded, and booted.
And of course, you can deal with those annoying update balloons. With Message Box Interception, XP Embedded takes appropriate action for either app or OS message boxes.
Bottom line: XP Embedded is a full-featured Windows XP Pro OS with core features beyond XP Pro that allow it to be deeply embedded. The core of XP Embedded is 40MB, while the average build is about 300-500MB for the image.
4. And what about Windows Embedded for Point of Service?
Windows Embedded for Point of Service is a sister product to XP Embedded. It's also a version of Windows XP Pro SP2, but not componentized. It installs onto a target machine like XP Pro, but its footprint size is reduced, with an install size of 300MB.
An interesting note: Embedded POS is modeled specifically for building POS type apps. Think about the desktop: it's been supporting plug and play for 10 years now. You plug in a mouse and the OS recognizes it. You don't need to install any drivers, the mouse just gets picked up and it works. Same thing with your favorite printer. The drivers get configured, everything gets set up. It just works.
But for POS, plug and play hasn't been there. Embedded POS brings PnP ease of use to the embedded developer. Previously, an embedded developer who wanted to integrate a peripheral would need to write all of the code to do that. I may know I'm using a certain USB bar code scanner, but I would need to talk to the device directly—8k to 10k lines of code. With Windows Embedded for Point of Service, we've included support for the most common POS hardware devices, such as barcode scanners, known as just "Scanner" in the POS.NET SDK, cash drawers, two-line displays, etc. All of these devices are now exposed by .NET assemblies as generic types. As a developer, you use Visual Studio 2005, install the POS for .NET SDK, add POS assemblies as a reference into apps, then just start coding against these generic types.
So as a developer, I can add in support for a barcode scanner in just 10 lines of code. I don't know or care who the manufacturer of the scanner is, or whether it's Bluetooth vs. TCP/IP. As a developer, I get to be super productive, in effect just gluing together the peripherals of the application and tying them into some kind of database.
Another example: I'm building an airport check-in terminal. I need a touch-screen, credit card reader, printer, maybe some other peripherals. With WEPOS, I can add all of this with 8 to 10 lines of code per peripheral. It's becoming much more of a glue-type operation than having to focus on the underlying hardware.
This also affects actual point of use. If it's a sales terminal and my barcode scanner device dies, I can unplug it, plug in a new one, even one from a different manufacturer, and keep going. This can extend the lifetime of a terminal in use because of the new PnP model and the abstraction away from the physical hardware.
Bottom line: Windows Embedded POS is a non-componentized version of Windows XP Pro SP 2 with a 300MB image size. It includes features and assemblies specific to Point of Service terminals, such as plug-and -play for a variety of standard peripherals.
5. What can we look forward to with the .NET Micro Framework?
In Germany we just announced the release of .NET Micro Framework. A number of things are being developed, including a number of reference boards, like Digi and FreeScale (processor manufacturers). In both cases, you get managed assemblies needed to use the reference board. As a developer, to talk to the hardware, just add a reference for the FreeScale hardware assembly.
For example, when writing a desktop C# application, adding an event handler for a mouse click, or timer event is 2 lines of code. On the .NET Micro Framework, adding an interrupt handler for a hardware interrupt on the board is the same 2 lines of code. As a developer, you are abstracted from the hardware. You just need to know how to deal with a new event handler. If it's a button on an external device, when it's pressed, an event is called, a handler gets raised.
Graphics libraries for the .NET Micro Framework expose an implementation of WPF (Windows Presentation Foundation). Some of the first devices you might see: MSN Direct over the SPOT Watch and Vista Sideshow displays, which gives you access even when laptop is shut to a media device or calendar. WPF is a rich set of libraries for alpha blending, fonts, etc. Sideshow devices are running .NET Micro Framework. On some, you can actually detach the SideShow device and carry it around. It has its own power, internal RAM, and OS.
6. Do you have any suggestions for ISVs and Partners who might be poised to start developing embedded systems who, for some reason, are not already doing so?
The Windows Embedded Partner Program has over 2,000 individual partners, from silicon vendors providing processors and reference boards to system integration partners to training partners. In fact, the first .NET Micro Framework training was announced this week—Alexander Wechsler has a 1-day .NET Micro Framework training course.
The interesting thing about embedded development is that you need to make a decision about where you want to be in the stack—at the level of custom hardware, porting the OS to that custom hardware, or at a much higher level, where you're writing the user experience of the embedded device.
A line goes through all 4 embedded offerings; Visual Studio 2005 is the common theme—C# for .NET Micro Framework and managed development, C/C++, C# or Visual Basic for Windows Embedded CE. And for Windows XP Embedded and WEPOS, you have a whole range of all managed languages and all desktop development libraries, including any development tool that can generate desktop compatible code. As a partner considering building an embedded device, you may already have the skills you need. It's as simple as writing the desktop apps you're already writing today.
Lower down in the stack, you may not want to be involved. We already have partners who can assist you at that level by giving you custom board or board support packages and underlying device drivers and hardware support. So you can focus on the shell and user experience.
Embedded development, depending on the level you're at, isn't any harder than writing desktop apps.
7. What are some of the big successes you've seen for embedded partners?
Point of Service. Very large retailers. Thin-client terminals are a huge success—with companies like HP and Wyse shipping devices running Windows Embedded operating systems. IP set-top boxes. Industrial control—GPS Navigation devices and more. Go to windowsfordevices.com for cool and interesting devices based on embedded.
In many cases, you might not even realize on a day to day basis that you're touching embedded systems. One of the world's largest gas pump manufacturers uses Embedded CE on their gas pumps displays. Some of the more advanced, newer pumps provide ads at the pump showing special offers at the store attached to the gas station. New ATM machines run on Windows Embedded. Self-service kiosks. Have you been to Target and seen those price check machines around the store? You scan the bar code and bring up information about the item. All of this runs on Embedded CE. There are probably multiple touch points in your life that you as an individual don't even notice.
8. What are some of the more interesting examples of embedded deployment that you've seen?
Automated pig slicers.
Windows Embedded CE is a hard real-time embedded OS, so it can be used in industrial control. When an interrupt fires at the operating level, the OS must guarantee it can respond to that interrupt in a certain amount of time. For example, in car assembly, you cannot miss an interrupt!
So one company has developed an automated pig slicer based on Embedded CE. Pigs come into the plant to be sliced up. Each one is a slightly different weight and size. As the pig leans into the first saw, the saw has a mechanism that detects force and pressure and calculates the size and weight of the pig. It then adjusts the speed and position of the saw appropriately.
You also have sewing machines running Embedded CE. Top-of-the-line personal $6k-10k sewing machines have Web connectivity and can use downloaded images. These machines will actually stitch the images directly into a garment – now there's a great example of a device that needs a "Multi-Threaded" operating system!
9. Looking forward, what do you see as the biggest development opportunity for embedded partners?
For every one desktop PC shipped, around 10 to 100 embedded systems are shipping at the same time. Imagine the opportunity for desktop developers today and expand that 100 times. Embedded really does touch every single part of your life.
Think about home automation, the ability, within or outside the home, to control all the devices that are starting to come onto your network. More and more personal home devices are getting connected: Hi-Fi stack, cooker, washing machine, heating system, DVR—all are getting tied into the backbone of your home system.
Embedded devices are changing—ten to fifteen years ago they were standalone. To check on a system, you would physically need to visit it, tap on the dials, check the numbers, etc. Today, devices are more connected than ever before. GPS devices not only check location but download local interests, like the cheapest gas stations in the area. Or you can have media playback synced to a location.
Opportunities are growing dramatically for embedded devices of all kinds. And Windows developers already have the skills.
Right now, we have Windows XP Embedded as the embedded OS for desktop-class hardware. It's a componentized version of XP desktop. We recently announced the availability of Vista for embedded devices. In effect, this is a full version of Vista that developers can put on an embedded device, similar to the way people have taken all previous versions of Windows and put them on embedded devices. This gives people the ability to take everything Vista has to offer and put it on a device. The side effect: you get the whole of Vista, with no specific embedded features.
This week we announced the CTP of Feature 2008. Many Vista desktop technologies have been backported to run on embedded, including WCF, WPF, etc., so developers building embedded devices today can take advantage of Vista technologies.
We're also working on a componentized version of Vista to come out in the future but no release date has been set.
Feature Preview 2008 is only in community preview. We got a ton of feedback from CTP 2007. Getting feedback early is essential—we want to get the CTPs out as early as possible so developers can try them out. The final release date for Feature Pack 2008 has not been announced yet.
11. What are the some of the benefits of Feature Pack 2008?
Developers may not need any of the updated functionality, in which case they don't need to use it. But if you're building a consumer-oriented device, you may want to use WPF and Expressions to build some cool XAML apps.
One of last year's PDC demos was a kiosk by North Face [shown during Jim Allchin's keynote]. It had some pretty intense graphics going on. Videos on shaded, rounded surfaces, all playing in real-time. Very cool. Good for building kiosks. It uses the very latest in graphics technology.
It was also built using the new development model, which separates design from development. The designer creates the look and feel at the same time that the developer works on the functionality behind it. In the video for the North Face demo, there's even a segment where the VP from North Face comes out on stage and talks about the work they did. The developers had never touched WPF before and in 3 months had this app working.
12. Last question: will we see you at MEDC 2007?
It would be rude of me NOT to be there! I'm working on breakout sessions, labs, and podcast sessions. I'll be working on some keynote demos. I can't tell you about them now, but I may sneak some info out to my blog, so keep checking back.
Page 1 of 1