Spec-Zone.ru › GCC 15

3.20.39 Параметры PRU

Для целевой платформы PRU определены следующие параметры командной строки:

-minrt

Связать программу с минимальной средой выполнения. Это может значительно уменьшить размер итогового двоичного файла ELF, но некоторые стандартные возможности среды выполнения C будут удалены.

Этот параметр отключает поддержку статических инициализаторов и конструкторов. Учтите, что компилятор всё же может генерировать код со статическими инициализаторами и конструкторами. Программист должен убедиться, что исходная программа не использует эти возможности.

Минимальный код запуска не передаёт аргументы argc и argv функции main, поэтому последнюю необходимо объявить как int main (void). В большинстве проектов прошивок это и так является нормой.

-mmcu=mcu

Указать используемый вариант аппаратной платформы PRU. Будет загружен одноимённый файл спецификаций, передающий компоновщику размеры областей памяти и определяющий макросы C, специфичные для оборудования.

Newlib предоставляет только спецификацию sim, предназначенную для запуска регрессионных тестов с помощью симулятора. Спецификации для реального оборудования можно получить, установив пакет GnuPruMcu.

-mno-relax

Передавать компоновщику параметр командной строки --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-15.3.0/gcc/PRU-Options.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API