你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

Microsoft .NET Micro Framework移植开发笔记之移植初步

[复制链接]
蓝凌风 发布时间:2015-2-3 21:09
Microsoft .NET Micro Framework移植开发笔记之移植初步
Microsoft .NET Micro Framework(简称MF)是Microsoft .net家族当中最轻量的一个,它是一个完整的嵌入式系统可以运行在ARM7、ARM9、甚至Cortex-M系等这些低成本的ARM芯片上,用来托管C#、VB.NET的代码。简单的说MF就是一个嵌入式系统,然后你可以通过Microsoft Visual Studio来写C#或VB.NET的代码让它来运行,使得开发单片机软件就像开发Windows软件一样快捷方便。也正因为MF从4.0开始,Microsoft已经把它完全的开源了,而且可以移植到STM32芯片上,越来越多的C#程序员和嵌入式工程师对它感兴趣。具体MF的简介请参照百度百科。
自从接触MF以有半年之多,对MF的了解有一定的了解。目前在MF走的最前面两个前辈,一是叶帆,原来是Microsoft的MF项目组的成员,后成立叶帆科技,算是国内研究MF的开门鼻祖,网上关于MF的相关的资料基本上就是他的博文,我在刚开始研究移植的时候,就靠看他的博文来入门的;二是大石头和他的新生命团队,C#程序大神,通过MF走向嵌入式的开发,一直致力把MF运用在工控领域,他编写的编译脚本和编译环境使得很多研究MF的人带来极大的便利,我也是正因为在网上认识他而接触MF而走向研究MF的道路。
MF移植最大程度一直是在编译环境的建立,这是移植的第一次,也是对初学者来说最难的一步。100个想折腾MF的人,99个人都死在了这里一步,从而放弃了。因为MF移植这方面的资料在网上基本上都没有多少,更没有什么系统的移植教程,导致很多人遇到很多的问题都找不到解决的答案。我当初折腾近一个月的时间才把编译环境搞定,才开始进入移植的大门。这里我根据自身的经验和跟一些同道中人遇到的问题,来写这一篇的移植教程,希望能帮助想研究的MF移植的人能顺利的跨过这一步,也希望能够吸引更多的人来研究MF。
这里以.NET MF 4.3 RTM (QFE1)移植到STM32F103为基本来开始移植,也是因为这个组合,使得MF的应用起来越广。前面说的MF是完全开源的,我们可以用网上下载到它的源码,地址为http://netmf.codeplex.com/releases/view/118283
这里我们需要下载SDK4.3(MF对应VS的开发包)和Porting Kit 4.3(RTM QFE1)(MF的源代码包)。下载得到这两个文件,分别解压安装。然后还需要Microsoft Visual Studio 2012(注意MF4.3.1一定是要VS2012),这软件大家都熟悉,自行百度下载安装就可以,注意要**就可以了(这些软件及后面编译环境需要的文件,我也会用网盘共享出来)。最后面需要的就是Keil MDK了,玩STM32 的自然是再熟悉不过了,理论上是任何版本都可以的,这里以MDK5.11为例。这些软件都已经安装准备好后,就可以开始建立移植环境了。
打开E盘(也有可能是其它盘),就可以看到这个文件夹,这个就是MF4.3的源代码包,我们所有的移植都是在这里修改编译的。进入这个文件夹,找到这个文件,点左键->编辑(我这里用的是notepad++来编辑),然后把里面的代码全删掉,改成为
@echo off
setenv_base.cmd MDK PORT %* C:\Keil_v5\ARM
注意C:\Keil_v5为你的Keil的安装路径
然后保存退出。然后再打开E:\MicroFrameworkPK_v4_3\tools\Targets,找到这个文件,同样右建->编辑,
在相应位置加上红框内的代码。然后是
将红框内的RV31改成ARMCC然后保存退出。
接下来就是请出来大石头的编译脚本,让我们可以免去在CMD中敲指令,直接双击就可以进行编译。把这两个脚本文件复制到E:\MicroFrameworkPK_v4_3\Solutions\STM32Stamp文件夹中,这里STM32Stamp就是官方提供的STM32F1系列的移植的基本代码,后面所有基于STM32F1的移植都是从这里开始的,但注意的是MF的要求Flash最小是256K,只有Flash大于256K的STM32F1的芯片才能运行MF,目前我都是基于STM32F103ZET来移植的,最小的试过STM32F103RD也刚好满足要求。Debug编译跟release编译差别后面再讨论,这里我们双击release编译.bat开发编译,如下图
第一次编译大概要十多分钟,具体时间因电脑配置而异。满怀期待的等待编译结果,等来的却是去编译出错
编译出错,就需要我们就修改错误,直到编译成功。MF编译最大的难点就在于没有IDE提示那里有错误,导致绝大部分的人只看到编译过程有一路飘红,却不知道怎么去定位错误,然后去修改错误。大石头的编译脚本还有个便利的地方就是会自动输出编译报告,我们可以通过编译报告来查找定位错误。找到STM32stamp文件夹下的文件,用记事本或者Notepad++来打开它。这里用Ctrl+F的查找功能,查找error这个关键词来找到错误提示
可以找到报告最后面一个error
这里并没有指出错误的在哪里,只是说编译某个文件有错误,很多人在钻在这里,怎么也看不出什么错误,其实我们都可以忽略这个,而真正错误的提示还在前面,我们可以根据MSB3073这个错误代码来查到前面的具体的错误报告。
可以到相同的错误代码,也可以看到前一句提示的6 errors,这两句前面的提示才是真正错误的提示,继续往前翻报告就看到非常熟悉的报告,没错这正是MDK的错误报告的风格。
再看所有的error都是floating-point variable错误,浮点不支持,因为STM32F1系列(M3)的芯片是不支持浮点的,所以编译出错了。这里我们要把浮点编译关掉,编辑STM32stamp文件夹下的文件,然后
把红框的true改成false,把1改成0,保存退出。再次双击release编译.bat开始编译,第一次编译就快多了,很快看到编译完成,这次编译就可以成功了,然后把编译后的文件复制到根目录下面的MFbin文件夹里。
我们打开E:\MFBin\STM32Stamp目录就可以看到固件文件。
下一步当然就是烧写固件到STM32 的板子上,玩STM32的人都知道怎么烧写,我这里喜欢用J-Flash来烧写bin文件到开发板,也可以用ISP下载。固件下载完成后,连接上STM32板子上UART1,打开串口调试助手,把波特率设置成115200,复位下STM32的板子就可以看到MF的开机信息了。
至此,MF已经运行起来了,完成了MF的基本的移植,后面移植就是根据我们的需求,在这个基础上不断的增加完善我们的固件。如果你可以完成到这一步,那恭喜你开始进入MF移植的大门。如果编译有问题或者是想更多的了解MF,可以加QQ群170024940随时提问。

相关的资料和软件:
1、 MF4.3的源码和SDK及编译环境脚本:https://pan.baidu.com/s/1sj4X7hN
2、 Microsoft Visual Studio 2012:https://pan.baidu.com/s/10czr4
4、 大石头的论坛:http://www.newlifex.com/
收藏 1 评论6 发布时间:2015-2-3 21:09

举报

6个回答
zfz0122 回答时间:2015-2-3 21:24:25
大石头的群管理员来了啊、、、
wm20031015 回答时间:2015-2-3 22:25:46
微软手越伸越长了
625058882 回答时间:2015-2-3 23:16:34
学习一下了
liudashuang 回答时间:2015-2-4 08:57:10
不错。
xuysh1501 回答时间:2015-5-28 13:10:01
大牛!不错!
cdt2000 回答时间:2018-3-16 13:06:12
Mark

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版