views:

1613

answers:

8

How does the .NET Micro Framework with a dev board compare to something like an Arduino, or Nintendo DS for starting with embedded programming?

+1  A: 

This answer is a little off-topic, but....

I personally use PICs from microchip.com. They are really inexpensive and have quite a lot of stuff built in with tons of options/versions. While I would love to use .NET Micro, but it seems to be developed for higher-end chips that are designed to run OSes. A lot of embedded projects, especially in the communications field need higher end chips ($100+ boards in small qty), but a lot of good embedded projects are small stuff and need $2 cpus. .NET Micro doesn't target those.

kenny
+5  A: 

The .NET Micro Framework is targeted for embedded systems that contain a powerful processor (currently ARM7, ARM9 and Blackfin).

The Arduino board is based on an 8-bit AVR microcontroller for which the .NET Micro Framework isn't even available. Consider for example the memory requirements of the framework: It is advertised to consume as low as about 300 kB of memory. Arduino has a total of 16 kB of program memory + 1 kB of RAM.

Nintendo DS, on the other hand, is at least technically capable of running the .NET Micro Framework.

If you are interested in embedded programming for hardware such as Arduino, I can assure you that you don't need (and usually can't use) any high level library or an operating system. In fact, you'll find that programming for a small microcontroller will be a joy because everything is very simple and under your total control.

smt
Actually its 32kb not 300
Matt Davison
My 300 kB claim is based on the Detailed White Paper that is available from this page: http://msdn.microsoft.com/en-us/netframework/bb267253.aspx. It says "The smallest .NET footprint yet (about 300 KB of RAM)".
smt
+1  A: 

If you are interested in using the .NET micro framework take a look at the tahoe II from devicesolutions.net

Asmussen
+1  A: 

its true, .Net MF is totally different. Ethernet, Serial Ports(UART),SPI, I2C, GPIOs supports are all in one.

And you are using VS 2008. The best IDE.

A: 

Also checkout the other way arround: Convert Processing code to run on .NET micro framework http://blogs.oberon.ch/tamberg/2009-02-23/running-processing-code-on-the-dotnet-mf.html

George Birbilis
+4  A: 

Honestly, if I were you (which I'm not, by the way), I'd stick it out and avoid the high-level abstraction of the .NET platform for an embedded system. The way I learned was via a college course where I was first introduced to embedded systems concepts on a SunROM kit (similar to an Arduino board, and also containing an ATmega32 MCU) in AVR assembly language, and then re-taught the concepts in C. Having the brief technical understanding of .NET that I do, I feel that there is just too much arbitrary abstraction in the platform for it to be a very wise choice. (Of course, part of this is also my hatred for .NET and Java in general, and especially when used in embedded systems programming, so take my biased opinion with a grain of salt.)

Embedded software should (in my opinion) be able to take advantage of the platform it runs on to run as quickly and efficiently as possible, instead of being made more abstract to run on as many different machines as possible. Instead of the software development kit being dumbed-down, making the programs slower or adding unnecessary complexity, I think that you should learn the concepts and implementation from the ground up, so you have a better working knowledge of what a "System.Watchdog" really is before you start misusing one.

Shotgun Ninja
+2  A: 

This look very cool. And only 30$.

http://www.netduino.com/

And this Puls version with ethernet.

http://www.netduino.com/netduinoplus/

basilmir
just found that too.. Looks interesting for some projects.
kenny
+1  A: 

All of the other answers are excellent, but I would just like to add that for a beginner, a framework such as .NET Micro might abstract away some very important concepts; it might get you too removed from your hardware. The joy (and real skill) of embedded programming comes in exploiting the hardware and architecture of your microcontroller. If you're using a framework as an abstraction layer on top of the hardware, then you won't really get the basic concepts that are important for embedded programming.

I say give it a go using C and assembly first, interacting directly with the hardware so that you get a good feel for what those frameworks are doing underneath. When you get comfortable with that then you might choose to move to a framework (but at that point... probably not :P)

But then again, if your goal is not to learn but to simply accomplish, then a framework can help you get that done much quicker, because you won't need to understand the inner workings. But where's the fun in that?

Kevin