WINCE大内存支持与永久.docVIP

  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文档。上传文档
查看更多
WINCE大内存支持与永久

WINCE大内存支持与永久 WinCE定制中的大内存支持与永久保存注册表   增加对大容量物理内存的支持和永久存储注册表是在定制内核工作中常遇到的问题。本篇文章将对这两个方面阐述相关的知识并指导读者如何在pb中实现。   对大容量物理内存的支持   在pc上增加物理内存是很方便的,插上内存条后只要自检程序识别,那么桌面操作系统就能够支持。而在基于ce的产品上就没那么简单了。如果物理内存大于64mb,就要在定制内核时做一些工作。   一旦内存管理单元(mmu)开始工作,cpu就不再直接访问物理内存了,对于运行在x86和arm系列cpu上的ce内核来说,必须先确立物理内存地址同虚拟内存地址的映射关系。这种关系实际是在一个名为oemaddresstable的表中定义的。这个表在前面的文章中已经提到过。ce提供了两种虚拟地址映射方法,分别为静态映射和动态映射,这个表属于静态映射方法。静态映射的虚拟地址空间只能由内核访问,而动态映射的地址空间可以由用户模式的应用程序访问。oemaddresstable在文件%_winceroot%\public\common\oak\csp\i486\oal\oeminit.asm中。在这个文件的最后有一段代码: ; ram 0- 0 size 64m dd, 0, dd 0, 0, 0   这段代码表示将虚拟地射到物理地址0,大小为64mb。改成实际的物理内存大小,然后保存。接着单击pb菜单“build”-“open build release directory”,在命令行中先用cd命令进入上述目录,如: cd %_winceroot%\public\common\oak\csp\i486\oal   然后键入下列命令: build -c sysgen i486oal   build命令根据配置文件内容编译整个目录,sysgen批处理将build 编译的文件i486oal.lib文件复制到ce的安装目录和内核工程目录下。我安装的bsp是基于x86的,所以相应目录为%_winceroot%\public\common\oak\lib\x86\retail和%_projectroot%\cesysgen\oak\lib\x86\retail两个目录。上一步做完之后,接着开始修改config.bib文件。在以前的文章中讲过在config.bib文件中定义内存区域。在config.bib中预设的配置没有超过64mb的,所以要自己手工添加。可根据原有的imgram64配置更改,原有的imgram64如下: ; 64 mb of ram (note: autosize will adjust boundary) if imgram64 nk009e0000 ramimage ram 80c00000ram umabuf 83c00000reserved endif   假如要支持128mb,更改如下: if imgram16 ! if imgram32 ! if imgram64 ! nk009e0000 ramimage ram 80c00000ram umabuf 87c00000reserved endif endif endif   在这里没有更改nk的大小,只是修改了ram的大小。   在config.bib定义之后,还可以在oal层通过变量或者函数更改物理内存的大小,适合设备可能出现增加或减小内存的情况。ce的帮助文档介绍了几种方法,这里只提一下createstaticmapping函数。createstaticmapping函数作为config.bib文件的补充,适合在用户模式的应用程序或驱动程序中调用,调用这个函数能够将指定首地址的物理内存块映射到虚拟地址空间,函数返回虚拟地址。虚拟地址范围在c400 0000 到 e000 0000之间,这是内核的地址空间,只能由内核访问。相比较virtualcopy函数用于动态地将指定首地址的物理内存块映射到虚拟地址空间,这个虚拟地址空间一般为用户进程的地址空间,因为virtualcopy函数被设计专用于驱动程序调用,它常被用于将一个物理内存块映射到不同的虚拟地址空间。   实现永久保存注册表数据   关于注册表在前面的文章中已经介绍过了,这里只讲述如何实现永久保存注册表数据。   注册表类型分为基于对象存储的注册表和基于hive的注册表,在定制内核的时候只能选择其中一种。

文档评论(0)

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

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

1亿VIP精品文档

相关文档