Saturday, July 01, 2006

Windows CE 6 Overview


This is Tuesday June 6th 2006

This session was presented by Mike Hall (Senior Technical Product Manager Windows Embedded).
The presentation started with a review of the 10 years of Windows CE, from the first version in 1996 without real-time support, version 3 which was the first incorporating this feature, to the current version.
After that, Mike Hall answered some frequently asked questions about Windows CE, like:
- Is it based on Windows? No. Windows CE is based on a different concept: componentization. What is true, though, is that a lot of APIs coincide in both systems, Win32 being the most obvious one. He joked about the question: Have you ever seen a blue screen in WCE? No you don’t. So it is not Windows.
- How small can it be? 300 KB minimum. But with this size it can just boot. So, from this size and up. In a real device example, the HTC Star Trek system occupies 19 MB.
- What is “shared source”? With the Platform Builder you get about 2 million source code lines of the system. There is a “premium source” license that includes the complete source code. You can use it to debug and even modify the system.
Before talking about the features of the new WCE version he clarified that it responds both to requirements coming from other groups at Microsoft (Pocket PC, SmartPhone, Windows Automotive) and from external customers.
The pillars that define the new version are:
- Robust and reliable.
- Safe and securable.
- Reduced time-to-market.
- Better together experience with Windows.
- Foundation for the new generation of devices
They are working with the following schedule:
- January 06: Alpha.
- May 06: Beta.
- June 06: Feature complete milestone.
- 2nd half 06: Release to manufacturers.
Some of the features of the system he emphasized were:
- Feature parity with previous versions, to start with
- Upgraded developer tools. Platform Builder integration with Visual Studio
- The kernel has been totally rebuilt. Now there are more things running in kernel space (device drivers, GUI …) to reduce context switching.
- Backwards compatibility. The top 200 commercial applications could run without modification. But, there will be a list of deprecated APIs.
- User-mode drivers: run in a separate process.
After that, he explained in more detail the new features.
- The new kernel has support for 32K processes and 2GB of virtual memory space for each process.
- The system has a new modularization. OAL.dll has been separated form Kernel.dll, which means that the OAL can be changed without having to modify the design of the system. The file system (FILESYS.dll) and the user interface (GWES.dll) are also independent from kernel. Now, device drivers can call into a user-mode DLL, which in fact enables them to have a user interface.
- Security has been improved. Now the system has a 1-tier security model (an application either can run or can’t run at all). The defense-in-depth strategy has been implemented across the entire system. They now use the Secure-C run-time library to build Windows CE 6. All of these practices, and more, are adopted to comply with the Security Development Lifecycle Microsoft follows in their development process.
- There is support for the exFAT file system that allows large volumes and files.
- Now 14 languages are supported.
In the tools chapter he mentioned some interesting things:
- Besides the Secure C Run Time Library, the new compilers in Platform Builder have improved conformance:
o With the use of the latest C++ standards, MFC 8, ATL 8, latest versions of WTL and STL.
o With support for pluggable Run Time C (customized versions of the C run-time library).
- The Platform Builder integration in Visual Studio 2005 allows the use of a single catalog tree where the components in use appear as checked. The catalog is stored using an XML file.
- The APIScan tool checks applications looking for incompatibilities with the new APIs.
- The CE Test Kit (used to validate the behavior of drivers, components and applications) has been ported to the beta.
In the first demo, Mike Hall showed some of the capabilities of the Platform Builder inside Visual Studio by design a new system and adding a .NET application to it. The application appeared in the “Third party” components branch. In the second demo, he used the APIScan tool with an application. It detected the use of one of the functions he mentioned as obsolete during the demo.

Thursday, June 29, 2006

The .NET Micro Framework


This is Tuesday June 6th 2006

This session was presented by Jonathan Kagle (Product Manager) and Lorenzo Tessione (Lead Software Development Engineer).
Kagle started the talk by positioning the .NET Micro Framework. He said that it is the operating system for applications that don’t need a lot of computing power but do need robustness and reliability. It fits where Windows CE is too much in terms of footprint or power consumption.
He enumerated some of the types of devices or areas that can possible be targets for the .NET MF. In health care: glucose meter, wearable monitors for elder care. In home automation: switches, security. In the retail industry: sensor networks.
But the main difference with similar systems he emphasized was that the languages and tools used for development are the same used for other types of applications: C# and Visual Studio 2005. There will an extensible emulator environment able to support a wider range of devices. The develop-deploy-debug experience using the emulator or the real device is the same as, for example, in Windows Mobile development.
The runtime of the .NET MF can run directly on the hardware or hosted in other system, for example, as a task of an RTOS.
He mentioned also some “real” example applications: Windows Vista SideShow, MSN Direct (SPOT) watches, Windows Media Center remote controls, Microsoft TV set-top boxes and … Sumo Robots!
They defined the system’s architecture as a bootable .NET. The application space is almost entirely managed, with no direct access to the resources. The system is secure because it only loads signed assemblies. In addition, the system has been made independent of the hardware through two layers:
- PAL (Platform Abstraction Layer): Isolates the CLR from the system services (timers, I/O, RAM management, etc.)
- HAL (Hardware Abstraction Layer): Is what changes when porting to a different hardware.
At present, the supported chipsets are the ARM7 and ARM9 families of processors (from 384 KB RAM, 1 MB of Flash and 27MHz to 4 MB RAM, 2 MB Flash and 96 MHz).
The modularity of the architecture allows porting to a different hardware by implementing between 80 and 100 APIs and porting to another platform by implementing 20 to 40 APIs.
After the architectural details they made a comparison of the BCL in the .NET Micro Framework with that of in the Compact Framework. We could find almost unmodified classes in the namespaces System.Collections, System.IO, System.Globalization, System.Reflection, System.Resources, System.Diagnostics and System.Threading. Then we could find some other assemblies with major changes in their interfaces or implementations (Security, Net, Drawing2D, Text, XML Document, XML Serialization, Interop Services, Remoting, and Serialization).
In fact, they have provided a fully compliant CLS implementation with all the object oriented features already known by .NET developers (exception management, delegates, etc.). But there would be some special additions:
- RPC: a special mechanism for invoking methods on remote objects
- Managed drivers: the code for managing USART, GPIO or other devices’ interrupts ca be written in C#
Talking about the user interface or shell support, they said there would be an object model based on Windows Presentation Foundation.
The first difference with other implementations of the .NET Framework would be in terms of footprint:
- 100 KB minimum to boot, 250 KB minimum usable, 500 KB maximum
- 70 KB RAM minimum
And the second difference would be that the MSIL code would be interpreted by the runtime, not just-in-time compiled and executed.
Finally, they made two interesting remarks:
- It is not a hard real-time systems (typical interrupt response time is in the tenths of milliseconds)
- A beta SDK would probably appear in Q3 2006.

Monday, June 26, 2006

Keynote


This is Tuesday June 6th 2006
Todd Warren, Corporate Vice President Mobile and Embedded Devices Group opened the keynote talking about the success of his group, being the fastest growing group at Microsoft with a 40% annual increase for 8 consecutive quarters. He added that one of their focus this year will be selling systems built around mobile devices as part of projects using other Microsoft technologies.
He presented the systems under his responsibility (Windows CE, Windows XP Embedded, Windows Embedded for Point of Sales and Windows Mobile) and introduced his new member, the .NET Micro Framework.
Talking about Windows Mobile he wanted to share the success with developers and partners. He presented three case studies, all of them corresponding to European companies. After that he explained the roadmap for the years to come: the system will be upgraded in cycles of 18 to 24 months, with the release of feature packs in-between. For example, last year Windows 5.0 was released, a few months ago the Messaging Security Feature Pack incorporated new push e-mail and security features into the system and next year we’ll have the new version of Windows Mobile.
Finally he announced an agreement with i-mate to provide a developer kit to help them build and test systems using this manufacturer’s devices.
The first demo was presented by Loke Uei, Technical Product Manager Windows Embedded. He is the leader of the patterns & practices group for mobile devices, so he showed some of the application blocks they are building for Windows Mobile:
- Orientation Aware Control: A user control we can derive from that allows a different arrangement of controls for each form factor during design time (stored at the .resx file). At run time the OAC shows the adequate layout.
- Disconnected Device Engine: A set of classes that can store in a queue the calls made to a Web Service when there’s no available connection and fire them, when the connection is reestablished. A priority related to the cost of connections can be used.
Finally he presented the new SQL Server Everywhere Edition as a way of simplifying the porting of applications between desktop and Windows Mobile.
The second part of the session was focused on embedded systems. After talking about all the members of the Microsoft Embedded family (Windows XP Embedded, Windows Embedded for Point of Service and Windows CE), Todd Warren presented the roadmap for them. He said it was similar to that of the Windows Mobile, but the cycle is out of phase with it; that is: this year we’ll see the release of Windows CE 6, next year a feature pack will be released and after that the upcoming version of Windows CE. Obviously, it must be this way since Windows Mobile is just a specialized build of Windows CE.
The second demo was presented by Mike Hall, Senior Technical Product Manager Windows Embedded. First he showed the integration of Platform Builder with Visual Studio 2005 and some of its advantages (Catalog View, Intellisense, registry editor, application sub-projects, etc.). After that, he demonstrated one the new capabilities of Windows CE 6 by running 108 processes simultaneously. The turn for Windows XP Embedded was covered showing off the adaptation of the system, in terms of user interface, to the upcoming release of Windows Vista. First, a Microsoft Expression user interface project was added to a solution in Visual Studio 2005. Then, we could see a kiosk application built using Windows Presentation Foundation. Finally, he presented an application based on Windows Embedded for Point of Service showing the use of different readers and scanners.
After that, the Program Manager of the .NET Micro Framework, Jonathan Kagle, presented the main characteristics of this system. He talked about the small footprint of the hardware it is directed to manage. He remarked that the programming languages and tools are the same used for desktop or mobile applications (C#, Visual Studio 2005). He even showed an emulator for Sumo Robots. Finally, he called the audience to participate in the Sumo Robot competition that would take place the following Thursday.
All in all, the keynote was a good summary of the latest developments in the embedded area of Microsoft systems and tools and also of the main areas of interest for the rest of the conference.

Saturday, June 24, 2006

Intro


Yes this is the first entry in this blog and I won’t be explaining why I’m starting to blog simply because… I’m not! In the unlikely event that you feel like needing to know who I am or what I do just click here. This blog has a title that makes justice to its content.
Yes I know, it's about two weeks now since MEDC Europe 2006 finished so, why am I starting a blog about it just today?
Well, I have an answer but I’m afraid it’s not too short.
raona and dotNetMania gave me the chance to attend the conference, …for a modest fee: to write an article about it and to interview one of the presenters.
So, I went, and had a lot of fun, and did the interview, and had a lot of fun. Then I came back and elaborated a little bit my notes for my co-workers and managed to find time to write the article and started to transcribe the interview and … stopped to catch my breath. I realized that most of the details of the sessions wouldn’t be showing in a two-page article. That’s not bad; it’s just competition for available resources :-)
I wasn’t sure of the interest of a blog about a conference not written during the conference, trying to convey the news, the live impressions and what not. But someone convinced me to create this blog as a kind of archive for developers interested in Windows CE and Windows Mobile to find the details of the sessions I could attend.I hope I can explain here a lot of what I saw and heard during the conference. I’ll be happy if the summaries of the sessions can help you in any way.