3.19.39 Параметры PRU
Эти параметры командной строки определены для целевой платформы PRU:
-
-minrt -
Связь с минимальной средой выполнения. Это может значительно уменьшить размер конечного двоичного файла ELF, но некоторые стандартные возможности среды выполнения C удаляются.
Этот параметр отключает поддержку статических инициализаторов и конструкторов. Обратите внимание, что компилятор все равно может генерировать код со статическими инициализаторами и конструкторами. Программист должен убедиться, что исходная программа не будет использовать эти возможности.
Минимальный стартовый код не передаст аргументы
argcиargvфункцииmain, поэтому последняя должна быть объявлена какint main (void). Это уже норма для большинства проектов прошивки. -
-mmcu=mcu -
Укажите вариант аппаратного обеспечения PRU для использования. Соответствующий файл спецификаций будет загружен, передавая размеры областей памяти компоновщику и определяя аппаратные макросы C.
Newlib предоставляет только спецификацию
sim, предназначенную для запуска регрессионных тестов с использованием симулятора. Спецификации для реального оборудования можно получить, установив пакет GnuPruMcu. -
-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-14.2.0/gcc/PRU-Options.html