2014-10-31 240 views
0

我正在查看UBOOT中的cmd_mem.c。当它运行内存测试时,它只是要求用户提供地址(或使用默认值),然后开始在该地址读写。那么这是否意味着UBOOT cmds都在物理内存地址上运行?或者它只是意味着它正在测试虚拟地址......?UBOOT中的cmd是否使用物理地址?

在此先感谢

+0

看来你对虚拟地址概念的理解需要工作。虚拟地址可以直接映射到物理地址。你在使用什么平台?在ARM中,它使用MMU。在MMU关闭的情况下,ARM(和u-boot)使用虚拟和物理地址的1:1映射。是的,有没有MMU的ARM处理器,但我最近没有检查,如果当前的u-boot仍然支持这些。在PowerPC中,它有TLB。 – 2014-10-31 23:01:50

+2

我的经验是,uboot通常在MMU禁用或配置的情况下运行,因此对于RAM,虚拟地址总是等于物理地址。因此,如果您访问地址0x100000,则您正在访问0x100000处的物理内存。 – DoxyLover 2014-11-01 05:56:49

+0

这意味着测试通过运气测试正确的物理地址...即使它可能是这种情况...谢谢 – Hanks 2014-11-02 02:10:22

回答

0

U-boot不实现虚拟地址。

因此,您为内存测试指定的范围是物理地址。 在U-boot环境中,您正在处理线性地址。

如果MMU没有像操作系统那样完全配置,它将简单地使用这些地址作为物理地址,u-boot会这样做。

因此,如果您正在测试范围说0x1000-0x2000,它会逐字测试这些物理地址。

相关问题