当前位置:首页 > 嵌入式 > 嵌入式软件
[导读] 在WinCE系统中,当我们完成了相关的开发和系统定制工作以后,会编译WinCE系统,最后生成NK.bin和NK.nb0。我现在用WinCE6.0在自己的PC上面编译一次用时19分16秒(有一天无聊

 在WinCE系统中,当我们完成了相关的开发和系统定制工作以后,会编译WinCE系统,最后生成NK.bin和NK.nb0。我现在用WinCE6.0在自己的PC上面编译一次用时19分16秒(有一天无聊,就测了一下)。下面介绍一下WinCE系统的编译过程,大致分为4个阶段:编译阶段(Compile phase),系统产生阶段(Sysgen phase),文件拷贝阶段(Release copy phase)和生成映像阶段(Make Run-time image phase)。

过程如图:

从图中可以看出,整个编译都是通过调用Blddemo.bat来实现的,实际上也是这样,编译WinCE就是用Blddemo.bat,只不过后面可以跟不同的参数。编译阶段和系统产生阶段由Cebuild.bat完成,文件拷贝阶段由Buildrel.bat完成,最后的生成映像阶段由Makeimg.exe完成。下面介绍一下各个阶段。

1. 编译阶段(Compile phase)

这个过程指对WinCE路径下的Private和Public目录进行编译,将里面的源代码编译成库文件等,这个过程可能会花费几个小时。除非改动了Private或Public目录下的源码,否则是不需要编译的。一般我们编译自己的工程的时候,不需要这个步骤。

2. 系统产生阶段(Sysgen phase)

在这个过程中,系统会根据你在PB中Catalog中的选项,删除和设置相应的SYSGEN环境变量,链接相应的静态库,过滤头文件,为SDK创建所需的导入库,同时还会为WinCE系统创建一些配置文件。最后会编译当前的BSP和应用程序。

3. 文件拷贝阶段(Release Copy phase)

拷贝所有所需的文件到工程的release目录下面,主要是前面系统产生阶段所产生的所有文件。

4. 生成映像阶段(Make run-time image phase)

该过程首先调用cenlscmp.exe根据国际语系与地区设定生成wince.nls文件。然后调用Fmerge.exe合并一些配置文件,合并所有bib文件为ce.bib,合并所有的reg文件为Reginit.ini,合并所有的dat文件为Initobj.dat,合并所有的db文件为Initdb.ini。之后调用Regcomp.exe压缩reginit.ini为default.fdf。根据LOCAL环境变量的设置调用Res2exe.exe更新所有的dll,exe和cpl文件中的资源文件,主要是更新其中的语言部分。再调用Txt2ucde.exe转换所有ASCII码字符串为UNICODE。最后调用Romimage.exe合并所有文件为NK.bin。

在整个编译过程中有时会遇到编译错误,这个可以通过察看Build.log,Build.err和Build.wrn文件来分析问题,这三个文件应该是位于”WINCE600”目录下面。编译错误可能在不同的编译阶段产生,我们也可以根据这一点来分析问题。

一般在系统产生阶段(Sysgen phase)出现错误很可能是由于丢失组件或文件造成的,这时候Build.log会提供更多信息帮助分析问题。在这个阶段产生错误,很可能是由于在当前工程中添加或者删除WinCE组件造成的,其中有些组件的更改是需要进行”clean sysgen”的,而不能只使用”sysgen”命令。所以我的建议是每次添加或删除组件都做”clean sysgen”。

如上面介绍系统产生阶段(Sysgen phase)也会编译BSP和部分应用。所以如果错误出现在系统产生阶段的编译过程中,一般一种可能就是你的代码有语法错误,当然这种错误很好查。还有一种可能出现的错误是连接错误,有可能是丢失了lib库文件或者链接错了库文件,也有可能是调用了错误的API函数,还有就是设置了错误的环境变量,这些查起来相对困难一点。

如果错误产生在文件拷贝阶段(Release copy phase),一种常见的问题就是和硬盘驱动器有关,检查一下release目录所在磁盘的磁盘空间。

如果问题出现在生成映像阶段(Make run-time image phase),根据编译的输出窗口的输出信息判断问题出在哪个子阶段。一种可能是你的bib文件或者reg文件中存在语法错误导致合并文件时出错,还有就是注意你的image的大小是否超过了config.bib文件中的设定,还有就是可能丢失了某个或者某些文件,这些丢失的文件很可能是由于在前面的编译过程中出现错误导致的。

当然,也有时候会遇到一些奇怪的问题,这些问题可能是由于没有正确的安装WinCE造成的,比如在安装WinCE的时候,路径中不要有中文或者空格或者其他比较奇怪的字符。补丁要按照顺序来打,要不也可能会出现问题。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

曼谷2023年9月18日 /美通社/ -- 作为东南亚的旅游胜地,泰国一直在全球范围内吸引着无数游客的目光。泰国旅游和体育部近日公布的报告显示,今年前7个月,泰国旅游业总收入约为1.08万亿泰铢(约合人民币2233亿元)...

关键字: BSP GEN 国美 AN

麦格纳的Gen5系统采用了可扩展的一体式前置摄像头模块,具备远距离感知和侧面检测功能 未来几年将大量应用于跨地区的各种平台和车型 预计将于2023年9月下旬投产 德国赛劳夫2023年9月5日 /美通社...

关键字: 汽车制造 摄像头模块 COM GEN

台北, June 28, 2023 (GLOBE NEWSWIRE) -- 专业存储和内存解决方案的全球领导者ATP推出其最新的高速N601系列M.2 2280和U.2固态硬盘(SSD),具有第四代PCIe®接口并支持N...

关键字: GEN PCIE SSD 固态硬盘

北京2023年8月22日 /美通社/ -- 安顾于8月22日宣布,其在华合资公司德华安顾人寿保险有限公司(以下简称"德华安顾人寿")股权变更申请获国家金融监督管理总局山东监管局正式批准。德国安顾集团是...

关键字: 数字化 BSP GEN HMI

曼谷2023年8月17日 /美通社/ -- 泰国,这个闻名全球的旅游胜地,在新冠疫情前后仍然坚固地占据着人们的旅行愿望清单之首。在8月7日,泰国外交部更是简化了泰国电子申请系统上的旅游签证材料,泰国电子旅游签材...

关键字: GEN BSP AN 电子

北京2023年8月16日 /美通社/ -- 百奥赛图(北京)医药科技股份有限公司("百奥赛图",股票代码02315.HK)宣布"千鼠万抗TM"按计划实现重要里程碑进展,抗体业务板块...

关键字: ICE COM GEN 代码

Snowflake与亚马逊云科技通过促进销售合作、行业解决方案协同及联合市场推广战略,进一步扩大了卓有成效的合作伙伴关系 包括高盛集团等财富500强企业在内的6000多家联合客户[1]在使用Snowflake和...

关键字: 亚马逊 集成 GEN 机器学习

伦敦2023年2月8日 /美通社/ -- 拥有SIM、eSIM和iSIM技术解决方案的全球物联网安全领导者 Kigen,以及专注于连接任何地方的卫星网络或非地面网络(NTN)运营商 Skylo,共同为设备制造商...

关键字: GEN 物联网 5G 卫星

KeilμVision4是Keil软件公司为8051系列微控制器及其兼容产品设计的集成式软件开发环境。μVision4集成了C51编译器和A51汇编器,其界面类似于Microsoft VS,支持C语言和汇编语言程序的编写...

关键字: 程序 编译 链接

悉尼科技大学的最新宣传片激励终身学习者抓住第五次工业革命所带来的机遇,创建一个更加以人为本、更可持续且更具弹性的世界。 悉尼2023年1月11日 /美通社/ -- 名为"当创意遇见科技"的...

关键字: BSP MIDDOT OS GEN
关闭
关闭