3.19.41 Параметры PRU ¶
Эти параметры командной строки определены для целевого устройства PRU:
-minrt-
Связать с минимальной средой выполнения, без поддержки статических инициализаторов и конструкторов. Использование этого параметра может значительно уменьшить размер конечного двоичного файла ELF. Следует учитывать, что компилятор все равно может генерировать код со статическими инициализаторами и конструкторами. Программист должен убедиться, что исходная программа не будет использовать эти функции.
-mmcu=mcu-
Указать используемую разновидность микроконтроллера PRU. Обратитесь к Newlib для получения точного списка поддерживаемых микроконтроллеров.
-mno-relax-
Заставить GCC передать параметр командной строки --no-relax компоновщику вместо параметра --relax.
-mloop-
Разрешить (или запретить) GCC использовать инструкцию LOOP.
-mabi=variant-
Указать вариант ABI для вывода кода. -mabi=ti выбирает неизмененный ABI TI, а -mabi=gnu выбирает вариант GNU, который более естественно справляется с определёнными предположениями GCC. Вот различия:
- ‘Размер указателя на функцию’
-
ABI TI определяет, что указатели на функции (код) имеют 16 бит, в то время как GNU поддерживает только 32-битные указатели на данные и код.
- ‘Необязательный указатель на возвращаемое значение’
-
Значения возвращаемых функций размером более 64 бит передаются с помощью скрытого указателя в качестве первого аргумента функции. Однако ABI TI предписывает, что указатель может быть NULL, если вызывающая сторона не использует возвращаемое значение. GNU всегда передает и ожидает действительный указатель на возвращаемое значение.
Текущая реализация -mabi=ti просто выдаёт ошибку компиляции, когда обнаруживаются вышеуказанные конструкции кода. Вследствие этого стандартная библиотека C не может быть построена и пропускается при компоновке с -mabi=ti.
Релаксация — это функция GNU, и для безопасности отключена при использовании -mabi=ti. Инструментарий TI не генерирует переадресации для инструкций QBBx, поэтому компоновщик GNU не может их скорректировать при укорачивании смежных псевдоинструкций LDI32.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-10.5.0/gcc/PRU-Options.html