ce内存映射的点点滴滴.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文档。上传文档
查看更多
ce内存映射的点点滴滴 OEMAddressTable里定义的映射关系是给ARM MMU用的,是在KernelStart (source code参考wince420private目录)时建立的,只要WINCE还在跑,就不会解除. OEMAddressTable里的Virtual Addr和Physical Addr是对ARM来说的. 其实对于WINCE, 只能访问它的Virtual address. 也就是说, OEMAddressTable里的Virtual address对WINCE 系统来说才是Physical Address. 经过OEMAddressTable映射后的系统的物理地址,在0x 8000 0000~0x 9FFF FFFF之间.是caching and buffering的地址,这个地址加上0x 2000 0000,就是它的cache buffering disabled地址.所有硬件寄存器的地址都在这个地址段上,受MMU保护. 上面讲的系统的物理地址,从0x 8000 0000~0x BFFF FFFF, 在Kernel Mode下都可以直接访问. ISR是在KERNEL里,也就可以直接访问这些系统的物理地址.无所谓因为ISR只能访问静态映射的虚拟地址. 对于ARM来说,有虚拟地址和物理地址之分,对于WINCE来说,也有虚拟地址和物理地址之分. 可以这么说, ARM的虚拟地址就是WINCE系统的物理地址. 32位的OS总共有4G的虚拟地址空间,WINCE也不例外. 其中, 0x 0000 0000~0x 8000 0000是Application Space; 0x8000 0000~0x FFFF FFFF是System Reserved. 系统的物理地址就在System Reserved的这段,只能用KERNEL MODE访问. 那么,当APPLICATION和DRIVER(都是运行在USER MODE)要访问这些在System Reserved地址段的硬件寄存器或MEMORY怎么办呢?只好再建立一层映射关系,在Application Space里分配一段空间,把它映射到System Reserved里的地址上,这就是VirtualAlloc/VirtualCopy和MmMapIoSpace干的事情. 如果地址的声明是这样: #define RTC_COUNTER *((volatile unsigned *)0 那么直接读写就可以了: int nRtc = RTC_COUNTER; RTC_COUNTER = nRtc; 否则,可以用: int nRtc = READ_REGISTER_ULONG(0; WRITE_REGISTER_ULONG(0 nRtc); 其实这两种方式的本质是一样的,都是把地址声明成某个数据类型,然后就可以直接读写了.下面是READ_REGISTER_ULONG()和WRITE_REGISTER_ULONG()的定义: #define READ_REGISTER_ULONG(reg) (*(volatile unsigned long * const)(reg)) #define WRITE_REGISTER_ULONG(reg, val) (*(volatile unsigned long * const)(reg)) = (val) ?

文档评论(0)

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

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

版权声明书
用户编号:7060131150000004

1亿VIP精品文档

相关文档