.NET nanoFramework Architecture
Simplifications and trade-offs is an important read to start with. As in micro controller unit the resources are limited, we had to make trade off to still get the best of the .NET and C# experience but with few constraints.
Topics relevant for .NET development:
- Packaging and deployment
- Class Libraries
- Date and Time
- Floating point calculations
- String.Format for numerics examples
Topics relevant for native development:
- Generating stubs for a native project, NANOCLR macros, Arguments and return types
- Package and assembly versions and checksums
- PE File format and more details here
- Memory map structure
- Native interrupt handlers
- Wire Protocol
As a summary, we can represent the nanoFramework architecture like this:
nanoFramework is build on an Hardware Abstraction Layer (HAL). The HAL allow to access the hardware in a consistent and standard way. This allow to have a set of functions that are exposed the same way to the Platform Abstraction Layer (PAL) and specific drivers.
The CLR is built on the PAL and offers multiple libraries. The one which is always used is mscorlib (System and few other namespaces). The modularity of nanoFramework allows to add as many namespaces, classes as you want. They'll all be linked to the CLR.
Other architecture elements: