
.Net Micro Framework — , Visual Studio. . open-source , GitHub. “” . .Net Micro Framework . 
, ”Hello world” Windows. , .Net Micro Framework “” — STM32F4Discovery.
, , 
. 4.4 
netmf-interpreter. 
.
, , 
.Net Micro Framework , - 4.3, - . , STM32F4Discovery .Net Micro Framework 4.4 . , .
.
. zip-, , git. , , 
. . , , zip- 
.
git, :
- GitHub fork. pull- GitHub .
- , clone. , :
 git clone github.com/<your GitHub ID>/netmf-interpreter.git
 : . ,D:\NETMF\repo,repo— . .
 
- , Upstream. pull pull. Upstream :
 git remote add upstream https:
 
: ( — . 2 git) .
, 
.NET Micro Framework v4.4 Release To Web (RTW) , . , , .
, , :
- binary tools zip . , , “” . , .
- binary tools zip- . D:\NETMF\repo,repo— ,bintoolsD:\NETMF.
- :
 <repo folder>\Framework\Tools\BuildTasksInternal\BuildSigner\BuildSignerSpotBuild.csproj
 37
 <HintPath>$(MSBuildProgramFiles32)\Microsoft Internal\Codesign.Submitter\CODESIGN.Submitter.dll</HintPath>
 
 <HintPath>$(SPOROOT)\tools\x86\CODESIGN\CODESIGN.Submitter.dll</HintPath>
 
 . . , .Net Micro Framework open source , , , . .NET Micro Framework v4.4 Release To Web (RTW). . .
- CMSIS <repo folder>\MSIS.,<repo folder>\MSIS\ReadMe.md.
 
 CMSIS Cortex Microcontroller Software Interface Standart. Cortex-M, — ARM. “” .
 
 .Net Micro Framework 4.4 CMSIS 4.3. zip- (CMSIS-SP-00300-r4p3-00rel0.zip). ARM.<repo folder>\MSIS.
- .Net Micro Framework Cryptographic Libraries. , . . , , , .
 
 msi . (<crypto install folder>), ,D:\NETMF\repoD:\NETMF\repo_master.
. 
MSBuild. sln proj Visual Studio, . Visual Studio .
, , STM3F4Discovery
<repo folder>\Solutions\STM32F4DISCOVERYhex
<repo folder>\BuildOutput
Visual Studio
MSBuild Visual Studio. 
.netmf interpreter 4.4 , Visual Studio 2015 Community, Pro Ultimate, .
ARM
ARM. :
RealView 
Keil MDK. 
32 , , , 
7-Day MDK-Professional Trial License. Keil MDK 5 
.
C:\Keil_v5.
GCC , 10% , RealView. GCC ARM Embedded 
. 
<gcc folder>.
ARM RealView Compilation tools
MDK 3.1, 3.80a, 4.12, 4.13, 4.54, 5.04, 5.05. ,
<repo folder>\tools\Targets\Microsoft.Spot.system.mdk.targets5.06.
<CC      Condition="'$(COMPILER_TOOL_VERSION)'=='MDK5.05'">"$(MDK_TOOL_PATH)\ARMCC\bin\armcc.exe"</CC>
<CPP     Condition="'$(COMPILER_TOOL_VERSION)'=='MDK5.05'">"$(MDK_TOOL_PATH)\ARMCC\bin\armcc.exe"</CPP>
<AS      Condition="'$(COMPILER_TOOL_VERSION)'=='MDK5.05'">"$(MDK_TOOL_PATH)\ARMCC\bin\armasm.exe"</AS>
<LINK    Condition="'$(COMPILER_TOOL_VERSION)'=='MDK5.05'">"$(MDK_TOOL_PATH)\ARMCC\bin\armlink.exe"</LINK>
<AR      Condition="'$(COMPILER_TOOL_VERSION)'=='MDK5.05'">"$(MDK_TOOL_PATH)\ARMCC\bin\armar.exe"</AR>
<FROMELF Condition="'$(COMPILER_TOOL_VERSION)'=='MDK5.05'">"$(MDK_TOOL_PATH)\ARMCC\bin\fromelf.exe"</FROMELF>
 <MdkCrtLibLinkSwitch Condition="'$(COMPILER_TOOL_VERSION)'=='MDK5.05'">$(MdkCrtLibLinkSwitch) $(SWTC)libpath $(MDK_TOOL_PATH)\ARMCC\LIB</MdkCrtLibLinkSwitch>
<CC      Condition="'$(COMPILER_TOOL_VERSION)'=='MDK5.06'">"$(MDK_TOOL_PATH)\ARMCC\bin\armcc.exe"</CC>
<CPP     Condition="'$(COMPILER_TOOL_VERSION)'=='MDK5.06'">"$(MDK_TOOL_PATH)\ARMCC\bin\armcc.exe"</CPP>
<AS      Condition="'$(COMPILER_TOOL_VERSION)'=='MDK5.06'">"$(MDK_TOOL_PATH)\ARMCC\bin\armasm.exe"</AS>
<LINK    Condition="'$(COMPILER_TOOL_VERSION)'=='MDK5.06'">"$(MDK_TOOL_PATH)\ARMCC\bin\armlink.exe"</LINK>
<AR      Condition="'$(COMPILER_TOOL_VERSION)'=='MDK5.06'">"$(MDK_TOOL_PATH)\ARMCC\bin\armar.exe"</AR>
<FROMELF Condition="'$(COMPILER_TOOL_VERSION)'=='MDK5.06'">"$(MDK_TOOL_PATH)\ARMCC\bin\fromelf.exe"</FROMELF>
<MdkCrtLibLinkSwitch Condition="'$(COMPILER_TOOL_VERSION)'=='MDK5.06'">$(MdkCrtLibLinkSwitch) $(SWTC)libpath $(MDK_TOOL_PATH)\ARMCC\LIB</MdkCrtLibLinkSwitch>
. , :
cd /d D:\WORKDIR\NetMf\NetMFRepo\repo, :
setenv_mdk 5.06
(
<repo folder>\Solutions\STM32F4DISCOVERY). , :
cd /d D:\WORKDIR\NetMf\NetMFRepo\repo\Solutions\STM32F4DISCOVERY, , :
msbuild dotnetmf.proj /p:flavor=release /flmsbuild —
dotnetmf.proj — STM32F4DISCOVERY
/p:flavor=release — (debug/release/rtm)
/fl — .
( 
D:\WORKDIR\NetMf\NetMFRepo\repo\Solutions\STM32F4DISCOVERY). , 
/fl .
msbuild /t:help
10 :

:
<repo folder>\BuildOutput\THUMB2FP\MDK5.06\le\FLASH\release\STM32F4DISCOVERY\bin\Tinybooter.hex\
<repo folder>\BuildOutput\THUMB2FP\MDK5.06\le\FLASH\release\STM32F4DISCOVERY\bin\tinyclr.hex\ER_CONFIG
<repo folder>\BuildOutput\THUMB2FP\MDK5.06\le\FLASH\release\STM32F4DISCOVERY\bin\tinyclr.hex\ER_FLASH
msbuild dotnetmf.proj /p:flavor=release /flmsbuild /t:clean<repo folder>\BuildOutput
GCC ARM Embedded
GCC . :
<repo folder>\Solutions\STM32F4DISCOVERY\STM32F4DISCOVERY.settings<NO_BOOTLOADER_COMPRESSION>true</NO_BOOTLOADER_COMPRESSION><PLATFORM_EMULATED_FLOATINGPOINT Condition="'$(COMPILER_TOOL)'=='GCC'">true</PLATFORM_EMULATED_FLOATINGPOINT>“NNNN.a uses VFP register arguments”. 
.
, , “” .
msbuild dotnetmf.proj /p:flavor=release /flmsbuild /t:clean<repo folder>\BuildOutput
, , :
cd /d D:\WORKDIR\NetMf\NetMFRepo\repo, :
setenv_gcc <gcc ver> <gcc folder><gcc ver> — gcc
<gcc folder> — , GCC ARM Embedded
:
setenv_gcc 4.9.3 D:\WORKDIR\NetMf\gcc_4_9_3
(
<repo folder>\Solutions\STM32F4DISCOVERY). :
cd /d D:\WORKDIR\NetMf\NetMFRepo\repo\Solutions\STM32F4DISCOVERY, , :
msbuild dotnetmf.proj /p:flavor=release /fl- msbuild—
- dotnetmf.proj— STM32F4DISCOVERY
- /p:flavor=release— (debug/release/rtm)
- /fl— .
( 
D:\WORKDIR\NetMf\NetMFRepo\repo\Solutions\STM32F4DISCOVERY). , 
/fl .
msbuild /t:help
10 :

:
<repo folder>\BuildOutput\THUMB2FP\GCC4.9\le\FLASH\release\STM32F4DISCOVERY\bin\Tinybooter.hex
<repo folder>\BuildOutput\THUMB2FP\GCC4.9\le\FLASH\release\STM32F4DISCOVERY\bin\tinyclr.hex\ER_CONFIG
<repo folder>\BuildOutput\THUMB2FP\GCC4.9\le\FLASH\release\STM32F4DISCOVERY\bin\tinyclr.hex\ER_FLASH
, 3 :
Tinybooter.hex, ER_CONFIG ER_FLASH.
Tinybooter — bootloader. CLR. 
ER_CONFIG ER_FLASH CLR.
, :
- STM32 ST-LINK Utility — , TinyBooter.
- MicroFraimworkSDK.MSI NetMFVS14.vsix — , — template .Net Micro Fraimwork Visual Studio.
- USB , , MicroFraimworkSDK ( Windows 10 ).
:
- miniUSB :
  
 
 
- STM32 ST-LINK Utility Target->Connect:
  
 
 STM32 ST-LINK Utility :
  
 
 
- Target->Erase Sectors...:
  
 
 Select All Apply:
  
 
 flash :
  
 
 STM32 ST-LINK Utility :
  
 
 
- TinyBooter.hex Target-> Program & Verify...:
  
 
 tinybooter.hex Start:
  
 
 STM32 ST-LINK Utility :
  
 
 
- miniUsb Reset
 
 
- microUSB :
  
 
 STM32 ST-LINK Utility . miniUsb .
 
- Windows 10 , USB :
  
 
- .NET Micro Framework Deployment Tool.
 MicroFrameworkSDK:
 C:\Program Files (x86)\Microsoft .NET Micro Framework\v4.4\Tools\MFDeploy.exe
 
 Serial USB:
  
 
 . TinyBooter Ping.Pinigng… TinyBooter
 
  
 
 
- .NET Micro Framework Deployment Tool 2 ER_CONFIG ER_FLASH. Browse…
  
 
 Deploy:
  
 
 Ping CLR :
  
 
 , .
 
Visual Studio
Visual Studio. blinky , .
Visual Studio :

SDK vsix , template Micro Framework. Console Application:

solution, :

.NET Micro Framework Transport USB. Device:

.
Refrence :
C:\Program Files (x86)\Microsoft .NET Micro Framework\v4.4\Assemblies\le\Microsoft.SPOT.Hardware.dll
program.cs :
using System;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
namespace STM32F4DISC_Test
{
    public class Program
    {
        public static void Main()
        {
            OutputPort ledGreen = new OutputPort((Cpu.Pin)60, false);
            OutputPort ledYellow = new OutputPort((Cpu.Pin)61, false);
            OutputPort ledRed = new OutputPort((Cpu.Pin)62, false);
            OutputPort ledBlue = new OutputPort((Cpu.Pin)63, false);
            while (true)
            {
                ledGreen.Write(true);
                Thread.Sleep(500);
                ledYellow.Write(true);
                Thread.Sleep(500);
                ledRed.Write(true);
                Thread.Sleep(500);
                ledBlue.Write(true);
                Thread.Sleep(500);
                ledGreen.Write(false);
                ledYellow.Write(false);
                ledRed.Write(false);
                ledBlue.Write(false);
                Thread.Sleep(500);
            }
        }
    }
}
:

.
.NET Micro Fraimwork — . , , . , , .
.NET Micro Fraimwork STM32F4Discovery , Tinybooter.hex, ER_CONFIG ER_FLASH. 
.