Embedded application development has come a long way from writing code in error prone assembly language. Earlier writing code for a device needed high level programming skills, but a lot has changed now. If you know how to write code in C# you can still write code for smaller devices.
On top of this, embedded development has been further boosted with the availability of IDE?(integrated development environment) support. One example of this is .NET Micro Framework which contains a subset of .NET libraries for building embedded applications for resource constrained devices.
The high point of this framework is its integration with Visual Studio that provides embedded developers a good ecosystem for writing applications. Besides providing ability for writing code, the .NET Micro Framework also provides a hardware emulator for rapid prototyping and debugging.
These emulators can also be extended for different hardware. This framework can run on small 32-bit processors and there is no requirement for a memory management unit in the processor. Instead of using a full version of an operating system, the .NET Micro Framework uses a scaled version of Common Language Runtime that sits directly on hardware with very low memory (RAM) requirements. Now the question arises why should one use this framework when there are other Microsoft embedded technologies available like Windows CE and Windows XP Embedded?
The answer is that the .NET Micro Framework uses the lowest resources as compared to the other two. This framework provides an abstraction that allows the application to be separated from the hardware platform. The code specific to the hardware platform is fed into a hardware abstraction layer (HAL) so that the .NET Micro Framework and applications can be moved to new platforms without any difficulty.