| Microsoft's ESC Boston 2007 keynote demos |
by Mike Hall (Oct. 9, 2007)
Foreword: This guest column contains Mike Hall's account of his demonstrations during Kevin Dallas's keynote at the Embedded Systems Conference (ESC) Boston 2007, held last month. Dallas is General Manager of Microsoft's Windows Embedded unit; Hall is Microsoft's Windows Embedded Software Architect.
Note: An overview of Dallas's keynote is available here. A complete keynote transcript is available here (PDF download).
Microsoft's ESC Boston 2007 keynote demos
by Mike Hall
Kevin Dallas's keynote was divided into two parts, the first being somewhat future looking, and the second being an announcement about the Windows CE 6.0 R2 launch and a look at some of the technologies being delivered as part of the R2 release.
Developing at a higher level
We can see that there's a shift in the developer space towards higher level tools and programming languages. It's only a few years ago that most embedded systems were programmed in assembler, perhaps without an operating system. Developers have moved away from assembler towards more productive development languages, such as C or C++, and have added development libraries into their toolkit that provide commonly used functions and primitives for arrays, strings, and more. Many developers have moved to even higher level languages such as Java or C#.
The move to higher level languages does two things, first the developer is far more productive than they could ever be in assembler, resulting in reduced development and testing time for the product. Second, higher level languages make developers less error prone. Take a typical C/C++ application.
It's very easy for a developer to leak objects from their code, which may not be too much of an issue for a desktop application, but in embedded systems that are expected to run for days, weeks, months, or years, any object leak could build up over time and cause the application and system to fail. Add into the mix the changes in hardware -- for example, systems are moving from single core, through many-core, to distributed (networked) systems. Writing single threaded/single core applications is fairly straight forward, but writing multi-threaded applications and dealing with synchronization across threads can be complex; scaling a multi-threaded application across heterogeneous cores or distributed cores can be extremely complex to develop, and test.
Perhaps it's time for embedded developers to stop thinking about building embedded systems from an operating system stack perspective (TCP stack, IPV4, Web Server, media player, etc.) and start to think about building stand-alone and distributed systems at a higher level. Consider building a stand-alone system, or distributed system from a set of services; each service maintains its own state and can be connected to other services either running on the same machine, or connected to services running on other networked devices, which might not be running on the same embedded operating system.
The diagram below shows a Color Segment service that looks for specific colors in a web cam image (the web cam service is "wrapped" by the Color Segment service). The Color Segment service counts the number of areas within the image that contain the specific color, and passes this information to "subscribed" services (note that there can be more than one subscription to a service).
In the diagram below, we simply check to see whether the number of color areas are greater than zero. If this is the case, then we pass this information to a text-to-speech (TTS) service to announce that the camera has seen the color. Note that the TTS engine could easily be running on a different node on the network.
 Color Segment service example (Click to enlarge) Web Services on Devices
The second demo gave a sneak peek at one of the technologies that will be shipping with CE 6.0 R2 -- this is the Microsoft implementation of DPWS (Devices Profile for Web Services) which we call WSD, or Web Services on Devices.
I'm sure that many of you reading this article have been in a conference room and have needed to connect a laptop or desktop computer to a video projector. This commonly involves taking the VGA snake, plugging this into the VGA port of your laptop and then pressing various function keys, or changing screen resolution/color depth to match the capabilities of the projector. This can be time consuming, and frustrating.
Windows Vista ships with the ability to search for and connect to "network projectors." This capability means that you don't need a VGA cable, you don't need to worry about function keys, screen resolution, or color depth -- you simply search for the projector, connect, and display your presentation or document. But how does this work?
Windows Vista already ships with a WSD stack. The CE 6.0 R2 release will also include WSD capabilities. WSD provides the technologies for connecting devices to devices and devices to PCs in both the enterprise and consumer space. How might this be used? We've already seen an example of this in the enterprise space with networked projectors. The same technologies could also be applied to printers and other office equipment.
In the consumer space one area where WSD might be used is home automation. Consider that you might have a central home control unit -- this unit may not know about each of the home automation companies or devices, but through device discovery can be informed about new devices as they come onto (or leave) the network, and through WSDL (Web Services Description Language) has a well defined contract that defines the capabilities of the device and the functions and events supported by the device.
Windows Vista WSD
The third demo showed a Windows Vista WSD application displaying a bubble moving around on the screen. From a CE 6.0 R2 ICOP eBox reference board we ran a WSD application that added a CE 6.0 "bubble" into the Vista application; now, using events fired from the CE 6.0 application we can remotely control/move the bubble around the Vista screen.
Copyright (c) 2007 Microsoft Corp. All rights reserved. Reproduced by WindowsForDevices.com with permission.
About the author: Mike Hall is Windows Embedded Software Architect. Among other things, he writes an extensive (and often entertaining) blog that's published on Microsoft's MSDN developer website.
Related stories:
(Click here for further information)
|
|
|
|
|
|
|