专栏首页智能大石头.Net Micro Framework移植环境准备

.Net Micro Framework移植环境准备

移植准备 .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的编译,请自行修改脚本 Release_Flash_Log.bat    带 日志输出的普通编译脚本,一般来说,普通编译出错(红色错误,忽略黄色警告)后,很难找到错误所在,此时可以用这个脚本,把整个编译过程输出到日志文件 build.log中,然后通过搜索关键字error找到原始出错的位置及详细信息。 Release_Flash_Rebuild.bat    有时候修改了一些MF的文件后可能发现编译没有生效,可通过Rebuild一次来解决,不过很慢很慢。 RTM_Flash.bat    RTM编译脚本。MF带有调试等功能,在最终产品上,是不需要这些功能的,那样可以大大减小固件的大小。超级慢!

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

(另外脚本修改文件头部的参数即可) 第一次编译 第一次编译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编译。

PK编译脚本:http://files.cnblogs.com/nnhy/PK%E7%BC%96%E8%AF%91%E7%8E%AF%E5%A2%83_20120912095640.rar

第一次编译结果:http://files.cnblogs.com/nnhy/public_20120911175956.rar

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • .Net Micro Framework移植基础(包编译通过)

    借斯巴达之际,今天在QQ群1600838直播MF移植环境的准备工作,大家可随时询问移植相关问题! 如果对MF移植之前的东西有疑问,请看论坛置顶帖.Net Mic...

    大石头
  • 如何部署编译NDIS驱动的环境(内部资料)

    0,安装VC6英文版。 1,安装WinXP DDK。要完全安装,不然会比较麻烦。 2,安装DS。最好也完全安装,要不也是很麻烦。 3,DS安装好以后,运行"开始...

    大石头
  • 新生命HTTP反向代理

        去年为一家公司做了一个软件验证系统,所以使用该公司软件的用户都需要购买充值卡,并登录到服务器校验。服务端是IIS+ASP.Net设计的,为了保证服务端的...

    大石头
  • Windows下编译64位CGAL

    CGAL的官网准备了压缩包和安装程序两种类型的的源代码,推荐使用安装程序包,因为其中自带了编译好的gmp和mpfr库。gmp和mpfr是CGAL的依赖库,如果自...

    charlee44
  • Eclipse——编译已有工程出现“ No rule to make target”的解决方案

    【问题】:使用Eclipse打开已有工程后,编译出现如下错误“ No rule to make target”;

    Winter_world
  • 视频流媒体平台EasyNVR是否可以编译树莓派版本?

    我们的流媒体平台支持编译成各种版本,能够满足不同用户的使用需要。为了确保编译后的各个版本没有错误,我们研发时也会进行测试,比如之前我们编译过视频管理平台Easy...

    EasyNVR
  • Windows下PCL1.9.1配置(编译源码)

    PCL1.9.1并没有支持vs2015版本的exe版本,然后需要下载PCL的源码重新自己CMake编译出vs2015版本的

    点云PCL博主
  • 交叉编译学习笔记(一)——交叉编译和交叉工具链

    交叉编译学习笔记(一)——交叉编译和交叉工具链 最近看论文看的烦,又重新拾起之前没有完全完成的交叉编译,准备在网上找资料,好好研究一下。 参考链接: htt...

    剑影啸清寒
  • 1.3 运行C程序的步骤

    通过键盘向计算机输入程序,如发现有错误,要及时改正。最后将此源程序以文件形式存放在自己指定的文件夹内,文件用.c作为后缀。

    闫小林

扫码关注云+社区

领取腾讯云代金券