应用处理器内存映射

时间:2016-05-20 14:21:31

标签: linux memory linux-kernel embedded-linux memory-mapping

应用程序处理器的内存映射中包含哪些信息?它是否告诉哪个子系统可以访问哪个RAM区域,或者它意味着如果CPU尝试根据存储器映射访问地址,它可以是RAM地址还是设备地址?我指的是这个文件
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0515b/CIHIJJJA.html

这里将0x00_0000_0000到0x00_0800_0000映射到引导区域,这意味着什么?

2 个答案:

答案 0 :(得分:1)

内存映射包含设备内存的布局。 它告诉您的操作系统,操作系统可以在何处放置数据以及如何访问数据,因为某些区域可能只能在特权状态下访问。 您的启动映像将被放置在引导区域中。这定义了您的入口点。

答案 1 :(得分:1)

您链接的内存映射图样式显示了处理器和外围设备如何解码物理内存地址。这是任何片上系统器件的常规图,但精确的布局会有所不同。链接页面实际上列出了SoC的哪些单元使用此存储器映射进行地址解码,它包括ARM和Mali图形处理器。在Linux系统中,大部分信息将传递到设备树中的内核。重要的是要记住,这没有告诉我们操作系统如何选择组织虚拟内存地址。

有趣的地区是:

DRAM - 这些地址将传递给DRAM控制器。无法保证所使用的特定电路板在所有地址空间都具有DRAM。引导固件将设置DRAM控制器并将这些详细信息传递给操作系统。

PCIe - 这些地址将映射到PCIe控制器,最终传输到PCIe链路上。

默认情况下,该芯片上的引导区包含一个片上引导ROM和工作空间。在这个特定的芯片上,由ARM TrustZone安全架构引起的复杂性增加,这意味着启动后加载的应用程序代码可能无法访问该区域。在开发板上,应该可以覆盖此映射并从外部设备启动。