The landing page for nanoFramework repositories.
Switch branches/tags
Nothing to show
Clone or download

README.md

License #yourfirstpr Average time to resolve an issue Percentage of issues still open Discord

nanoFramework logo


nanoFramework Home

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.

Firmware for reference boards

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 Download Download
ST_STM32F429I_DISCOVERY Download Download
ST_NUCLEO64_F091RC Download Download
ST_NUCLEO144_F746ZG Download Download
ST_STM32F769I_DISCOVERY Download Download
MBN_QUAIL Download Download
NETDUINO3_WIFI Download Download
ESP32_DEVKITC Download Download

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 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️

Repositories

  • Samples - this repo contains sample applications illustrating nanoFramework APIs and common use cases.

  • 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.

  • nf-Community-Contributions - this repo contains contributions from community members. Drivers, extensions, utilities, feature demos...

  • lib-CoreLibrary - this repo contains the Base Class Library (Core library - mscorlib) that is used in developing C# applications.

  • lib-nanoFramework.Hardware.Esp32 - this repo contains the nanoFramework.Hardware.Esp32 library that is used in developing C# applications for ESP32.

  • 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-nanoFramework.Runtime.Sntp - this repo contains the nanoFramework.Runtime.Sntp library that is used in developing C# applications.

  • lib-nanoFramework.System.Net - this repo contains the nanoFramework.System.Net library that is used in developing C# applications with networking capabilities.

  • 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.Devices.WiFi - this repo contains the Windows.Devices.WiFi 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 - this repo contains the Windows.Storage library that is used in developing C# applications.

  • 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.

  • 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.

  • ChibiOS - this repo contains a mirror of the official ChibiOS SVN repository. It's used as the default source for building nanoFramework images.

  • mbedtls - this repo contains a mirror of the official mbedtls repository. It's used as the default source for building nanoFramework images implementing TLS for networking.

How to Engage, Contribute and Provide Feedback

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 Discord 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 Discord, 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 Discord channels.

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:

Documentation

Docs

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:

Blog

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.

Who is behind this project?

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 😉 !

Code of Conduct

This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community.