| How the .NET Micro Framework and Windows CE differ |
by Mike Hall (Feb. 9, 2007)
Foreword: Continuing his "What's the Difference" series, Mike Hall discusses the distinctions between Windows CE 6.0 and the recently introduced .NET Micro Framework. What sets .NET Micro Framework apart from most embedded operating systems, according to Hall, is the programming model: everything is written in managed code.
.NET Micro Framework and Windows CE -- What's the Difference?
by Mike Hall
Let's start with a quick recap of the CE 6.0 features and then we can compare this baseline with the .NET Micro Framework.
CE 6.0 is a 32-bit, small footprint (~300KB for a kernel only build), hard real-time (see these two reports: Windows CE 5.0 x86; Windows CE 5.0 ARM), componentized (approximately 700 o/s components in the CE 6.0 development tool catalog) operating system that runs on ARM, SH4, MIPS, and x86 MMU-based processors. The OS exposes Win32, MFC/ATL, and managed application development (C#/VB) models.
CE 6.0 also includes a number of "desktop-like" technologies, including Web Browser, Web Server, Media Player, support for SOAP/XML Web Services, DirectX, a host of other technologies, and support for specific device categories such as Networked Projector, Networked Media Device for streaming video, photo, and audio from PC's around your home, VoIP (voice-over-IP), and more.
 SPOT watches! (Click for info) |
 SideShow dev kit (Click for info) | Now, let's take a look at the .NET Micro Framework. Perhaps the most obvious devices you may have seen running the underlying NETMF bits are the MSN Direct Watches, also known as SPOT watches (Smart Personal Object Technologies), and the SideShow devices for Windows Vista Laptops. While SPOT and SideShow are two good examples of devices based on the .NET Micro Framework, there are a TON of other device categories that could also use this interesting new embedded operating system (and I use the term operating system loosely -- you will see why shortly).
 Brew Java with .NET MF (Click for info) | What really separates NETMF from other embedded offerings is the programming model. All device drivers and applications are written in managed code -- yep, you read that correctly, drivers are developed in managed code! For the most part, developers building for the .NET Micro Framework may be working with an existing hardware reference board and a pre-written board support package that is delivered in the form of a managed assembly.
There are some other major differences. The .NET Micro Framework doesn't require a Memory Management Unit (MMU), but can also run on MMU-based processors (NETMF runs on a number of ARM7 and ARM9 CPUs). NETMF doesn't have a configuration tool like Platform Builder (there are a number of OEMs that will be building NETMF capable hardware; you simply write the application in Visual Studio 2005 that is downloaded and runs on the hardware). Hardware support for a board is provided as a managed assembly that would be added as a reference to a .NET Micro Framework C# project.
A complete NETMF image is on the order of 300KB; note that this is about the size of the CE 6.0 kernel only image! Here's how the .NET Micro Framework stack looks -- notice the support for WPF on Micro Framework (very nice!):
 .NET Micro Framework Architecture Unlike CE 6.0, NETMF isn't a hard real-time embedded operating system. But developing an application that handles interrupts is a piece of cake. Hooking an interrupt is as easy as adding any other event handler in C# -- the code snippet below hooks a button on a Freescale NETMF reference board.
InterruptPort CenterButton = new InterruptPort(Pins.GPIO_PORT_B_8, true, Port.ResistorMode.PullUp, Port.InterruptMode.InterruptEdgeBoth); CenterButton.OnInterrupt += new GPIOInterruptEventHandler(CenterButtonPush);
|
And the interrupt handler is as simple as...
public static void CenterButtonPush(Cpu.Pin port, Boolean state, TimeSpan time) {
}
|
Imagine if you had a reference board that had a D-Pad and an LCD panel. I wonder what interesting applications you could create.
Copyright (c) 2007 Microsoft Corp. All rights reserved. Reproduced by WindowsForDevices.com with permission. This article was originally published on the Mike Hall's Windows Embedded blog.
About the author: Mike Hall is Technical Product Manager in Microsoft's Mobile and Embedded Devices Group, on the Windows Embedded team. 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)
|
|
|
|
|
|
|