设备树中的 RAM 不是连续区域

问题描述 投票:0回答:1

情况是,我需要两个 ram 区域用于 Linux 内核。这些区域不是按顺序排列的。并且区域之间必须是“禁止接触”区域。这是Arm设备。

例如:

reg = <0x24000000 0x7FFFF> /* for region 1 */
/* between = no touch area */
reg = <0x38000000 0xFFFF> /* for region 2 */

无法使用这两个区域之间的区域。

是否可以这样分配区域?

例如,拥有自己的内存节点,拥有自己的地址和寄存器,具有一个内存节点但在寄存器中包括两个区域的情况是: 内核总是尝试从 0x24000000 到 0x3800FFFF 分配内存(显然分配失败并产生内核恐慌)。如果我将子节点直接放入内存节点,它不会分配任何东西。

我也尝试过通过保留内存节点使用虚拟区域,但内核仍然尝试分配“无触摸区域”。

提前致谢。

linux-kernel device-tree
1个回答
0
投票
memory@24000000 {
    reg = <0x24000000 0x7FFFF>;
};
memory@38000000 {
    reg = <0x38000000 0xFFFF>;
};
reserved-memory {
    #address-cells = <1>;
    #size-cells = <1>;
    ranges;
    resrved@24000000 {
        no-map;
        reg = <0x24000000 0x1400FFFF>;
    };
};
© www.soinside.com 2019 - 2024. All rights reserved.