由于有客户要求使用.NET Micro Framework的方案,最近尝试了STM32的移植。
可用的资料非常少
有个 叶帆的系列做的比较多 博客有不少内容可以参考
移植的步骤我不想再详述,可以参考的资料比较多,这里主要说一下clone项目时出现的error
我用的PK4.2 KEIL4.54
setenv_mdk.bat 4.54 c:\keil\arm 是设置编译器版本的指令
msbuild dotnetmf.proj /t:build /p:flavor=release;memory=flash
编译的是我克隆的STM32Stamp
出错了
E:\MicroFrameworkPK\DeviceCode\PAL\Double\native_double_pal_fastcompile.cpp
"c:\Keil\ARM\RV31\INC\math.h", line 147: Error: #1307: floating point argument not permitted with --fpu=none
unsigned __f = __ARM_fcmp4(__x, __y) >> 28;
^
"c:\Keil\ARM\RV31\INC\math.h", line 147: Error: #1307: floating point argument not permitted with --fpu=none
unsigned __f = __ARM_fcmp4(__x, __y) >> 28;
^
^
E:\MicroFrameworkPK\DeviceCode\PAL\Double\native_double_pal_fastcompile.cpp: 0 warnings, 30 errors
相信很多人都遇到了。
原因很简单 stm32Stamp 并不是官方开发的 SolutionWizard对它的支持有些问题
解决方案:
1.删除意外添加的库
打开 \TinyCLR\TinyCLR.proj 文件
删除 以下内容
<ItemGroup>
<RequiredProjects Include="$(SPOCLIENT)\DeviceCode\PAL\Double\dotNetMF.proj" />
<DriverLibs Include="native_double_pal.$(LIB_EXT)" />
</ItemGroup>
2 更改添加错误的库
将:
<ItemGroup>
<DriverLibs Include="TinyHal.$(LIB_EXT)" />
<RequiredProjects Include="$(SPOCLIENT)\DeviceCode\cores\arm\dotNetMF.proj" />
</ItemGroup>
替换为:
<ItemGroup>
<RequiredProjects Include="$(SPOCLIENT)\DeviceCode\Targets\Native\STM32\DeviceCode\CortexM3\TinyHal\dotNetMF.proj" />
<DriverLibs Include="TinyHal_Cortex.$(LIB_EXT)" />
</ItemGroup>
3.添加需要的库(如果文件中有GlobalLock_hal相关的库,用以下内容替换掉)
<ItemGroup>
<RequiredProjects Include="$(SPOCLIENT)\DeviceCode\Targets\Native\STM32\DeviceCode\CortexM3\GlobalLock\dotNetMF.proj" />
<DriverLibs Include="GlobalLock_hal_Cortex.$(LIB_EXT)" />
</ItemGroup>
然后我就编译通过了~