QEMU 内存分配低于 0x40000000

QEMU Memory allocation below 0x40000000

我正在尝试 link 我的项目用于自定义嵌入式系统,其中有一个 RAM 芯片 安装在地址 0x20000000。

我更改了我的 linker 文件以将数据指向该区域,并且它正确地编译和映射数据,如映射文件中所验证的那样。

但是当我将 gdb 连接到 QEMU 并尝试加载可执行文件时,它给出了一个错误。

似乎 QEMU 正在保护 0x40000000 以下的区域,因为它认为此以下区域可能被某些内核使用?

如果我为我的 RAM 更改 0x4XXX_XXXX 以上的地址,一切正常。

怎么办?

It seems as if, QEMU is protecting area below 0x40000000 as it is thinking area below this maybe used by some kernel?

softmmu QEMU 中的初始机器状态通常不依赖于访客代码。但是您使用的机器型号可能在 0x20000000 处没有物理内存。 您可以使用 gdb monitor info mtree 命令进行检查。

How to go about it?

您可以将自定义嵌入式系统的模型添加到 QEMU 并将物理内存放在 0x20000000。