【问题标题】:QEMU Memory allocation below 0x40000000QEMU 内存分配低于 0x40000000
【发布时间】:2020-09-03 05:20:14
【问题描述】:

我正在尝试将我的项目链接到一个定制嵌入式系统,其中 RAM 芯片 安装在地址 0x20000000。

我已更改我的链接器文件以将数据指向该区域,它会按照映射文件中的验证正确编译和映射数据。

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

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

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

该怎么做呢?

【问题讨论】:

    标签: linker gdb qemu


    【解决方案1】:

    看起来,QEMU 正在保护 0x40000000 以下的区域 这下面的思考区可能被某些内核使用了?

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

    怎么办?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-06
      • 1970-01-01
      • 2012-08-09
      • 2011-08-28
      • 1970-01-01
      • 2012-03-13
      • 2011-03-03
      • 2012-09-30
      相关资源
      最近更新 更多