This Home repository is the starting point for developers that want to learn about nanoFramework, contribute to it or opening issues. It contains links to the various GitHub repositories used by nanoFramework.
nanoFramework goal is to be a platform that enables the writing of managed code applications for constrained embedded devices. Developers can harness the familiar IDE Visual Studio and their .NET (C#) knowledge to quickly write applications without having to worry about the low level hardware intricacies of a micro-controller.
Being a developer you'll probably will fit in one (or maybe both 😉) of the following profiles:
- Developer: if your goal is to develop C# applications for micro-controllers.
- Contributor: if you are interested in actively contributing by coding (native, managed, C, C++, CMake), writing documentation or participating in the overall project organization.
Each of the following ZIP files contains the image files for nanoBooter and nanoCLR in various formats (HEX, BIN and DFU). They should be flashed in the target boards using an appropriate software utility.
The stable versions are RTM builds with the smallest possible size. They include the latest stable version. The debugging feature is disabled and only minimal (or none) error messages.
The preview versions are continuous builds of the reference targets. They include the latest version of all features and bug corrections. They also have the debugging feature enabled along with detailed error messages.
Target | Stable | Preview |
---|---|---|
ST_STM32F4_DISCOVERY | ||
ST_STM32F429I_DISCOVERY | ||
ST_NUCLEO64_F091RC | ||
ST_NUCLEO144_F746ZG | ||
ST_STM32F769I_DISCOVERY | ||
MBN_QUAIL | ||
NETDUINO3_WIFI | ||
ESP32_DEVKITC |
The above firmware builds include support for the class libraries and features marked bellow.
Target | Gpio | Spi | I2c | Pwm | Adc | Serial | Events | SWO | Networking | Large Heap |
---|---|---|---|---|---|---|---|---|---|---|
ST_STM32F4_DISCOVERY | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ||
ST_STM32F429I_DISCOVERY | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
ST_NUCLEO64_F091RC | ✔️ | ✔️ | ||||||||
ST_NUCLEO144_F746ZG | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ||
ST_STM32F769I_DISCOVERY | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
MBN_QUAIL | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ||||
NETDUINO3_WIFI | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |||
ESP32_DEVKITC | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
-
nf-interpreter - this repo contains the nanoFramework CLR, interpreter, target boards configuration and the build system. This is where everything required to build an image to be flashed into a device lives.
-
nf-Community-Targets - this repo contains target boards that are contributed by community members. You might find here inspiration for your next board.
-
lib-CoreLibrary - this repo contains the Base Class Library (Core library - mscorlib) that is used in developing C# applications.
-
lib-nanoFramework.Runtime.Events - this repo contains the nanoFramework.Runtime.Events library that is used in developing C# applications.
-
lib-nanoFramework.Runtime.Native - this repo contains the nanoFramework.Runtime.Native library that is used in developing C# applications.
-
lib-Windows.Devices.Adc - this repo contains the Windows.Devices.Adc library that is used in developing C# applications.
-
lib-Windows.Devices.Gpio - this repo contains the Windows.Devices.Gpio library that is used in developing C# applications.
-
lib-Windows.Devices.I2c - this repo contains the Windows.Devices.I2c library that is used in developing C# applications.
-
lib-Windows.Devices.Pwm - this repo contains the Windows.Devices.Pwm library that is used in developing C# applications.
-
lib-Windows.Devices.SerialCommunication - this repo contains the Windows.Devices.SerialCommunication library that is used in developing C# applications.
-
lib-Windows.Devices.Spi - this repo contains the Windows.Devices.Spi library that is used in developing C# applications.
-
lib-Windows.Networking.Sockets - this repo contains the Windows.Networking.Sockets library that is used in developing C# applications that require networking capabilities.
-
lib-Windows.Storage.Streams - this repo contains the Windows.Storage.Streams library that is used in developing C# applications.
-
lib-System.Net - this repo contains the System.Net library that is the foundation for networking in nanoFramework.
-
lib-nanoFramework.Hardware.ESP32 - this repo contains the nanoFramework.Hardware.ESP32 class library that exposes hardware features specific of ESP32 targets.
-
nf-Visual-Studio-extension - this repo contains the Visual Studio extension and all the associated tools required to compile and build a nanoFramework managed application ready to deploy to a target device.
-
nf-debugger - this repo contains the debugger library (in several technologies) allowing reuse of the low lower library by third party applications.
-
nf-ANT - this repo contains an UWP application that connects to a nanoFramework target and can provide basic information about it along with some basic management operations. The development of this tool has been put on a halt because its features and capabilities are now available in Visual Studio through the Device Manager window.
-
ChibiOS - this repo contains a mirror of the official ChibiOS SVN repository. It's used as the default source for building nanoFramework images.
-
nf-tools - this repo contains various tools that are required in nanoFramework development, usage or repository management.
-
nanoframework.github.io - this repo contains the sources and configuration files to generate the nanoFramework documentation web site. Any static content, such as articles, guides, how-to's and such is to be checked-in here.
Some of the best ways to contribute are to try things out, file bugs, and join in design conversations. If you are having issues or need a clarification about something, instead of opening an issue the best way is to start a conversation in one of our Slack channels. Please select the one that's most appropriate to the matter you are facing.
If you've find a bug or can't use Slack, please open an issue at Issues. We ask you to open an issue only when you have a real and confirmed one. Don't open an issue for support requests or to start a discussion. For that you'll get a better (and quicker!) support/feedback in one of the Slack channels. You can request an invitation for the Slack workspace in this form.
Looking for something to work on? Check the list of up-for-grabs issues on the Home repo, that's a great place to start.
See some of our guides for more details:
The project documentation is a great place to find information about nanoFramework, no matter if you are newcomer or a veteran. It's organized in the following categories:
- API reference documentation for the various class libraries.
- Developing C# applications using nanoFramework.
- Building an image to load on a target board.
- nanoFramework architecture and how the different pieces fit together.
- Contributing to nanoFramework includes an overview on how you can contribute to the project.
There is a blog where we try to post detailed updates about the development status, technical posts about a particular feature ou a design option.
There are a number of people behind this project. We are mostly embedded systems enthusiasts, passionate about coding and people that like challenges. All of us have our daily jobs and we work on this project in our free time. That is to say that you can always expect an answer from us. Maybe not instantly but in a - hopefully - timely fashion 😉 !
This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community.