如何检查嵌入式Linux系统中的内存是否实际被操作系统使用?

如何检查嵌入式Linux系统中的内存是否实际被操作系统使用?

这个问题需要进一步澄清。

背景:我正在开发一个嵌入式系统(Xilinx zynq ultrascale+),它由 ARM 处理器 + FPGA 组成。内存映射(如果我将系统用作裸机)如下:

附加到 ARM(根据数据表):

Segment name | Start addresss     | Size
HP0_DDR_HIGH | 0x0_0008_0000_0000 | 32G 
HP0_DDR_LOW  | 0x0_0000_0000_0000 | 2G  
HP0_LPS_OCM  | 0x0_0000_FF00_0000 | 16M 
HP0_QSPI     | 0x0_0000_C000_0000 | 512M    

然后我有一些外部 RAM (4GB),我可以通过 FPGA 中的 DDR 控制器访问它们。这段记忆就在这里

Segment name          | Start addresss     | Size
C0_DDR4_ADDRESS_BLOCK | 0x0_0005_0000_0000 | 4G 

当我构建 Linux 时,我使用 Xilinx Petalinux 工具链,它是 Yocto 的伪装。系统启动后,我可以0x5_0000_0000使用该物理地址、通过命令devmem或通过从用户空间映射物理地址来访问外部 DDR。

我认为linux通过在启动时解析设备树来发现这个额外的DDR。

更多细节:查看数据表(https://www.xilinx.com/support/documentation/user_guides/ug1085-zynq-ultrascale-trm.pdf

ARM -> 外部 DDR 路径

该地址似乎没有进入任何 MMU 转换单元。

问题):

  1. 如何检查 linux 是否使用外部 ddr 作为其可能的内存池的一部分?我知道操作系统会跟踪内存中的所有页面,那么该内存会被分页吗?
  2. 操作系统是否能够使用该内存来创建和管理进程地址空间?
  3. 假设我将此物理地址映射到进程中的用户虚拟地址空间,内核是否会创建新的页面条目?

相关内容