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

Arm ROM'的地址空间;并找出某些文件的虚拟地址,arm,memory-address,virtual-address-space,flash-memory,address-space,Arm,Memory Address,Virtual Address Space,Flash Memory,Address Space,谢谢你阅读这个问题 我对arm和计算机体系结构非常陌生,如果这是一个基本问题,我很抱歉 我花了大量时间阅读和学习MMU以及虚拟到物理地址的转换。我还没有学到地址空间。只是为了确保所有io外围设备(如以太网和USB)都有自己的地址以及外部RAM和ROM,对吗?所以我想知道地址值,所以我读了这个PDF文档,在这里:,但它非常混乱。我不能清楚地看到它说的确切地址空间的ROM和地址空间,我发现加起来不到128GB,例如在一些arm手机 你能帮我弄明白这一切吗?我完全弄错了吗?我如何找到所有外设、RAM和

谢谢你阅读这个问题

我对arm和计算机体系结构非常陌生,如果这是一个基本问题,我很抱歉

我花了大量时间阅读和学习MMU以及虚拟到物理地址的转换。我还没有学到地址空间。只是为了确保所有io外围设备(如以太网和USB)都有自己的地址以及外部RAM和ROM,对吗?所以我想知道地址值,所以我读了这个PDF文档,在这里:,但它非常混乱。我不能清楚地看到它说的确切地址空间的ROM和地址空间,我发现加起来不到128GB,例如在一些arm手机

你能帮我弄明白这一切吗?我完全弄错了吗?我如何找到所有外设、RAM和ROM的确切地址,以便在代码中为这些地址执行加载和存储功能。还有,如果我要对我的一部旧手机进行编码,你如何找到某些文件和文档的虚拟地址。所以对于eample地址0x00BA FFFF到0x0AFF FFFF是针对某个音频文件的。通过这样的探索,我学到了很多东西

再次感谢


威尔·史密斯(Will Smith)生产处理器内核,而不是芯片。他们有或曾经有一些外围设备,但芯片供应商通常有自己的。重点是,即使它们具有相同的核心,来自不同芯片供应商的芯片也没有相同的内存映射,更不用说外围设备等。我没有阅读您的链接(在问答中放置这样的链接是个坏主意,因为链接内容不受stackoverflow控制,可能会消失,破坏问答)完全正确,但最后的示例内存映射只是一个示例。要获得该芯片或系统的完整物理地址地图,需要芯片和系统供应商文档。不要试图在其他地方重复使用那张地图。信息是可用的,只是需要询问或挖掘它,有时由保密协议保护,你可能或可能无法获得。还要注意的是,内核上可能有多条总线,毫无疑问,系统中的内核外有多条总线,因此存在多个物理地址空间。然后是mmu,从地址空间的角度来看,它只是将物理地址的一些高位转换为虚拟地址,在这种模式下,处理器/代码在虚拟地址上运行。(例如,在linux这样的操作系统上运行的所有应用程序都可以编译为在地址0x8000处运行,mmu允许这样做,以便所有应用程序都认为它们有相同的空间,但它们的物理地址没有冲突)

这并不是解决此类问题的正确论坛。我会在SE网络上提出建议,但这可能也不太正确。看看网络,试着找到一些更适合于记忆原理和架构的东西。另外,我看了PDF,它看起来真的不难理解。给我发电子邮件(spyk3hh@gmail.com)如果你愿意的话,但我可能反应有点慢,我甚至不应该在这里!哈哈。忽略那篇文章,这是ARM有限公司的一些系统架构师认为SoC设计者应该如何布置他们的内存映射的建议,仅此而已。您需要查阅参考手册,了解您正在处理的实际SoC。在最后一点上,请注意,除了NOR闪存之外,您不太可能直接在物理地址空间中看到“文件”-访问存储通常需要与一些外围设备(磁盘/MMC/NAND闪存/等控制器)进行通信这将从其背后的存储介质中继数据。感谢您的回答,这真的很有帮助。现在这更有意义了。这是一个关于这个答案的后续问题,当搜索该供应商的内存映射时,我会找到物理内存映射,然后在代码中使用它不会有问题吗?或者我需要找到虚拟地址才能工作?我以前也没有使用过这个网站,所以我希望我相信你的回答是正确的。我点击了绿色的勾号。再次感谢。是的,勾选绿色勾号表示“答案”。如果有更好的答案,您可以取消选中它并选择另一个。这取决于谁设置了mmu,我假设您希望了解并在理论上进行设置。在任何一种情况下,1)是mmu设置并启用,如果不是,则使用物理地址,mmu被绕过。2) 如果mmu已启用,则根据mmu的设置,虚拟到物理映射为。当然可以设置mmu,使所有或部分地址的虚拟=物理。mmu表中的每个条目都是另一个虚拟地址空间,后面有一个物理地址空间。因此,由您或任何设置mmu的人决定总体映射谢谢您的回答。如果我这样做,我可能会绕过mmu,这样更容易。