Как заставить инструменты Eclipse+GNU пропускать неиспользуемую память в одном разделе и не загружать ее?

Я использую:

  • Eclipse IDE для разработчиков кислорода на C/C++ (4.7.0)
  • GNU Tools ARM Embedded (версия инструментов GNU без оружия)
  • Плагин отладки GDB SEGGER J-Link

В моем скрипте компоновщика у меня есть сегмент памяти (.myvars), который содержит два прерывистых раздела (.loadtable и.rawdata)

sections.ld:

.myvars :
{
    __myvars_start__ = ABSOLUTE(.);
    __loadtable_start__ = 0x60002000;
    . = __loadtable_start__ - __myvars_start__;
    *(.loadtable)
    __rawdata_start__ = 0x60039000;
    . = __rawdata_start__ - __myvars_start__;
    *(.rawdata)
} > MYVARS

Иллюстрация:

.myvars 0x60000000
      |
      |        (unused memory)
      |
      |        .loadtable 0x60002000
      |                     |
      |                     |
      |                     |
      |                   0x60002000 + sizeof(.loadtable)
      |
      |        (unused memory)
      |
      |        .rawdata   0x60039000
      |                     |
      |                     |
      |                     |
      |                   0x60039000 + sizeof(.rawdata)
      |
      |        (unused memory)
      |
    0x60800000

Используя section.ld, Eclipse загружает 0x60000000 ~ (0x60039000 + sizeof(.rawdata)) на мое устройство. Но я надеюсь, что смогу просто загрузить.loadtable и.rawdata.

Я знаю, что могу добиться с помощью этого сценария компоновщика (поместите раздел в два отдельных сегмента памяти):

.myvars1 :
{
    *(.loadtable)
} > MYVARS1

.myvars2 :
{
    *(.rawdata)
} > MYVARS2

Можно ли пропустить неиспользуемую память в одном сегменте памяти при загрузке?

Любой совет по этому вопросу? Буду благодарен за любые предложения.

0 ответов

Другие вопросы по тегам