.NET Micro Framework: Difference between revisions

Content deleted Content added
m disambiguate SPI link
GitHub archived in 2019
 
(263 intermediate revisions by more than 100 users not shown)
Line 1:
{{Short description|Open source .NET platform}}
The '''.NET Micro Framework''' is a [[Microsoft .NET|.NET]] platform for extremely resource-constrained devices. It includes a small version of the .NET [[common language runtime|CLR]] and supports development in [[C Sharp|C#]] and debugging (in an emulator or on hardware), both using [[Microsoft Visual Studio]]. It also features a subset of the .NET base class libraries (about 70 classes with about 420 methods), a [[GUI]] framework loosely based on [[Windows Presentation Foundation]], and additional libraries specific to embedded applications.
{{Use dmy dates|date=December 2023}} {{Use American English|date=December 2023}}
{{Infobox software
| logo = .NET Micro Framework Logo.png
| logo_size = 150px
| developer = [[Microsoft]] and [[.NET Foundation]]
| released = {{Start date and age|2007}}
| latest release version = 4.4<ref>{{cite web|url=https://blogs.msdn.microsoft.com/netmfteam/2015/10/20/net-micro-framework-4-4-is-now-available/|title=.NET Micro Framework 4.4 is now available!|publisher=[[Microsoft]]|access-date=2018-12-09|archive-url=https://web.archive.org/web/20171025190513/https://blogs.msdn.microsoft.com/netmfteam/2015/10/20/net-micro-framework-4-4-is-now-available/|archive-date=2017-10-25|url-status=dead}}</ref>
| latest release date = {{Start date and age|2015|10|20}}
| latest preview version =
| latest preview date = <!-- {{Start date and age|YYYY|MM|DD}} -->
| programming language = [[C++]]
| operating system = [[Microsoft Windows|Windows]]
| platform = [[ARM architecture|ARM]], [[Blackfin]]
| size =
| language = English
| genre = [[Software framework]]
| license = [[Apache License 2.0]]<ref>{{cite web|url=https://github.com/NETMF/netmf-interpreter/blob/dev/License.txt|title=.NET Micro Framework|publisher=Microsoft}}</ref>
| alexa =
| website = {{URL|https://netmf.github.io/netmf-interpreter/}}
| repo = {{URL|https://github.com/NETMF/netmf-interpreter}}
}}
The '''.NET Micro Framework''' (NETMF) was a [[.NET Framework]] platform for resource-constrained devices with at least 512&nbsp;[[kilobyte|kB]] of flash and 256&nbsp;kB of [[random-access memory]] (RAM). It includes a small version of the .NET [[Common Language Runtime]] (CLR) and supports development in [[C Sharp (programming language)|C#]], [[Visual Basic .NET]], and debugging (in an emulator or on hardware) using [[Microsoft Visual Studio]]. NETMF features a subset of the .NET base class libraries (about 70 classes with about 420 methods), an implementation of [[Windows Communication Foundation]] (WCF), a [[List of widget toolkits|GUI framework]] loosely based on [[Windows Presentation Foundation]] (WPF), and a Web Services stack based on Simple Object Access Protocol ([[SOAP]]) and [[Web Services Description Language]] (WSDL). NETMF also features added libraries specific to embedded applications. It is [[free and open-source software]] released under [[Apache License]] 2.0.
 
The .NET Micro Framework aims to make embedded development easier, faster, and less expensivecostly by giving embedded developers access to the modern technologies and tools used by desktop application developers. AdditionallyAlso, it allows desktop .NET developers to use their skills in the [[embedded worldsystem]]s, enlarging the pool of qualified embedded developers.
 
The Micro Framework is part of the [[.NET Foundation]].<ref>{{cite web|url=https://github.com/NETMF/netmf-interpreter/issues/537#issuecomment-285744825|title=Is .Net MF being discontinued?|last=Malliet|first=Steve|website=GitHub|access-date=2019-04-13}}</ref> Announced at the Build 2014 conference, the foundation was created as an independent forum to foster open development and collaboration around the growing set of open-source technologies for .NET.<ref>[http://www.dotnetfoundation.org/ .NET Foundation]</ref>
Among the unique features of the .NET Micro Framework (relative to other .NET platforms) are:
 
==Features==
* A memory footprint of about 300K; the next smallest .NET implementation, the [[.NET Compact Framework]] running on [[Windows CE]], needs about 12 MB
Relative to other .NET platforms, the unique features of the Micro Framework are:
* Can run directly "on the metal" without an operating system; running on an OS is also possible
 
* Supports common embedded peripherals and interconnects, including [[flash memory]], [[EEPROM]], [[GPIO]], [[I2C]], [[Serial Peripheral Interface Bus|SPI]], [[USB]]
* Memory needs of about 300&nbsp;kB; in contrast, the next smallest .NET implementation, the [[.NET Compact Framework]] running on [[Windows CE]], needs about 12&nbsp;MB
* Can run directly on a ''[[bare machine]]'' with no operating system, or can run on an [[operating system]] (OS)
* Supports common embedded peripherals and interconnects, including [[flash memory]], [[EEPROM]], [[GPIO]], [[I2C|I<sup>2</sup>C]], [[Serial Peripheral Interface Bus]] (SPI), [[serial port]], [[USB]]
* Optimized for energy-efficiency in battery-powered devices
* DoesNeeds not require ano [[memory management unit]]
* Provides multithreading support even when running on single-threaded operating systems
* A [[hardware abstraction layer]] allows porting to additionalother architectures
* A managed [[device driver]] model allows drivers for many devices to be written in C#
* Execution constraints to catch device lockups and crashes
* Transparent support for storing objects in non-volatile memory
 
Due to the constraints under which it operates, the .NET Micro Framework does have some limitationslimits beyond those imposed by its slimmed-down libraries. For example, the platform does not support [[symmetric multiprocessing]], multi-dimensionalmultidimensional arrays, machine-dependent types, or unsafe instructions. The CLR is an interpreter rather than a just-in-time compiler, and uses a simpler mark-and-sweep [[garbageGarbage collection (computer science)|garbage collector]] ratherinstead thanof a generational approachmethod. SupportAn forahead-of-time compiler is being developed<ref>{{cite web|url=https://blogs.msdn.microsoft.com/netmfteam/2015/10/03/llilum-roadmap-and-latest-additions/|title=LLILUM roadmap and latest additions|publisher=Microsoft|access-date=2016-06-30|archive-url=https://web.archive.org/web/20180826141116/https://blogs.msdn.microsoft.com/netmfteam/2015/10/03/llilum-roadmap-and-latest-additions/|archive-date=2018-08-26|url-status=dead}}</ref> using a modified [[interopLLVM]] (nativecompiler. codeInteroperation called frombetween managed applications)and native code currently has aseveral numberlimitations. As of limitations.2011, TheMicro Framework supported two .NET Microlanguages: FrameworkC# doesand notVisual Basic.<ref>[http://blogs.msdn.com/b/vbteam/archive/2011/06/08/micro-framework-v4-2-support any-for-visual-basic.aspx .NET languagesMicro otherFramework thanonly supports C# atand thisVisual time.Basic]</ref>
 
==Support==
As of 2013, the .NET Micro Framework was supported on [[ARM architecture]] processors (including ARM7, ARM9, and Cortex-M) and has been supported on [[Analog Devices]] [[Blackfin]] in the past. The Porting Kit is now available along with the source code as a free download under the [[Apache License]] 2.0 at the Microsoft Download Center.
 
The Micro Framework has its roots in Microsoft's [[Smart Personal Objects Technology]] (SPOT) initiative and was used in [[MSN Direct]] products such as smart watches before being made available to third-party developers early in 2007.<ref>{{cite web|url=https://news.microsoft.com/2007/01/08/microsoft-spot-initiative-accelerates-with-addition-of-msn-direct-to-navigation-devices|title=Microsoft SPOT Initiative Accelerates With Addition of MSN Direct to Navigation Devices|date=2007-01-08|publisher=Microsoft Corporation|access-date=2 July 2024}}</ref> It is a common platform for [[Windows SideShow]] devices and has been adopted in other markets, such as energy management, healthcare, industrial automation, and sensor networks.
 
Microsoft allows developers to create applications using the Micro Framework without charge, and makes a [[software development kit]] (SDK) available for free download that can be used with all versions of Visual Studio, including the free Express editions.<ref>{{cite web|url=http://www.microsoft.com/en-us/download/details.aspx?id=23546|title=NETMF4 SDK|publisher=Microsoft}}</ref>
 
==History==
In November 2009, Microsoft released the source code of the Micro Framework to the development community as [[free and open-source software]] under the Apache License 2.0.<ref>{{cite web|url=https://blogs.technet.microsoft.com/port25/2009/11/16/microsoft-to-open-source-the-net-micro-framework/|title=Microsoft to Open Source the .NET Micro Framework|publisher=Microsoft|access-date=2017-02-06|archive-url=https://web.archive.org/web/20181114014924/https://blogs.technet.microsoft.com/port25/2009/11/16/microsoft-to-open-source-the-net-micro-framework/|archive-date=2018-11-14|url-status=dead}}</ref>
 
In January 2010, Microsoft launched the ''netmf.com'' community development site to coordinate ongoing development of the core implementation with the open-source community.<ref>{{Cite web |url=http://www.netmf.com/ |title=netmf.com |access-date=2012-06-29 |archive-url=https://web.archive.org/web/20120705113134/http://www.netmf.com/ |archive-date=2012-07-05 |url-status=dead }}</ref>
 
On 9 January 2010, GHI Electronics announced FEZ Domino, the first member of the product line called FEZ (Freakin' Easy!), a combination of [[open-source hardware]] with a proprietary closed-source version of .NET Micro Framework.<ref>
[http://www.TinyCLR.com FEZ: open-source electronics boards with many open-source component drivers using .NET MF]</ref>
 
On 3 August 2010, Secret Labs announced the Netduino, the first all-open-source electronics platform using the .NET Micro Framework.<ref>{{Cite web |url=http://www.netduino.com/ |title=Netduino: open-source electronics platform using .NET MF |access-date=8 September 2010 |archive-date=20 March 2016 |archive-url=https://web.archive.org/web/20160320225203/http://www.netduino.com/ |url-status=dead }}</ref>
 
In February 2011, Novell posted a preview of the Mono 2.12 C# compiler, the first open-source compiler for .NET Micro Framework.<ref>[http://forums.netduino.com/index.php?/forum/12-mono/: Experimental Mono support for Mac/Linux]</ref>
 
On 23 January 2017, after numerous attempts (<ref>{{cite web |title=Manifest for .NETMF (the current state and the future we want for it) |website=[[GitHub]] |url=https://github.com/NETMF/netmf-interpreter/issues/491}}</ref> and <ref>{{cite web |title=Future of .NETMF (take #999999) |website=[[GitHub]] |url=https://github.com/NETMF/netmf-interpreter/issues/527}}</ref>) to revive .NET Microframework project and bring it to community governance and a period of work "in the dark", a group of embedded systems developers publicly announced .NET nanoFramework as spin-off of .NET Micro Framework.<ref>{{cite web |title=The name's Framework, nanoFramework |url=https://nanoframework.net/2017/01/23/my-name-is-framework-nanoframework/ |access-date=2019-02-22 |archive-date=2019-02-22 |archive-url=https://web.archive.org/web/20190222152330/https://nanoframework.net/2017/01/23/my-name-is-framework-nanoframework/ |url-status=dead }}</ref> A major rework on the build system, an easier way of adding new targets, a modernized API following [[Universal Windows Platform|UWP]], a Visual Studio extension with all the tools required for managing targets, full development experience from coding to debugging on the native code and support for ARM Cortex-M and ESP32 were the key differences at that time. On 12 October 2018 the first official release of the class libraries and firmware images was announced.<ref>{{cite web |title=nanoFramework v1.0 is official! |url=https://nanoframework.net/2018/10/12/502/ |access-date=2019-02-22 |archive-date=2019-02-22 |archive-url=https://web.archive.org/web/20190222152201/https://nanoframework.net/2018/10/12/502/ |url-status=dead }}</ref> On 2020-06-17 the developers announced release of nanoFramework<ref>[https://www.nanoframework.net/stable-releases-are-out/ Stable releases are out]</ref>
 
On 16 December 2016, GHI Electronics announced their own implementation of Micro Framework called TinyCLR OS, citing lack of maintenance of NETMF by Microsoft.<ref>{{Cite web |url=https://www.ghielectronics.com/community/forum/topic?id=24044 |title=Introducing TinyCLR OS: a new path for our NETMF devices |access-date=2017-07-28 |archive-url=https://web.archive.org/web/20170728203332/https://www.ghielectronics.com/community/forum/topic?id=24044 |archive-date=2017-07-28 |url-status=dead }}</ref> On 7 July 2017 GHI announced 5th preview of TinyCLR OS.<ref>{{Cite web |url=https://www.ghielectronics.com/community/forum/topic?id=24580 |title=Fifth Preview of TinyCLR OS Core Features and Porting |access-date=2017-07-28 |archive-url=https://web.archive.org/web/20170728202902/https://www.ghielectronics.com/community/forum/topic?id=24580 |archive-date=2017-07-28 |url-status=dead }}</ref> On 2 February 2018 GHI announced 8th preview of TinyCLR OS.<ref>{{Cite web |url=http://tinyclr.com/tinyclr-os-eighth-release-fez-hydra-wi-fi-and-cortex-m7/ |title=TinyCLR OS Eighth Release: FEZ Hydra, Wi-Fi, and Cortex-M7 |access-date=2018-02-15 |archive-url=https://web.archive.org/web/20180309184128/http://www.tinyclr.com/tinyclr-os-eighth-release-fez-hydra-wi-fi-and-cortex-m7/ |archive-date=2018-03-09 |url-status=dead }}</ref> On 5 April 2018 GHI announced 10th preview of TinyCLR OS.<ref>[https://forums.ghielectronics.com/t/tinyclr-os-tenth-release-bugs-rtc-and-stm32f7/21327 TinyCLR OS Tenth Release: Bugs, RTC, and STM32F7]</ref> On 27 April 2022 GHI announced release of TinyCLR OS version 2.2.<ref>[https://www.ghielectronics.com/2022/04/27/tinyclr-os-2-2-release/ TinyCLR OS 2.2 Release]</ref>
 
As of 2023, only nanoFramework and TinyCLR OS continue development of a framework that can run .NET code on a microcontroller.
 
==Hardware==
Multiple vendors make chips, development kits, and more that run the Micro Framework.<ref>{{Cite web |url=http://www.microsoft.com/netmf/hardware/default.mspx |title=Compatible Device Matrix |website=[[Microsoft]] |access-date=2010-10-29 |archive-url=https://web.archive.org/web/20101223163114/http://www.microsoft.com/netmf/hardware/default.mspx |archive-date=2010-12-23 |url-status=dead }}</ref>
 
===Netduino by Wilderness Labs===
[[Netduino]] is an open-source electronics platform using the Micro Framework. Originally created by Secret Labs, Netduino has been manufactured and maintained by Wilderness Labs Inc.<ref>{{cite web|url=http://www.netduino.com/|title=Netduino: home|publisher=Wilderness Labs, Inc.|access-date=29 October 2010|archive-date=20 March 2016|archive-url=https://web.archive.org/web/20160320225203/http://www.netduino.com/|url-status=dead}}</ref> since the acquisition of Secret Labs in 2017.<ref>{{cite web|url=https://www.prweb.com/releases/netduino_acquired_by_wilderness_labs/prweb14517316.htm|title=Netduino acquired by Wilderness Labs|date=2017-07-20|publisher=PRWeb|access-date=2 July 2024}}</ref> Based on 168Mhz Cortex-M4 (STM32F4) with up to 1,408 KB of code storage and 164 KB of RAM. On-board USB, Ethernet, Wifi, SD card slot. Development environment is MS Visual Studio and C#. Pin compatible with Arduino shields although drivers are required for some shields.
 
===GHI Electronics===
GHI Electronics makes several modules that support the Micro Framework:
 
* EMX Module<ref>{{cite web|url=http://www.ghielectronics.com/catalog/category/18/|title=Catalog - Latest Products - GHI Electronics|publisher=GHI Electronics, LLC|access-date=2011-02-20|archive-url=https://web.archive.org/web/20120320155135/http://www.ghielectronics.com/catalog/category/18/|archive-date=2012-03-20|url-status=dead}}</ref>
* ChipworkX Module<ref>{{cite web|url=http://www.ghielectronics.com/catalog/category/20/|title=Catalog - Latest Products - GHI Electronics|access-date=2011-02-20|archive-url=https://web.archive.org/web/20121204182300/http://www.ghielectronics.com/catalog/category/20|archive-date=2012-12-04|url-status=dead}}</ref>
* USBizi144 Chipset<ref>{{cite web|url=http://www.ghielectronics.com/catalog/product/116|title=USBizi144 Chipset - GHI Electronics|publisher=GHI Electronics, LLC|access-date=2011-02-20|archive-url=https://web.archive.org/web/20140107233556/https://www.ghielectronics.com/catalog/product/116|archive-date=2014-01-07|url-status=dead}}</ref> and USBizi100, whose only difference is the lack of USB host support in the USBizi100<ref>{{cite web|url=http://www.ghielectronics.com/catalog/product/117|title=USBizi100 Chipset - GHI Electronics|publisher=GHI Electronics, LLC|access-date=2011-02-20|archive-url=https://web.archive.org/web/20140107234235/https://www.ghielectronics.com/catalog/product/117|archive-date=2014-01-07|url-status=dead}}</ref>
 
GHI Electronics also makes the ''.NET FEZ'' line of very small open-source hardware boards with proprietary firmware, targeted for beginners. They are based on the USBizi chipset and all its features. The FEZ Domino board offers USB host. Even though FEZ is for beginners, it is also a low-cost starting point for professionals wanting to explore NETMF.<ref>{{cite web|url=http://www.ghielectronics.com/catalog/category/7/|title=Catalog - Latest Products - GHI Electronics|access-date=2011-02-20|archive-url=https://web.archive.org/web/20130302063709/http://www.ghielectronics.com/catalog/category/7/|archive-date=2013-03-02|url-status=dead}}</ref> Some of these boards are physically compatible with the [[Arduino]].
 
GHI Electronics does not recommend to use its Micro Framework-based devices for new designs and instead recommends its TinyCLR-based devices.<ref>{{cite web|title=.NET Micro Framework Devices|url=https://www.ghielectronics.com/netmf/|website=GHI Electronics|access-date=2023-10-26}}</ref>
 
===Mountaineer boards===
Mountaineer boards, part of the Mountaineer Group, used to make a small range of [[Open-source hardware|open-source]] open-hardware boards that make use of the Micro Framework. Mountaineer have ported the Micro Framework for use on the [[STM32]] family of [[microcontroller]]s featured on their Mountaineer boards and elsewhere.<ref>{{cite web|last=|first=|date=|title=NETMF for STM32 - Mountaineer Group|url=http://www.mountaineer.org/netmf-for-stm32/|url-status=dead|archive-url=https://web.archive.org/web/20181119051708/https://www.mountaineer.org/netmf-for-stm32/|archive-date=2018-11-19|access-date=|website=|publisher=}}</ref>
 
===STMicroelectronics===
[[STMicroelectronics]], creators of the microcontroller family [[STM32]], make low-cost [[STM32#Discovery boards|discovery boards]] to showcase the controllers, and provides ports of the Micro Framework to run on them.<ref>[http://www.st.com/st-web-ui/static/active/en/resource/technical/document/user_manual/DM00096190.pdf UM1676: Getting started with .Net Micro Framework on the STM32F429 Discovery kit]</ref>
 
===Netmfdevices===
The .NET Micro Framework is currently supported on [[ARM architecture]] processors (including ARM7 and ARM9) and on [[Analog Devices]] [[Blackfin]]. Porting, which requires access to the .NET Micro Framework source, is performed by Microsoft and hardware partners under license from Microsoft. These partners then offer development kits and pre-built modules capable of running the framework to developers and manufacturers. Among the development kits supporting the .NET Micro Framework are offerings from [[Freescale]]'s i.MXS and EmbeddedFusion's Tahoe.
Netmfdevices was an open-source electronics platform using FEZHacker and .NET Micro Framework.<ref>{{Cite web |url=http://www.netmf.in/ |title=Netmfdevices |access-date=2019-06-26 |archive-date=2019-06-26 |archive-url=https://web.archive.org/web/20190626093829/http://www.netmf.in/ |url-status=dead }}</ref>
 
===Micromint===
Microsoft does not charge fees for developing applications using the .NET Micro Framework and makes an SDK freely available for download (however, Visual Studio Standard or better is required; the free Visual Studio Express editions cannot be used). Distributing devices that use the .NET Micro Framework does require a license, with royalties based on volume.
The Micromint Bambino 200 is the first [[multi-core processor]] SBC compatible with the .NET Gadgeteer framework.<ref>{{Cite web |url=http://www.micromint.com/component/content/article/53-products/products/196-bambino200.html |title=Micromint Bambino 200 |access-date=2014-06-19 |archive-date=2014-11-13 |archive-url=https://web.archive.org/web/20141113165956/http://www.micromint.com/component/content/article/53-products/products/196-bambino200.html |url-status=dead }}</ref> The model 200 is powered by an NXP LPC4330, the first dual-core ARM Cortex-M microcontroller. Its Cortex-M4 and Cortex-M0 cores are both capable of 204&nbsp;MHz. It has 264&nbsp;KB SRAM onboard and 4&nbsp;MB of flash. The model 200E has all the same features as the model 200, and increased flash memory to 8&nbsp;MB, 10 Gadgeteer sockets, an [[Ethernet]] port, [[microSD]] socket, and other features.
 
===.NET Gadgeteer devices===
The .NET Micro Framework has its roots in Microsoft's [[Smart Personal Objects Technology|SPOT]] initiative and was used in [[MSN Direct]] products such as smart watches before being made available to third-party developers early in 2007. Today, it is a common platform for [[Windows SideShow]] devices and is beginning to see adoption in other markets, such as home automation and sensor networks.
Several manufacturers make boards and modules compatible with the [[.NET Gadgeteer]] rapid-prototyping standard for the framework.
 
==See also==
{{Portal|Free and open-source software}}
*[[Microsoft .NET]]
* [[DirectBand]]
*[[Smart Personal Objects Technology]]
* [[.NET Compact Framework]]
*[[DirectBand]]
* [[MSN.NET DirectFramework]]
*[[Windows SideShow]]
 
==References==
== External links ==
{{Reflist|30em}}
* [http://msdn2.microsoft.com/en-us/embedded/bb267253.aspx .NET Micro Framework] official site at MSDN
* [http://www.msndirect.com/ MSN Direct] official site
* [http://www.dotnetmicroframework.com Embedded Programming with the Microsoft .NET Micro Framework] book site
 
==External links==
{{DotNET}}
* {{Official website|https://netmf.github.io/}}
 
{{.NET Framework}}
[[Category:.NET framework]]
{{Common Language Infrastructure}}
{{Microsoft FOSS}}
 
[[deCategory:.NET Framework implementations|Micro Framework]]
[[Category:Free computer libraries]]
[[Category:Microsoft free software]]
[[Category:Software using the Apache license]]
[[Category:2007 software]]
[[Category:Windows-only free software]]