认识Windows CE操作系统镜像文件的格式.docVIP

认识Windows CE操作系统镜像文件的格式.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
认识Windows CE操作系统镜像文件的格式

认识Windows CE操作系统 镜像文件的格式 被BootloaderMain调用的DownloadImage函数负责从开发计算机处下载操作系统镜像到嵌入式目标设备,它是一个BLCOMMON库函数,不是OEM函数,其实现源代码在%_WINCEROOT%\PLATFORM\COMMON\SRC\COMMON\ BOOT\BLCOMMON\blcommon.c源文件中。尽管这个函数的源代码由微软提供,但是用户需要实现几个OEM函数供它调用,以从以太网端口(或者其他外设端口)读取操作系统镜像数据。下面介绍一下这个不需OEM用户开发实现的DownloadImage函数的源代码,目的是从中获取Windows CE操作系统,也包括BootLoader自身所使用的镜像文件的格式信息,这些信息对于用户的开发和调试工作会有所帮助。 由Windows CE的开发工具Platform Builder编译生成的Windows CE操作系统及BootLoader的镜像文件主要有两种格式类型——以.bin为文件名后缀的记录型镜像文件和以.nb0为后缀的原始型(raw)镜像文件,前者以记录(Record)为单位组织镜像的数据,后者则是镜像在嵌入式系统中运行时的二进制数据的快照。 DownloadImage函数执行的第一步是调用GetImageType函数获知镜像文件的格式类型。GetImageType也是BLCOMMON库函数,与DownloadImage函数在同一源文件中实现。GetImageType函数查询镜像文件格式类型的原理十分简单:每一个Windows CE镜像文件在文件数据的起始位置都有一个7字节的特征码(magic number),它与镜像文件的格式一一对应如下: N000FF\x0A——BL_IMAGE_TYPE_MANIFEST X000FF\x0A——BL_IMAGE_TYPE_MULTIXIP B000FF\x0A——BL_IMAGE_TYPE_BIN S000FF\x0A——BL_IMAGE_TYPE_SIGNED_BIN R000FF\x0A——BL_IMAGE_TYPE_SIGNED_NB0 无特征码——BL_IMAGE_TYPE_UNKNOWN 以上的前4种类型都是记录型镜像格式,只有BL_IMAGE_TYPE_SIGNED_NB0代表原始型镜像文件格式,此外DownloadImage函数把无特征码的BL_IMAGE_TYPE_UNKNOWN类型也当作原始型镜像来处理。BL_IMAGE_TYPE_MULTIXIP类型在Windows CE 5.0和5.0以前的版本中用于表示多区段的镜像文件,在Windows CE 6.0版本中使用BL_IMAGE_ TYPE_MANIFEST类型处理多区段的操作系统镜像,不再支持BL_IMAGE_TYPE_MULTIXIP类型,仅为了在源代码中保持向下兼容而保留该类型的定义。 BL_IMAGE_TYPE_MANIFEST类型的镜像文件的数据是多区段的记录型镜像文件的区段(Region)信息。多区段的镜像,简单地说,就是操作系统或者BootLoader的运行时二进制数据分散在不连续的物理存储区间。Manifest的字面含义是“载货单”,该类型的镜像文件并不是真正的Windows CE操作系统的或者BootLoader的二进制运行时数据,只是供下载多区段型镜像所使用的头信息。由于镜像数据的性质特殊,BL_IMAGE_ TYPE_MANIFEST类型的镜像文件——也称作Manifest数据——与一般的镜像文件数据的存放位置不同,它使用专门的DownloadManifest型全局变量g_DownloadManifest来存放。DownloadManifest结构体类型在头文件%_WINCEROOT%\PUBLIC\COMMON\OAK\INC\ blcommon.h中定义如下: typedef struct _MultiBINInfo_ { DWORD dwNumRegions; // Number of files to be downloaded. RegionInfo Region[BL_MAX_BIN_REGIONS]; } MultiBINInfo, *PMultiBINInfo; typedef MultiBINInfo DownloadManifest; 多区段意味着多文件,即一个操作系统或者BootLoader的二进制运行时数据存放在多个镜像文件中,这多个镜像文件的数据对应于可以连续也可以不连续的多个物理存储区域。DownloadManifest结构体的成员dwNumRegions就是多区段镜像的区段个数,也即是后续多

文档评论(0)

yanpan1 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档