次の方法で共有


.NET MicroFramework and Windows CE - What's the Difference ?

Continuing the series of What's the difference (CE 6.0 and Windows Mobile) - I got some questions from the blog comment form about the difference between CE 6.0 and the .NET MicroFramework

Let's start with a quick recap of the CE 6.0 features and then we can compare this baseline with the .NET MicroFramework.

CE 6.0 is a 32-bit, small footprint (~300kb for a kernel only build), hard real-time (reports can be found on the Dedicated Systems web site 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 O/S 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 (I need to capture a demo of this and post to MSDN Channel 9), Networked Media Device (for streaming video, photo, and audio from PC's around your home), Voice over IP (VoIP) and more.

Now let's take a look at the .NET MicroFramework - 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 MicroFramework 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).

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 MicroFramework may be working with an existing hardware reference board and a pre-written board support package which is delivered in the form of a managed assembly.

There are some other major differences - The .NET MicroFramework 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 MicroFramework C# project. A complete NETMF image is in the order of 300kb, note that this is about the size of the CE 6.0 kernel only image! Here's how the .NET MicroFramework stack looks, notice the support for WPF on MicroFramework (very nice!).

NETMF_Architecture

NETMF isn't a hard real-time embedded operating system (unlike CE 6.0) - 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... I'm presenting a session at Tech Days in Paris today that includes a number of demos including .NET MicroFramework, CE 6.0, XPE SP2 FP2007, and WEPOS - I will record the MicroFramework demo and get that posted to the blog.

- Mike

Comments

  • Anonymous
    February 05, 2007
    Hi Mike.  Are there any plans to bring a version of WPF, like is available on the .NET MF, to WinCE 6?  Even an implementation of WPF/E as is available for the Mac OS is a start.

  • Anonymous
    February 05, 2007
    I'm just an hobbyist, but I wish I could get my hands on an affordable SBC/LCD combo with NETMF assembly.... :( It'd make for a fun CarPC project.

  • Anonymous
    February 05, 2007
    yes fact that WPF/E is still missing on PocketPC/WindCE is so sad...

  • Anonymous
    February 13, 2007
    Would it be possible to use .net microframework on an Nintendo DS, which uses ARM7 and ARM9 cores ? I think it'd be cool to use it as a SideShow compatible device, over TCP/IP transport. Various homebrew libraries have been developed to access the hardware(libnds/dswifi/ http://www.devkitpro.org/), so what would I have to do to implement .netMF? I'm also finding it hard to find some concrete demos/examples of SideShow over TCP/IP. Perhaps this question is out of the scope of this blog, but do SideShow devices require .netMF, or does it just make it easier to implement? Meaning, can I make the DS a SideShow device without the .netMF? Sorry for the length of this. Thanks for any insight. dext0rb <AAAAAAT> gmail <DAHWT> com

  • Anonymous
    February 13, 2007
    what's the pricing structure?  royalty per unit?  or one-time fixed cost?  thanks.

  • Anonymous
    February 25, 2007
    Great, well instead of jotting down little notes here and there, how about posting some applications. Real code, you know, robust, working stuff that shows us some beef. All I see is a few trivial samples. Pic a reference board and show us some real code.