【问题标题】:Put gcc libs .data in specific section?将 gcc libs .data 放在特定部分?
【发布时间】:2013-03-08 02:22:18
【问题描述】:

我正在尝试为我们的嵌入式系统切换到 GNU GCC 编译器,但由于我们芯片的内存布局被拆分,我无法链接项目:

RAM section 1: 0x10000-0x12FFF
RAM section 2: 0x18000-0x1BFFF

我们项目中的数据可以放入第 1 部分,但从 gcc 库链接的数据不适合。地图文件提取:

.data          0x00012974      0x3c4 c:/tools/gnucr16_v1.1.3-elf/cr16-elf/bin/../lib/gcc/cr16-elf/4.5.1-GNUCR16_v1.1.3/../../../../cr16-elf/lib\libc.a(lib_a-impure.o)
               0x00012974                _impure_ptr

.data          0x00012d7c      0x410 c:/tools/gnucr16_v1.1.3-elf/cr16-elf/bin/../lib/gcc/cr16-elf/4.5.1-GNUCR16_v1.1.3/../../../../cr16-elf/lib\libc.a(lib_a-mallocr.o)
               0x00012d7c                __malloc_av_
               0x00013184                __malloc_trim_threshold
               0x00013188                __malloc_sbrk_base

是否可以将库中的 .data 部分放在第二部分?我尝试了不同的事情但没有成功......链接器脚本提取:

MEMORY
{
  SHARED1    : org =   0x10000, len = 0x3000
  SHARED2    : org =   0x18000, len = 0x4000
}

SECTIONS
{
  .data 0x12004 : { *(.data); } >SHARED1
  .data2 0x19000 : { libc*(.data); } >SHARED2
}

【问题讨论】:

    标签: gcc embedded gnu ld linker-scripts


    【解决方案1】:
    SECTIONS
    {
      .section_name:
      {
        *lib_a-impure.o (.data);  //That is the syntax to access sections of object files
       } >SHARED1
    }
    

    更多信息在这里:http://www.embedded.com/design/mcus-processors-and-socs/4026080/Building-Bare-Metal-ARM-Systems-with-GNU-Part-3

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-28
      • 2019-12-27
      • 1970-01-01
      • 2017-11-20
      • 1970-01-01
      • 2011-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多