chang_nicolas
驱动小牛
驱动小牛
  • 注册日期2004-08-26
  • 最后登录2007-03-29
  • 粉丝0
  • 关注0
  • 积分370分
  • 威望39点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
阅读:1524回复:8

Physical address ---> Virtual address ??

楼主#
更多 发布于:2004-12-27 13:52
请问:
1。每个硬件的物理地址如 FlashRom,SDRAM等,它们的物理地址不会有重叠的部分吗?
2。另外MMU把它们映射成虚拟地址时(在那个文件里有详细的映射表啊?),对于WinCE来说用的只是虚拟地址,那WinCE的启始地址应该是在虚拟的4G空间的哪个位置(这个位置的确定是由哪个配置文件完成的)?
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-12-27 14:59
1。每个硬件的物理地址如 FlashRom,SDRAM等,它们的物理地址不会有重叠的部分吗?

在同一个编址空间中,每个设备的物理地址空间是分离的。在不同的编址空间中,可以重复,比如x86的memory和i/o是分离编址的,就可以有相同的部分,而pci总线空间和cpu的寻址空间也是分离的,也可以重复...

2。另外MMU把它们映射成虚拟地址时(在那个文件里有详细的映射表啊?),对于WinCE来说用的只是虚拟地址,那WinCE的启始地址应该是在虚拟的4G空间的哪个位置(这个位置的确定是由哪个配置文件完成的)?

映射表名字是OEMAddressTable,在bsp的目录里面,你找找。
os image的起始位置用source里面的exebase=0x12345678来指定,你可以调整,但这个地址和刚才的映射表必须配合从而使os image被放到适当的物理存储器里面
根据地的兄弟们,团结就是力量
joyfly
驱动小牛
驱动小牛
  • 注册日期2002-07-02
  • 最后登录2009-09-17
  • 粉丝0
  • 关注0
  • 积分319分
  • 威望32点
  • 贡献值0点
  • 好评度31点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-12-27 17:14
1.直接挂到系统总线上的设备从整个系统范围上看,是不会有重叠的.
2.映射表在OEMAddressTable里,一般在BSP\KERNEL\HAL\ARM下面,可以去BSP里搜索一下;
WINCE的启动地址应该是在0x80000000~0x9fffffff之间.因为这段空间512MBytes的空间就是留给OEM使用的系统空间,硬件资源的地址都在这段虚拟空间上,0xa0000000~0xbfffffff是这段空间的一个映射(cache & buffering disabled)
无论你的WINCE IMAGE是放在NOR FLASH上直接启动,还是拷贝到SDRAM上运行,都是在0x80000000~0x9fffffff这段空间里(可以从OEMAddressTable的VirtAddr得到证实).
但是KERNEL(也就是NK.EXE)的地址是在0xc2000000, 也就是说,在NK.BIN被解析的时候,NK.EXE会被拷贝到0xC2000000的地址上,然后PC会跳到0xC2001000上运行.
0xc2000000以上的空间都是kernel Space, KERNEL的堆\栈都在这上面.

www.cnemb.com
chang_nicolas
驱动小牛
驱动小牛
  • 注册日期2004-08-26
  • 最后登录2007-03-29
  • 粉丝0
  • 关注0
  • 积分370分
  • 威望39点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-12-27 19:10
我现在还有个迷惑,就是如果把WinCE拷到SDRAM上是把image全都拷过去的吗?
joyfly
驱动小牛
驱动小牛
  • 注册日期2002-07-02
  • 最后登录2009-09-17
  • 粉丝0
  • 关注0
  • 积分319分
  • 威望32点
  • 贡献值0点
  • 好评度31点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-12-27 19:41
nk.exe所在的BIN文件.
www.cnemb.com
chang_nicolas
驱动小牛
驱动小牛
  • 注册日期2004-08-26
  • 最后登录2007-03-29
  • 粉丝0
  • 关注0
  • 积分370分
  • 威望39点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-12-27 19:47
Nk.exe程序是什么时候拷到0xC2000000-0xC3FFFFFF中的?
我们是从Flash上跳到SDRAM中的WinCE image所在启始位置开始运行WinCE系统的,NK是这以后拷过去的,还是在Flash上时就拷过去了啊?
joyfly
驱动小牛
驱动小牛
  • 注册日期2002-07-02
  • 最后登录2009-09-17
  • 粉丝0
  • 关注0
  • 积分319分
  • 威望32点
  • 贡献值0点
  • 好评度31点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-12-27 20:11
运行之后
可以理解为NK.EXE所在的SLOT,在0xC2000000.
www.cnemb.com
chang_nicolas
驱动小牛
驱动小牛
  • 注册日期2004-08-26
  • 最后登录2007-03-29
  • 粉丝0
  • 关注0
  • 积分370分
  • 威望39点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-12-28 09:25
谢谢joyfly和wxl_50685330兄弟!
your_ying
驱动牛犊
驱动牛犊
  • 注册日期2002-05-13
  • 最后登录2009-04-03
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望5点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-01-19 19:08
请问各位大侠,在wince下如何将虚拟地址装换成物理地址,如win2k或winxp下的MmGetPhysicalAddrss()。
谢谢。
我需要帮助,我也会帮助别人
游客

返回顶部