【问题标题】:GCC linking multiple memory banksGCC 链接多个内存库
【发布时间】:2017-04-11 06:46:48
【问题描述】:
  1. rom1rom2地址映射不同,不连续!
  2. 有些对象必须放入rom2
  3. 每次链接rom1rom2中的对象应该是固定地址(rom2)。换句话说,rom1 在链接时应该知道rom2 的符号地址。

我可以将一个精灵(rom2)链接到rom1吗?

【问题讨论】:

  • 我可以将 elf(rom2) 链接到 rom1 吗?
  • 或者我可以从 rom1 elf 中拆分 rom2 相关功能,假设 rom2 相关功能在特殊部分中?

标签: gcc linker ld elf


【解决方案1】:

如果我理解得很好:

  1. 您的系统有 2 个内存 rom1rom2
  2. 某些对象必须位于rom1,其他对象必须位于rom2

您的链接脚本应如下所示:

 MEMORY
 {
     rom1 : org=0x10000 len=1024
     rom2 : org=0x40000 len=1024
 }

 SECTIONS 
 {
     .text1  0x10000 : {foo.o(.text) } > rom1
     .text2  0x40000 : {bar.o(.text) } > rom2
 }

SECTIONS 部分,链接器从foo.o 收集.text 部分,并将此.text 部分放入输出部分.text1 中,从rom1 中的地址0x10000 开始。

同样,它从bar.o 中收集.text 部分并将其放入rom2 中。

【讨论】:

    猜你喜欢
    • 2014-03-25
    • 1970-01-01
    • 2023-01-09
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-13
    相关资源
    最近更新 更多