GCC-ARM: вместо C перейдите в раздел компоновщика на абсолютный адрес - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть SW, который разделен на два бинарных файла (загружаются в разные запоминающие устройства).

Поэтому у меня есть два файла компоновщика.

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

Существует функция, которую используют оба кода, и она загружается в ОЗУ первым, поэтому во втором я обращаюсь к этой функции действительно как ПЕРЕХОД на адрес, по которому она загружается в ОЗУ (в файле компоновщика первого ПО я определил определенный раздел, в который я принудительно загружаю эту функцию).

В настоящее время этот механизм работает для меня корректно.

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

В идеале, в моем файле компоновщика я определяю адрес с помощью тега, а в коде я ссылаюсь на этот тег.

То есть и компилятор, и компоновщик будут понимать этот тег и переводить его по адресу.

Поэтому, если я изменю адрес в компоновщике, мне не придется менять также и инструкцию JUMP.

Большое спасибо

ПРИМЕЧАНИЕ: gcc-arm-ни-EABI-4_9-2015q3

1 Ответ

0 голосов
/ 24 сентября 2019

Доступ к разделам компоновщика напрямую из кода C

Директива NOLOAD

Разделение файлов компоновщика на два и использование обоих для компоновки (пример ответа на вопрос есть)

Вы можете использовать NOLOAD в App2 (при обычной загрузке в App1), чтобы знать о функции, но не загружать ее, изатем перейдите к нему, как указано в первой ссылке.

Если вы хотите поэкспериментировать с макросами препроцессора и параметрами компиляции / компоновки, вы можете получить дополнительный файл компоновщика, который будет использоваться обоими приложениями, но условно загружать разделы нана выключателях.Это поможет вам избежать повторения адреса в обоих файлах компоновщика (например, App1 будет связан с использованием ld1 + ldshared , App2 с использованием ld1 + ldshared сразные переключатели ).

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