In this article, I would like to go through .Net Micro Framework's architecture. The migration work is mainly needed at platform abstraction layer and hardware abstraction layer. Most of common PAL programs are already there, without much modifications. But if the new device need drivers, HAL and PAL need to be redefined. If CLR layer doesn't support similar device interface, we have to use interop interface to access it. In other articles I will introduce a most simple serial port driver to elaberate how to design MF drivers. But for now, I would like to go through CLR principles first.
The CLR in MF is called TinyCLR(This reminds me on AB PLC third party model's TinyDOS system), indeed, comparing to the CLR in windows, it's too small. However, it almost has all functionalities. You can try with MF 3.0 SD, and see the interfaces. It also included GPIO, SPI, I2C, USBClient etc that not seen in windows platform CLR.
The most disadvantage of TinyCLR system is that it's not a real time system. In WINCE, there is at least a soft real time system, but TinyCLR doesn't.
TinyCLR only have one thread, managing all memory allocations.