G CC -T вопрос опции связи - PullRequest
0 голосов
/ 19 марта 2020

Я скомпилировал проект с arm-none-eabi-g cc для объекта с помощью команды

arm-none-eabi-gcc --specs=nosys.specs -mcpu=cortex-m7 -mtune=cortex-m7 -Os -g -gdwarf-2  -c $< -o $(@)

В настоящее время я получаю объектный файл, когда пытаюсь связать его с командой в объекте foler

arm-none-eabi-gcc --specs=nosys.specs -mcpu=cortex-m7 -mtune=cortex-m7  -g -gdwarf-2  -nostartfiles -T ..\project.ld  -o target *

Однако я получил странную ошибку

arm-none-eabi/bin/ld.exe: error: no memory region specified for loadable section `.text.memcmp'

Я понимаю, что когда я использую опцию -T, вместо скрипта ссылки по умолчанию будет использоваться файл сценария ссылки. похоже, что определения разделов для некоторой встроенной функции отсутствуют. Я попытался исправить это положение

.text.memcmp : {*(.text.memcmp)}

в моем файле ld, похоже, этот раздел исправлен, однако я получил еще одну ошибку:

arm-none-eabi/bin/ld.exe: error: no memory region specified for loadable section `.text.memset'

, поэтому я не думаю, что положить. text.memset в LD-файле является правильным исправлением, потому что после того, как я поместил `.text.memset 'в ld-файл, я получил еще одну ошибку:

arm-none-eabi/bin/ld.exe: error: no memory region specified for loadable section `.text._snprintf_r'

Я думаю, что пропустил некоторые опции в G CC создать эти разделы по умолчанию для встроенных функций

Что является причиной root этой проблемы и как это исправить? Большое спасибо!

Обновление: добавьте файл LD ниже:

MEMORY {
  INIT_SRAM                : ORIGIN = 0x34400000, LENGTH = 0x1FB000
  INIT_SRAM_NO_CACHEABLE   : ORIGIN = 0x3460A000, LENGTH = 0x1DF00
  INIT_SRAM_STACK          : ORIGIN = 0x34628000, LENGTH = 0x15000
  RAM_RSVD               : ORIGIN = .,          LENGTH = 0
  BOOT_TEST           : ORIGIN = 0x43840000  LENGTH = 0x50    
}
SECTIONS 
{
.boot_test                                         : {*(.boot_test)}> BOOT_TEST 
.exception_table                             ALIGN(4)   : > {*(.exception_table)}>INIT_SRAM
.startup                                     ALIGN(4)   : {*(.startup)}
.ramcode                                    ALIGN(4) : > {*(.ramcode)} 
.text ALIGN(4) : { *(.text) }
.ramcode                                     ALIGN(4) : { *(.ramcode) }
.rodata                                     ALIGN(4)    : { *(.rodata) }
.data                                     ALIGN(4)      : { *(.data) }
.bss                                 ALIGN(16)  : { *(.bss) }

_TEST_SESSION_START = .;
.TEST_SESSION :{*(.TEST_SESSION)}
_TEST_SESSION_END = (. - 1);  

_Stack_start                       = .;
__STACK_SIZE                     = SIZEOF(INIT_SRAM_STACK);
__RAM_NO_CACHEABLE_START      = ADDR(INIT_SRAM_NO_CACHEABLE);

} 

1 Ответ

0 голосов
/ 29 марта 2020

изменить .text ALIGN (4): {* (. Text)} на .text ALIGN (4): {* (. Text) (. Text. )} может исправить этот .text. ххх отсутствует проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...