With the latest installment in beta testing, Microsoft’s .NET Micro Framework is into its third incarnation. The production version is 2.5. It targets more compact platforms like those from SJJ Micro’s EDK (Fig. 1) and Design Solutions’ Tahoe (Fig. 2). The EDK runs an ARM9-based chip from Cirrus Logic and the Tahoe uses Freescale’s i.MXS core. Both provide a similar development environment for .NET Micro Framework applications.
To start, I took a look at the hardware from both companies and then Microsoft’s software. The development experience for both platforms was similar, although they have a different hardware complement. Both come with cables, power supplies, and software including customization for the Microsoft .NET Micro Framework SDK for the respective hardware platforms.
The EDK board has the same dimensions as a PC/104 board of 3.77 in. by 3.54 in. It houses a 200-MHz Cirrus Logic EP9302 ARM9 processor. The board also has 8 Mbytes of flash, 8 Mbytes of SDRAM and a battery-backed real-time clock. Removable storage is provided via an MMC/SD hot-swap socket.
The EP9302 has a pair of serial ports, one of which is used for development. There is also a pair of USB 2.0 host ports, 10/100 BaseT Ethernet, SPI/I2S, a 5-channel 12-bit analog-to-digital converter (ADC), 16 GPIO lines, 16 PLD 5-V inputs, 16 PLD outputs (eight with high drive capability) and two pulse-width modulators (PWMs).
The form factor is nice if you happen to have the right case handy, but most tend to sit on the lab bench with cables connected to them.
Design Solutions Tahoe
Design Solutions’ Tahoe is built around their Meridian CPU surface-mount module (35 mm by 35 mm) found on the bottom of the board. The module contains a 100-MHz ARM920T-based Freescale i.MXS processor. The module adds 4 Mbytes of flash and 8 Mbytes of SDRAM. The module approach is easier for deployment and allows a simpler host board to be used.
The Tahoe host board contains a QVGA display. It also brings out 32 GPIOs on headers for expansion that can include modules available Design Solutions including an Ethernet interface. Other available peripherals include 2 UARTs, an I2C port, an SPI port, and a USB port. Power can be supplied to the board using a 5-V adapter or the USB port.
Design Solutions would like to sell lots of modules as the Tahoe is for demonstrations and development. The use of a module can greatly simplify a target design and it eliminates much of the more complex board design necessary for today’s micros. The memory complement should be about right for most applications that the processor can handle.
Microsoft .NET Micro Framework Tools
Those expecting a stripped down version of Windows CE will be disappointed. There is just not enough horsepower on most of the targets for .NET Micro Framework to handle something that large. On the other hand, those looking for support for tools like C# will be pleasantly surprised by the compatibility and support that Microsoft delivers.
As with most Microsoft platforms, board vendors deliver a board support package (BSP) that mates with the standard development tools and software that Microsoft delivers. This includes Visual Studio and the .NET Micro Framework SDK. These can be downloaded from Microsoft’s site. The SDK is free and 90-day versions of Visual Studio 2008 are available as well.
Each development kit includes documentation on integrating these tools with the BSP. The process is not trivial but straight forward and is essentially the same for most platforms.
The interface to the two boards is via a serial port. The Tahoe board has a JTAG interface but you need the matching JTAG hardware. This is faster and more effective, but the serial port is adequate for testing the board and for many applications. There is a JTAG and PLD program header for the SJJ EDK board as well.
The .NET Micro Framework is a subset of a subset with .NET sitting on the Windows platforms and the .NET Compact Framework sitting on Windows CE platforms. All include the CLR (common language runtime) that allows all platforms to run a range of languages including C# and VB.NET. Applications written in these languages, and any other compatible languages, will run on the two boards assuming the other runtime components and the application fit within the available memory.
The .NET Micro Framework actually runs a small version of the CLR called TinyCLR. TinyCLR provides core services including memory management, thread management, exception handling and debug services. It handles managed code generated by .NET compilers such as C#.
The systems use a TinyBooter boot loader to bring up the CLR and then the application. It can handle downloading of application code as well as interaction with the Windows host development system running Visual Studio 2008.
The main limitation of both systems is the serial interface. It is workable, but slow, and most developers will want to move to JTAG if they can. The Ethernet interface on the SJJ board is in development—so that high speed link is not available as of yet; and both it and the Ethernet plug-in from Device Solutions are designed for application use. The MMC/SD card support is available from DotVision.com. I was not able to test that out, unfortunately.
Everything was setup as Visual Studio projects to it was a simple matter to generate the applications. Direct IO is possible using interface objects like InputPort and the complete documentation for the boards and chips is included.
Keep in mind that the .NET Micro Framework is not a real-time system unless it is placed on top of an RTOS. It provides scheduling services and worked quite well for a range of basic applications as is. It can run on top of RTOSes such as Express Logic’s ThreadX, but these will be separate purchases.
Overall, the process is not much different than using C or C++ to do development. The modularity of .NET is nice but the benefits are more likely to come from a common development platform that supports a wider range of programming languages such as Iron Python. Likewise, there is a level of compatibility between platforms that run .NET Micro Framework and even the higher level .NET environments that only similar platforms such as Java provide. Still, as you get closer to the hardware, this portability becomes more limited. In the case of most of the sample applications provided with the kits, the portability is almost nil since they rely on hardware and support within the BSP to run.
So, if you are a Visual Studio guru and love C# then these smaller microcontrollers are no longer off limits. The packages work as advertised.