我试图了解 ARM 上的启动过程和内存管理,并且有与内存映射地址和 RAM 地址相关的问题。
每个 Soc 都会有一个内存映射,大小取决于寻址能力,例如:32 位处理器的寻址能力为 2^32 或 4GB。内存映射将包含映射的不同外设的地址和向量表等,例如:地址 0x00000000 是复位向量,地址 0x70000000 是 UART 寄存器,依此类推。
同样,DDR 控制器也将具有内存映射地址来控制 RAM。
假设RAM的大小为4GB,如何在不影响内存映射(或UART寄存器)的情况下访问RAM的地址0x70000000?
如果我的理解有误,请纠正。
简单的答案是:它无法访问。内存映射外设在相同地址上优先于 RAM。
最著名的例子实际上是 Win32,其中视频卡是内存映射的,并且通常会将可用 RAM 减少到 3.5GB。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)