.Net Micro Framework移植环境准备

[来源] 达内    [编辑] 达内   [时间]2012-09-12

.Net Micro Framework移植必须安装PK最新版本,可以从官网(http://netmf.codeplex.com/)下载,建议安装到C:\PK;

移植准备
.Net Micro Framework移植必须安装PK最新版本,可以从官网(http://netmf.codeplex.com/)下载,建议安装到C:\PK;
我们采用MDK编译器,所以也必须安装Keil MDK,建议安装到C:\Keil\ARM;
最好也安装VC++ 2010 Sp1,后面绕开的方法未验证。
建议安装功能强大的文本编辑软件,比如Notepad++。
建议购买固态硬盘,编译速度将可以提升五到十倍,并且后面还有大量的搜索字符串工作,在一万多个零碎文本文件里面找一个变量名或方法名

编译脚本
setenv_base.cmd    增加MDK编译器,不带版本号,代表MDK4.x
setenv_MDK.cmd    MDK编译脚本,如果MDK不是安装在C:\Keil\ARM,请自行修改
tools\Targets\Microsoft.Spot.system.mdk.targets    MDK编译目标,增加MDK不带版本号的编译器,代表MDK4.x
Solutions\你的方案    下的四个脚本,放入到每一块板子的方案目录,它们将是以后常用的编译脚本,执行这些脚本,就会编译当前方案项目,输出在PK并排的MFBin目录下
Release_Flash.bat    最常用的普通编译脚本,Release编译,到Flash去,如果需要Debug或者RAM的编译,请自行修改脚本
R elease_Flash_Log.bat    带 日志输出的普通编译脚本,一般来说,普通编译出错(红色错误,忽略黄色警告)后,很难找到错误所在,此时可以用这个脚本,把整个编译过程输出到日志文件 build.log中,然后通过搜索关键字error找到原始出错的位置及详细信息。
Release_Flash_Rebuild.bat    有时候修改了一些MF的文件后可能发现编译没有生效,可通过Rebuild一次来解决,不过很慢很慢。
RTM_Flash.bat    RTM编译脚本。MF带有调试等功能,在最终产品上,是不需要这些功能的,那样可以大大减小固件的大小。超级慢!

< p style="margin: 5px auto; text-indent: 0px; color: rgb(0, 0, 0); font-family: Verdana, 'Lucida Grande', Arial, Helvetica, sans-serif; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 18px; orphans: 2; text-align: -webkit-auto; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); "> 

< div style="background-color: rgb(245, 245, 245); font-family: 'Courier New'; font-size: 12px; border: 1px solid rgb(204, 204, 204); padding: 5px; overflow: auto; margin: 5px 0px; max-width: 900px; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 18px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; " class="cnblogs_code"> Release_Flash
::
新生命嵌入式团队 ::


QQ群1600838 ::http://www.NewLifeX.com



::@echo off
 :: 设置一些参数

set x_flavor=release 
set x_memory=flash 
set

 x_root=..\..\

:: 先尝试取得当前目录名,作为方案名
 ::
 这里的原理是把当前目录作为参数传给自己,然后从get开始执行

 ::call :get "%cd%.tmp"
 ::goto getNext
 ::

exit ::
:get

 ::set name=%~n1
 :::getNext


for %%i in ("%cd%") do
 set x_name=%%~ni  title 编译MF方案[%x_name%][%x_flavor%][%x_memory%]  
::goto copybin

 pushd %x_root% call
 setenv_MDK.cmd popd  
call

 msbuild /t:build /p:flavor
=%x_flavor%;memory=%x_memory% ::
 > build.log



echo 编译完成  
:copybin

:: 把生成的文件复制出来
set x_buildout=%x_root%BuildOutput\THUMB2\MDK\le\%x_memory%\%x_flavor%\%x_name%\bin 
if not
 exist %x_buildout% set
 x_buildout=%x_root%BuildOutput\THUMB2FP\MDK\le\%x_memory%\%x_flavor%\%x_name%\bin set
 x_bindir=%x_root%..\MFBin\

%x_name%  if not
 exist %x_bindir% md
 %x_bindir% 

:: 复制TinyBooter.bin

copy %x_buildout%\*.bin %x_bindir%\ /y 
copy %x_buildout%\*.axf %x_bindir%\ /y  
del %x_buildout%\*.bin /f/q 
del

 %x_buildout%\*.axf /f/q  ::
 复制ER_FLASH和ER_CONFIG

set x_buildout=%x_buildout%\tinyclr.bin 
copy %x_buildout%\*.* %x_bindir%\ /y 
copy %x_bindir%\ER_FLASH %x_bindir%\TinyCLR.bin /y  
del

 %x_bindir%\ER_FLASH /f/q  echo
 输出已复制到 %x_bindir%\

pause
< p style="margin: 5px auto; text-indent: 0px; color: rgb(0, 0, 0); font-family: Verdana, 'Lucida Grande', Arial, Helvetica, sans-serif; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 18px; orphans: 2; text-align: -webkit-auto; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); "> 

< p style="margin: 5px auto; text-indent: 0px; color: rgb(0, 0, 0); font-family: Verdana, 'Lucida Grande', Arial, Helvetica, sans-serif; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 18px; orphans: 2; text-align: -webkit-auto; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">(另外脚本修改文件头部的参数即可)

< p style="margin: 5px auto; text-indent: 0px; color: rgb(0, 0, 0); font-family: Verdana, 'Lucida Grande', Arial, Helvetica, sans-serif; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 18px; orphans: 2; text-align: -webkit-auto; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">
第一次编译
第一次编译PK,需要很久很久,传统硬盘大概要半个多小时,固态硬盘也要七八分钟,因为需要编译一些MF工具,而这些工具将用在后面的每一次编译生成过程中。
理论上,第一次编译需要调用VC++ 2010,因为那些工具都是Windows平台C++代码,我们没有具体验证。
VC++ 2010没有安装好或者没有打SP1补丁都有可能造成编译失败。
有时候即使出错,再编译一次错误会变少;最后即使第一次编译还有错误,也没关系,可能方案项目的编译已经能够通过了。
考虑到很多同学可能并没有安装VC++ 2010,我们打包了第一次编译的结果,理论上来讲,释放到PK目录的输出目录BuildOutput下,应该能绕过VC++编译这一次。

常规编译
Release_Flash.bat编译,传统硬盘需要三五分钟,固态硬盘大概需要二十多秒;如果修改了一些较为核心的地方,编译时间会更长一些。
如果出错,可以尝试再次编译,大概5%的错误在第二次编译时消失。
如果还错,采用Release_Flash_Log.bat编译,等执行完后,在日志文件build.log中搜索error关键字,这里才是原始出错的地方。
如果无法解决错误,觉得可能不是自己的问题,可以试试Release_Flash_Rebuild.bat编译。

< p style="margin: 5px auto; text-indent: 0px; color: rgb(0, 0, 0); font-family: Verdana, 'Lucida Grande', Arial, Helvetica, sans-serif; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 18px; orphans: 2; text-align: -webkit-auto; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); "> 

< p style="margin: 5px auto; text-indent: 0px; color: rgb(0, 0, 0); font-family: Verdana, 'Lucida Grande', Arial, Helvetica, sans-serif; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 18px; orphans: 2; text-align: -webkit-auto; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">PK编译脚本: http://files.cnblogs.com/nnhy/PK%E7%BC%96%E8%AF%91%E7%8E%AF%E5%A2%83_20120912095640.rar

< p style="margin: 5px auto; text-indent: 0px; color: rgb(0, 0, 0); font-family: Verdana, 'Lucida Grande', Arial, Helvetica, sans-serif; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 18px; orphans: 2; text-align: -webkit-auto; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">第一次编译结果: http://files.cnblogs.com/nnhy/public_20120911175956.rar

资源下载