Запуск .Net Micro Framework 4.4 на STM32F4Discovery


.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, :
  1. GitHub fork. pull- GitHub .
  2. , clone. , :
    git clone github.com/<your GitHub ID>/netmf-interpreter.git
    : . , D:\NETMF\repo, repo — . .
  3. , Upstream. pull pull. Upstream :
    git remote add upstream https://github.com/NETMF/netmf-interpreter.git


: ( — . 2 git) .

, .NET Micro Framework v4.4 Release To Web (RTW) , . , , .
, , :

  1. binary tools zip . , , “” . , .
  2. binary tools zip- . D:\NETMF\repo, repo — , bin tools D:\NETMF.
  3. :
    <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). . .
  4. 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.
  5. .Net Micro Framework Cryptographic Libraries. , . . , , , .

    msi . ( <crypto install folder>), , D:\NETMF\repo D:\NETMF\repo_master.


. MSBuild. sln proj Visual Studio, . Visual Studio .

, , STM3F4Discovery
<repo folder>\Solutions\STM32F4DISCOVERY
hex
<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.targets

5.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 /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\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 /fl

msbuild /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 /fl

msbuild /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.

, :
  1. STM32 ST-LINK Utility — , TinyBooter.
  2. MicroFraimworkSDK.MSI NetMFVS14.vsix — , — template .Net Micro Fraimwork Visual Studio.
  3. USB , , MicroFraimworkSDK ( Windows 10 ).


:

  1. miniUSB :


  2. STM32 ST-LINK Utility Target->Connect:


    STM32 ST-LINK Utility :


  3. Target->Erase Sectors...:


    Select All Apply:


    flash :


    STM32 ST-LINK Utility :


  4. TinyBooter.hex Target-> Program & Verify...:


    tinybooter.hex Start:


    STM32 ST-LINK Utility :


  5. miniUsb Reset

  6. microUSB :


    STM32 ST-LINK Utility . miniUsb .
  7. Windows 10 , USB :

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



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

Source: https://habr.com/ru/post/id387333/


All Articles