ROM的地址空间并找出某些文件的虚拟地址

时间:2016-02-05 14:23:22

标签: arm memory-address virtual-address-space flash-memory address-space

感谢您阅读此问题。

我对手臂和计算机架构一般都很陌生,如果这是一个基本问题,请对不起。

我花了很多时间阅读和了解MMU和虚拟到物理地址的翻译。我还学习了关于地址空间的知识。只是为了确保所有io外设如以太网和USB都有自己的地址以及外部RAM和ROM对吗?所以我想知道具体的地址值,所以我在这里阅读这篇PDF文档:http://infocenter.arm.com/help/topic/com.arm.doc.den0001c/DEN0001C_principles_of_arm_memory_maps.pdf,但它非常令人困惑。我无法清楚地看到它所说的ROM的确切地址空间以及我发现的地址空间在某些手机上并没有达到128GB的空间。

你能帮助我理解这一切吗?我错了吗?我如何找到所有外设,RAM和ROM的确切地址,以便我可以在我的代码中为这些地址执行一些加载和存储功能。另外,如果我要编写一部旧电话,你如何找出某些文件和文件的虚拟地址。因此,对于例如地址0x00BA FFFF到0x0AFF,FFFF用于某个音频文件。虽然以这种方式探索,但我学到了很多东西。

再次感谢,

威尔史密斯

1 个答案:

答案 0 :(得分:1)

ARM制造的处理器内核不会制造芯片。他们已经或者已经拥有了一些外围设备,但芯片供应商通常拥有自己的外设。重点是,即使它们具有相同的核心,来自不同芯片供应商的芯片也不具有相同的存储器映射,更不用说外设等等。我没有读取你的链接(不好把这样的链接放在问题或答案中作为链接内容不受stackoverflow的控制,可以完全消失,破坏问题或答案,但最后的示例内存映射只是一个例子。需要芯片和有时系统供应商文档来获得该芯片或系统的完整物理地址图。不要试图在其他任何地方重复使用该地图。这些信息只需要询问或挖掘,有时会受到您可能获得或可能无法获得的NDA的保护。另请注意,核心上可能有多个总线,毫无疑问,系统核心外部有多个总线,因此有多个物理地址空间。然后你有了mmu,从地址空间的角度来看,只是将物理地址的一些高位转换为虚拟地址,在该模式下,处理器/代码在虚拟地址上运行。 (所有在Linux等操作系统上运行的应用程序都可以编译为在地址0x8000运行,mmu允许这样做,以便所有应用程序都认为它们具有相同的空间但没有任何物理地址发生冲突)