Mountaineer Release 4.3 (Beta 1)
"It is exciting to see Oberon and CSA delivering another high quality release for NETMF. The quality and care of their work makes this port for Cortex-M one of the best offerings of this kind in the industry. Congratulations!"
Lorenzo Tessiore, Microsoft See what others are saying...
Description
Release 4.3 is the latest version of Microsoft's .NET Micro Framework. We have updated our NETMF for STM32 port for this version, including solutions for both the Mountaineer USB Mainboard and the Mountaineer Ethernet Mainboard. The compiled binary images of this software (the firmware) and the libraries for developing applications on a PC (the SDK) can be downloaded from this Web page, see below.
Beta 1 Notes
This is the Beta 1 release of the Mountaineer 4.3 firmware and of the Mountaineer 4.3 SDK.
If you intend to use the Gadgeteer libraries, please be aware that it may take a while until there are NETMF 4.3 compatible drivers for all modules. Ask your module suppliers for updated drivers. If you have the source code for a module's Gadgeteer driver for NETMF 4.2, then switching the target framework in Visual Studio to NETMF 4.3 and recompiling the driver should work as well.
For technical support and discussions, please use the GHI forum.
For bug reports, please use our Codeplex site.
At the moment, there are still the NETMF 4.2 QFE2 sources on Codeplex. We will update the source code to 4.3 once the beta phase is over.
Requirements
You need a computer with Windows 7 or newer.
For Windows 8.1, you need to install .NET Framework 3.5, as Microsoft's NETMF SDK has a dependency on an older .NET framework, which doesn't come pre-installed with Windows 8.1 anymore. You can download it from here.
Step 1 - Microsoft Visual Studio 2012
Make sure that you have Visual Studio 2012 installed. The free Visual Studio Express 2012 for Windows Desktop edition is sufficient, you can download it from here.
If you already have an older version of Visual Studio installed, you can keep it when you install Visual Studio 2012 ("side-by-side installation"). Note that you can develop and deploy NETMF applications for NETMF 4.3 and also for older NETMF releases from within Visual Studio 2012.
Step 2 - Microsoft .NET Micro Framework SDK 4.3
Download Microsoft's .NET Micro Framework SDK 4.3. It is the download labeled SDK 4.3 (RTM) on this page. Now install it on your PC.
Step 3 - Microsoft .NET Gadgeteer Core 2.43.800
This step is only relevant if you want to use your board with .NET Gadgeteer. If you only plan to use plain vanilla NETMF, you can skip to the next step. Otherwise install Microsoft's .NET Gadgeteer SDK 2.43.800 by clicking on the link .NET Gadgeteer Core on this page.
Step 4 - Mountaineer USB drivers
To be able to use Microsoft's Visual Studio and MFDeploy tools with your Mountaineer board, you need to install a USB driver on your PC. There is one driver for the Ethernet mainboard, and one driver for the USB mainboard.
Note: These drivers have been updated on 17-Jul-2014. They now are signed in a way that allows installation on Windows 8 systems.
First, download the drivers contained in the following zip archive:
This zip file contains both Mountaineer USB Mainboard and Mountaineer Ethernet Mainboard drivers.
Now unzip the archive, which results in the directory
...\Mountaineer USB Drivers
The actual installation will happen during the update of the Mountaineer firmware, in the following step.
Step 5 - Mountaineer firmware 4.3
Mountaineer boards are shipped with NETMF 4.2 QFE1 preinstalled. You need to install new firmware on your board.
First, download the appropriate firmware for your board:
Now unzip the downloaded archive, which results in the directory
...\Mountaineer Firmware 4.3 Ethernet or
...\Mountaineer Firmware 4.3 USB
Open this directory, it contains the file
Installation Guide for Mountaineer Firmware 4.3.pdf
Open this document and follow the instructions in order to install the Mountaineer firmware.
Step 6 - Mountaineer SDK 4.3
Download the Mountaineer SDK:
Now unzip the downloaded archive, which results in an installer. Run this installer.
Note that the installer checks whether the Gadgeteer Core is installed (see Step 3 above). Only if this is the case, it installs the Gadgeteer drivers for both Mountaineer USB and Ethernet mainboards. In any case, it installs the Mountaineer DLL, which contains the following namespaces:
-
Mountaineer.Netmf.Hardware (the Gadgeteer-socket-oriented hardware provider),
-
Mountaineer.Stm32.Hardware (the alternate CPU-pin-oriented hardware provider), and
-
Mountaineer.Netmf.Flash (a simple driver for the onboard Flash memory).
Step 7 - Get started
To try out your first Gadgeteer program, follow the steps described in the following document:
You may then want to try out the samples of the book Getting Started with the Internet of Things. Here the samples are adapted to Mountaineer Ethernet Mainboards.
Features
The following table is intended to make it easier for you to determine if a specific NETMF feature is available for Mountaineer. The supported features fully comply with the standard NETMF distribution of Microsoft.
Some advanced firmware features are only available for engineering projects done in cooperation with the Mountaineer Group; these are labeled as Mountaineer Prime features in the following table.
Feature | Support | Comments |
.NET Micro Framework | Supported |
Release 4.3. |
.NET Gadgeteer |
Supported |
Gadgeteer Core 2.43.800. |
Visual Studio |
Supported |
Visual Studio Express 2012 for Windows Desktop (free), or one of the Pro / Premium / Ultimate editions. VS 2012 can coexist with installations of older Visual Studio versions on the same PC. You can also develop for older versions of NETMF within VS2012. |
Single-chip microcontrollers |
Supported |
STM32F407, 168 MHz, 192 KB RAM, 1 MB Flash. |
Hardware floating-point | Supported |
STM32F4 only has hardware (FPU) for single-precision values (type float), not for double-precision values (type double). |
Digital I/Os | Supported |
|
Analog inputs | Supported |
|
Analog outputs | Supported |
|
Pulse-Width Modulated (PWM) outputs | Supported |
|
USARTs (serial) | Supported |
|
I2C bus | Supported |
|
SPI bus | Supported |
|
USB Device | Supported |
The Mountaineer USB Mainboard provides two independent USB Device ports. One can be used for debugging and deployment, the other for the application. |
USB Host | Prime only |
Hardware available only on Mountaineer USB mainboard. For Mountaineer Prime projects: USB mass storage profile for one connected device supported. |
Ethernet | Supported |
Hardware available only on Mountaineer Ethernet Mainboard. Fast Ethernet driver implementation (interrupt-driven with DMA). |
ICMP | Supported |
lwIP stack. |
DHCP | Supported |
lwIP stack. |
UDP | Supported |
lwIP stack. |
TCP | Supported |
lwIP stack. Maximum number of open sockets (i.e., simultaneous connections): 5 |
HTTP | Supported |
|
XML parsing | Supported |
Part of the parser is implemented in native code. |
NTP | Supported(new) |
Hardware available only on Mountaineer Ethernet Mainboard. Must be explicitly enabled, see here. |
Real-time clock | Supported(new) |
See here for more information. |
OneWire bus | Supported(new) |
|
Hardware watchdog | Prime only |
For Mountaineer Prime projects: due in Q4 2013. |
On-board Flash |
Limited support (new) |
A simple driver is provided in the Mountaineer SDK and described here. Add a reference to the Mountaineer assembly, and then use the FlashDriver class in namespace Mountaineer.Netmf.Flash. |
SD Cards | Prime only |
No corresponding hardware (card slot or Gadgeteer socket) available on commercially available Mountaineer mainboards. For Mountaineer Prime projects: fast (4 bit bus) implementation supported for cards up to 4 GB. |
FAT file system | Not supported |
Considered for a later release (requires driver for on-board Flash). See also the community-contributed Tiny File System of Taylorza and its driver by LouisCpro. |
In-the-field update of firmware | Not supported |
Considered for a later release (MFUpdate / Microbooter). |
SSL | Not supported |
Open SSL is about an order of magnitude too large for the STM32 on-chip memories. |
Graphics |
Limited support (new) |
Bitmap data type and graphics operations are now supported in principle. However, there is no standard way in NETMF for efficiently copying a bitmap to a display. Thus displays are currently not supported. |
Touch screens | Not supported |
Mountaineer mainboards have no T sockets. |
FTP | Not supported |
Never required in customer projects yet. |
SMTP | Not supported |
Never required in customer projects yet. |
CAN bus | Not supported |
No support in standard NETMF. |
Extended weak references | Not supported |
Mechanism is hardly usable in practice (nondeterministic commit times to Flash - you never know when your data is safely stored). Moreover, the STM32F4 Flash block structure would waste far too much of the on-chip Flash for EWR. |
DPWS | Not supported |
Never required in customer projects yet. Our focus is typically on more light-weight REST-based services instead. |
GCC | Not supported |
Never required in customer projects yet. Even the latest GCC version for Cortex-M still produces massively slower and larger code than the tools that we use (ARM MDK-Cortex-M 5.0). |
You can find the NETMF source code of the Mountaineer firmware on our Codeplex site.
Known issues
Issue | Description |
1) SD Card operations sometimes take long to complete |
Somestimes it can take up to a minute for an SD Card read or write operation to complete.
This may be a bug in the NETMF file system's Flush() method (https://netmf.codeplex.com/workitem/2149).
Workaround: new Microsoft.SPOT.IO.VolumeInfo("\\SD").FlushAll(); |
2) Gadgeteer analog output values too large |
Analog output is 40 times too large.
This is a bug of the Gadgeteer Core (https://gadgeteer.codeplex.com/workitem/1666); plain vanilla NETMF code is not affected.
Workaround: use PWM instead of analog output. |
3) NetworkUp event issue
(to be corrected in Beta 2) |
NetworkUp event does not fire if board starts up with cable attached (https://gadgeteer.codeplex.com/workitem/1752).
Workaround: see the above Codeplex issue. |
4) LWIP assertion failure |
Sometimes LWIP produces an assertion ("tcp_pcb_purge: listen pcb does not have accepts pending" failed).
Workaround: none needed (ignore output). |
5) Slower without debugger |
Program can be slower without attached debugger (https://netmf.codeplex.com/workitem/2179).
Workaround: don't use Debug.Print(). |
6) Gadgeteer Web server |
No response is received from a Gadgeteer.Networking.WebServer instance. |
7) 10 Mbps does not work (to be corrected in Beta 2) |
Network stack does not work with 10 Mbps switches. |
8) UDP broadcasts (to be corrected in Beta 2) |
UDP broadcasts cause exceptions. |
9) Hangup after deployment (to be corrected in Beta 2) |
After deployment, a soft reboot happens, which sometimes hangs up the board. |
10) No deployment when USB stick plugged in |
When an USB stick is plugged in to the USB host connector, deployment does not work.
Only relevant for Mountaineer Prime. |
11) Wrong exception for disposed socket | Using a disposed socket causes a SocketException instead of an ObjectDisposed exception (https://netmf.codeplex.com/workitem/2180). |
12) Parity issue (to be corrected in Beta 2) |
Using odd/even parity for serial ports does not work.
Workaround: add 1 to bit number. |
13) NotSupportedException in Gadgeteer |
When creating an empty Gadgeteer project and starting it, a System.NotSupportedException is thrown in the Microsoft.SPOT.IO.dll.
Workaround: none needed (ignore exception). |
14) Device hangs when deploying and Ethernet cable is plugged in |
TCP stack hangs waiting for DHCP if there are multiple devices in the network with the same MAC address.
Workaround: make sure that every device has unique MAC address. |