Вопросы по теме 'linker-scripts'

Скрипт компоновщика ld создает огромный двоичный файл
Я использую binutils-2.21.53.0.1-6.fc16.x86_64 . У меня есть небольшой объектный файл, hello.o с достаточным количеством «вещей», чтобы иметь содержимое во всех разделах: Section Headers: [Nr] Name Type Address...
3328 просмотров
schedule 23.07.2023

Что означает опасная ошибка переезда?
Я получаю сообщение об ошибке при связывании: опасное перемещение: l32r: после использования помещается литерал: Я все еще пытаюсь отладить; однако я хочу лучше понять эту ошибку. Я понимаю, что такое переезд; однако я не уверен,...
5827 просмотров

gcc: Можете ли вы поместить указатели функций в другой раздел (не .data)?
Для модульного тестирования встроенного проекта на хосте я начал использовать указатели функций, чтобы иметь возможность переключаться между «реальной» реализацией функции и макетом во время выполнения. Итак, моя функция 'foo' в файле .c выглядит...
1074 просмотров
schedule 20.09.2022

Зачем использовать __attribute__ (раздел) для некоторого выделения памяти?
у меня foo[NUMBYTES] __attribute__((section(".bar"))); Зачем использовать этот атрибут .bar раздела? Потому что foo[] уже предоставляет некоторое пространство памяти. Это для удобного управления памятью?
774 просмотров
schedule 12.02.2023

Компоновщик Gnu - тип выходного раздела
Насколько я знаю и читал в документации компоновщика, есть 5 типов выходных разделов: NOLOAD, DSECT, COPY, INFO, OVERLAY , но объясняются только 2 из них: NOLOAD и OVERLAY. COPY , INFO и DSECT не объяснены и везде в инете я вижу одни и те же 2...
486 просмотров
schedule 22.07.2023

Как вставить данные в скомпилированный бинарник для MCU
Я пытаюсь вставить хэш md5 части моего двоичного файла в двоичный файл, чтобы отслеживать версию MCU FW. Я подошел к этому так: в скрипте ссылки я разделил флэш на две части. MEMORY...
162 просмотров
schedule 21.07.2022

Резервное пространство памяти в области памяти m_text FLASH на встроенной цели
У меня есть микроконтроллер с большим количеством флэш-памяти, разделенной на секторы флэш-памяти по 1 тыс. Я хочу прошить простые числа в определенную область памяти во время перепрошивки, тогда при первой загрузке будет сгенерирован крипто ключ,...
3259 просмотров
schedule 07.08.2023

gcc: скрипт компоновщика arm-none-eabi-ld не обновляет начальную и конечную переменные .bss
Я пытаюсь создать образец проекта ARM с голым металлом, используя цепочку инструментов «arm-none-eabi-». Makefile CC := arm-none-eabi-gcc LD := arm-none-eabi-ld AS := arm-none-eabi-as AR := arm-none-eabi-ar -cr OBJCOPY := arm-none-eabi-objcopy...
1807 просмотров
schedule 11.06.2023

Выравнивание разделов компоновщика
Я пытаюсь написать исполняемый файл, в котором раздел .text находится в определенном месте. Я написал следующий скрипт компоновщика: base_address = 0x123456789AB; SECTIONS { ENTRY(_start) . = base_address; .text : { *(.text); } }...
909 просмотров
schedule 13.04.2024

Что такое абсолютный символ и как его определить в C?
На справочной странице nm . Это говорит «A» Значение символа является абсолютным и не будет изменено дальнейшим связыванием. Однако я не знаю, что это значит. Как я могу определить переменную или что-то еще, чтобы сделать ее значение...
2326 просмотров
schedule 30.04.2022

Реализовать модуль module_init, аналогичный ядру Linux, но столкнуться с некоторыми проблемами в скрипте ld.
Мне очень нравится функция module_init ядра Linux, я хотел бы реализовать ту же функцию для своих приложений пользовательского пространства. Я пытаюсь изменить скрипт компоновщика, чтобы сделать это: 1, скопируйте стандартный ld-скрипт x86-64...
203 просмотров
schedule 09.11.2023

Переназначение вектора прерывания Cortex-M3 в реальном времени
Я использую GCC 4.9 (arm-none-eabi) с STM32 и хочу поместить таблицу прерываний в массив, чтобы изменять адреса обработчиков прерываний, когда это необходимо в моем коде. Я прочитал существующие руководства и статьи и сделал следующее. : Мне нужно...
1072 просмотров

Понимание сценария компоновки микроконтроллера ARM Cortex-M
Я использую микроконтроллер STM32F746NG от STMicroelectronics. Это устройство основано на архитектуре ARM Cortex-M7. Я потратил довольно много времени на изучение компоновщика из примеров проектов. Я разобрался в основах, но все еще не могу понять...
8140 просмотров
schedule 19.07.2023

STM32F103C8T6 не работает после кнопки сброса
У меня есть "Минимальная системная плата для разработки микроконтроллера ARM - STM32F103C8T6" с ST-LINK V2. Это основной код, за которым следует сценарий компоновщика, а затем запуск: 1) основной: @@@ Directives .thumb...
1528 просмотров

Компоновщик GNU ARM - почему мои разделы перекрываются?
Мне нужно добавить небольшую кучу, чтобы использовать стандартные библиотечные функции на микроконтроллере TM4C ARM (для _sbrk требуется символ end ). Это мой скрипт компоновщика (пришел с демонстрацией микроконтроллера): /* Entry Point */...
5782 просмотров
schedule 29.05.2022

Команда сценария компоновщика AURIX TriCore REGION_MAP
Я адаптирую некоторые скрипты компоновщика из довольно новых микроконтроллеров AURIX TriCore. Есть команда, которую я совсем не понимаю, и документация [0] не очень полезна. Может кто-нибудь сказать мне в принципе, что там происходит?...
1384 просмотров
schedule 18.01.2023

Разделы LD и NOLOAD: понимание странного значения LMA
Я пишу чистое ядро, и мне трудно понять вывод ld в случае раздела NOLOAD . Я объявляю символы, которые существуют только с активированным MMU, поэтому VMA и LMA не совпадают. Раньше я объявлял такой раздел так: _foobar_start = .; .foobar :...
2690 просмотров
schedule 10.11.2022

Разница между файлом карты и файлом компоновщика
В чем разница между файлом карты, созданным компоновщиком, и файлом компоновщика, который содержит сами сегменты памяти?
358 просмотров
schedule 22.03.2023

Как преобразовать параметр ld -Ttext в скрипт компоновщика?
Я нашел этот учебник по созданию операционной системы и пытаюсь преобразовать часть связывания в make-файле в скрипт компоновщика. Вот руководство: https://github.com/ghaiklor/ghaiklor-os-gcc Вот файл make: SOURCES = $(shell find cpu...
283 просмотров
schedule 08.09.2023

Как получить размер входного раздела (поместить его в конец памяти)
У меня есть следующий скрипт компоновщика: .data и .bss помещаются в оперативную память, затем раздел .heap заполняет оставшуюся память. Теперь я хочу добавить раздел .noinit , который всегда помещается в конец памяти. Это значит, что...
1318 просмотров
schedule 01.06.2022