Awesome
Document Language: English | 简体中文
.NET nanoFramework Home
This Home repository is the starting point for developers that want to learn about .NET nanoFramework, contribute to it or opening issues. It contains links to the various GitHub repositories used by .NET nanoFramework.
.NET 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.
It is part of the .NET Foundation.
Being a developer you'll probably will fit in one (or more than one😉) of the following profiles:
- You can enjoy to develop C# applications for micro-controllers.
- You can become a contributor as there are lots of areas to express yourself:
- C/C++ native drivers working low level directly on the MCU with our Platform Abstraction Layer and Hardware Abstraction Layer, RTOS, developing .NET CLR for nanoFramework.
- Managed C# to write new classes and drivers to add more bindings, libraries to .NET nanoFramework.
- Managed C# to write tools like the Visual Studio Extensibility, debugger and others mostly .NET Core/.NET 5 CLI applications.
- Help in setting up Azure DevOps pipelines to automate as much as possible.
- Writing and improving our Unit Tests.
- Helping others by answering their questions.
- Writing and improving documentation, doing PR reviews or participating in the overall project organization.
.NET nanoFramework is a fun and interesting way to learn. It’s a complete project with a lot of deep engineering. You’ll find a vibrant community to help you and you’ll be able to help as well. We do welcome all kind of contributions and we aim to give visibility to our contributors.
Sponsoring .NET nanoFramework
Most of the core team members and contributors are embedded systems enthusiasts, passionate about coding and people that like challenges. The work on .NET nanoFramework is done mostly on their free time. Some of the core members happen to work on companies that sponsor heavily nanoFramework and offer their work hours to the project. If you use .NET nanoFramework for serious work or want to support it, please donate. This allow for paying the infrastructure cost and more time to be invested on the project. Besides monetary contributions, there are several other ways to contribute. Please read the documentation about this here.
This is how we use the donations:
- Pay for infrastructure costs.
- Develop public relation actions to get the project known.
- Support maintainers and contributors that invest a large amount of time in the project.
- Support projects that .NET nanoFramework depends on.
- Produce documentation, tutorials and other content to support developers using .NET nanoFramework.
- Organize events to demo .NET nanoFramework.
Sponsors
Sponsors will get their logo and link to a website on our GitHub readme and also on our home page.
<a href="https://opencollective.com/nanoframework#support"><img src="https://opencollective.com/nanoframework/tiers/sponsor.svg?avatarHeight=80"></a>
Bronze Sponsors
<a href="https://opencollective.com/nanoframework/tiers/bronze-sponsor/0/website" target="_blank" rel="noopener noreferrer"><img src="https://opencollective.com/nanoframework/tiers/bronze-sponsor/0/avatar.svg"></a></br> <a href="https://www.orgpal.com" target="_blank"><img src="https://www.orgpal.com/orgpallogo.png" height="50" width="114"/></a></br> <a href="https://hive.linkit.nl/" target="_blank"><img src="https://docs.nanoframework.net/images/logos/LINKIT.png" height="50" ></a></br> <a href="https://d-fens.ch/" target="_blank"><img src="https://dfch.files.wordpress.com/2014/11/logo.gif?w=64" height="50" ></a></br>
Backers
Backers are individuals who contribute with money to help support nanoFramework. Every little bit helps and we appreciate all contributions, even the smallest ones.
<a href="https://opencollective.com/nanoframework#support"><img src="https://opencollective.com/nanoframework/tiers/backer.svg?avatarHeight=80"></a>
Other backers and sponsors
There are other people and organizations that have contributed to .NET nanoFramework along the time in several ways: sponsoring the coding of a feature that was missing or needed improvement, paying for an expense, coding a feature or... We would like to acknowledge these sponsors.
<table> <tr> <td><a href="https://www.eclo.solutions"><img src="https://docs.nanoframework.net/images/logos/eclo-solutions-logo-tall.svg" height="100" width="151"></a></td> <td><a href="http://www.chibios.org"><img src="https://upload.wikimedia.org/wikipedia/commons/c/cd/ChibiOS_Embeddedware_Official_Logo.jpg" height="100" width="100" alt="ChibiOS RTOS"/></a></td> </tr> </table>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 continuous builds of the reference targets. They include the latest version of all features and bug corrections. They also have managed debugging features enabled along with detailed error messages, but exclude native debugging features and only minimal (or no) error messages.
For native debugging, please download the nf-interpreter repository and build locally.
Besides the firmware images below, you can find several others for community provided target boards. Check the available ones and download links on the Community Targets repo.
ESP32 modules and boards
M5Stack
Target | Stable |
---|---|
M5Core | |
M5StickC | |
M5StickCPlus | |
M5Core2 | |
AtomS3 |
STM32 boards and chip based
Target | Stable |
---|---|
ST_STM32F429I_DISCOVERY (B01) | |
ST_NUCLEO64_F091RC | |
ST_STM32F769I_DISCOVERY | |
ORGPAL_PALTHREE |
Silicon Labs Giant Gecko boards
Target | Version |
---|---|
SL_STK3701A | |
SL_STK3701A_REVB |
NXP boards
Target | Stable |
---|---|
NXP_MIMXRT1060_EVK |
TI boards
Target | Stable |
---|---|
TI_CC1352R1_LAUNCHXL_868 | |
TI_CC1352R1_LAUNCHXL_915 | |
TI_CC3220SF_LAUNCHXL |
The above firmware builds include support for the class libraries and features marked below.
<details> <summary>Click to expand!</summary>Target | Gpio | Spi | I2c | Pwm | Adc | Dac | Serial | OneWire | Events | SWO | Networking | Bluetooth BLE | Large Heap | UI |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ESP32_PSRAM_REV0 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | |||
ESP32_REV0 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | |||
ESP32_PSRAM_XTAL26_REV0 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | |||
ESP32_PSRAM_REV3 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | |||
ESP32_REV3 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | |||
ESP32_BLE_REV0 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | |||
ESP32_BLE_REV3 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | |||
ESP_WROVER_KIT | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | ||
ESP32_PICO | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | ||||
ESP32_LILYGO | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: Wi-Fi + Ethernet | ||||
FEATHER_S2 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | ||||
KALUGA_1 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | |||
ESP32_C3 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | |||||
ESP32_OLIMEX | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: Wi-Fi + Ethernet | :heavy_check_mark: | |||
M5Core | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: Wi-Fi | :heavy_check_mark: | |||
M5StickC | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: Wi-Fi | :heavy_check_mark: | |||
M5StickCPlus | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: Wi-Fi | :heavy_check_mark: | |||
M5Core2 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: Wi-Fi | :heavy_check_mark: | |||
ST_STM32F429I_DISCOVERY (B01) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | ||||
ST_NUCLEO64_F091RC | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | ||||||
ST_STM32F769I_DISCOVERY | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | |
ORGPAL_PALTHREE | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | ||
TI_CC1352R1_LAUNCHXL | :heavy_check_mark: | |||||||||||||
TI_CC3220SF_LAUNCHXL | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | |||||||
NXP_MIMXRT1060_EVK | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
Repositories
Our GitHub organization holds the various repositories for firmware, class libraries, documentation and tools. You can find here a list and a description of each of them.
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 have a question, need clarification on something, need help on a particular situation or want to start a discussion, do not open an issue here. We ask you to open an issue only when you have a real and confirmed one.
It is best to ask the question on one of our Discord channels. Make sure to select the channel that's most appropriate to the context so subject matter experts are most likely to answer promptly. Or you can go over to Stack Overflow and ask the question there, make sure to use the nanoframework
tag.
If you can't use Discord, you should start a conversation at Discussion.
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:
License
.NET nanoFramework libraries, firmware images, tools and samples are licensed under the MIT license.
Documentation
Docs
The project documentation is a great place to find information about .NET 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 .NET nanoFramework.
- Building an image to load on a target board.
- .NET nanoFramework architecture and how the different pieces fit together.
- Contributing to .NET nanoFramework includes an overview on how you can contribute to the project.
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.
YouTube channel
We also have a YouTube channel where with video tutorials along with feature demos and teasers about new ideas that we are experimenting with.
Code of Conduct
This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community. For more information see the .NET Foundation Code of Conduct.