3.19.32 Параметры MSP430
Эти параметры определены для MSP430:
-
-masm-hex -
Принудительно использовать шестнадцатеричные константы в выходном коде ассемблера. Обычно такие константы представлены знаковыми десятичными числами, но этот параметр доступен для тестирования и/или эстетических целей.
-
-mmcu= -
Выбор МК для мишени. Используется для создания символа препроцессора C, основанного на названии МК, преобразованного в верхний регистр и снабженного префиксом и постфиксом ‘__’. Это, в свою очередь, используется файлом заголовка msp430.h для выбора файла дополнительного заголовка, специфичного для МК.
Параметр также устанавливает используемую ISA. Если имя МК известно как поддерживающий только ISA 430, то используется она; в противном случае используется ISA 430X. Также можно использовать общее имя МК ‘msp430’ для выбора ISA 430. Аналогично, общее имя ‘msp430x’ выбирает ISA 430X.
Кроме того, в командную строку линкера добавляется скрипт линкера, специфичный для МК. Имя скрипта – имя МК с добавленным расширением .ld. Таким образом, указание -mmcu=xxx в командной строке определяет символ препроцессора C
__XXX__и заставляет линкер искать скрипт с именем xxx.ld.Поддержка ISA и аппаратного умножения для различных МК жестко закодирована в GCC. Однако внешний файл ‘devices.csv’ может быть использован для расширения поддержки устройств за пределами тех, которые были жестко закодированы.
GCC ищет файл ‘devices.csv’ с использованием следующих методов в заданном порядке приоритетов, где первый метод имеет преимущество перед вторым, а тот – перед третьим.
- Путь включения, указанный с
-Iи-L Файл ‘devices.csv’ будет искаться в каждом из каталогов, указанных в путях включения и путях поиска библиотек линкера.
- Путь, указанный переменной окружения ‘MSP430_GCC_INCLUDE_DIR’
Установите значение глобальной переменной окружения ‘MSP430_GCC_INCLUDE_DIR’ в полный путь к каталогу, содержащему devices.csv, и GCC будет искать devices.csv в этом каталоге. Если devices.csv найден, этот каталог также будет зарегистрирован как путь включения и путь поиска библиотек линкера. Файлы заголовков и скрипты линкера в этом каталоге, таким образом, могут использоваться без ручного указания
-Iи-Lв командной строке.- Каталог ‘msp430-elf{,bare}/include/devices’
-
Наконец, GCC будет проверять ‘msp430-elf{,bare}/include/devices’ из корневого каталога инструментальной цепочки. Этот каталог не существует в стандартной установке, но если пользователь создал его и скопировал в него ‘devices.csv’, данные о МК будут прочитаны. Как и выше, этот каталог также будет зарегистрирован как путь включения и путь поиска библиотек линкера.
Если ни один из вышеперечисленных методов поиска не находит ‘devices.csv’, используются жестко закодированные данные о МК.
- Путь включения, указанный с
-
-mwarn-mcu -mno-warn-mcu-
Этот параметр включает или отключает предупреждения о конфликтах между именем МК, заданным параметром -mmcu, и ISA, заданной параметром -mcpu, и/или поддержкой аппаратного умножения, заданной параметром -mhwmult. Также он включает или отключает предупреждения об отсутствии распознанного имени МК. Этот параметр по умолчанию включен.
-
-mcpu= -
Указывает используемую ISA. Допустимые значения — ‘msp430’, ‘msp430x’ и ‘msp430xv2’. Этот параметр устарел. Для выбора ISA следует использовать параметр -mmcu=.
-
-msim -
Связь с библиотеками времени выполнения симулятора и скриптом линкера. Переопределяет любые скрипты, которые были бы выбраны параметром -mmcu=.
-
-mlarge -
Использование адресации с большой моделью (указатели 20 бит,
size_t20 бит). -
-msmall -
Использование адресации с малой моделью (указатели 16 бит,
size_t16 бит). -
-mrelax -
Этот параметр передаётся ассемблеру и линковщику и позволяет линковщику выполнить определённые оптимизации, которые нельзя выполнить до окончательной компоновки.
-
mhwmult= -
Описывает тип аппаратного умножения, поддерживаемого целевым устройством. Допустимые значения: ‘none’ (нет аппаратного умножения), ‘16bit’ (исходное умножение только 16 бит, поддерживаемое ранними МК), ‘32bit’ (умножение 16/32 бит, поддерживаемое более поздними МК) и ‘f5series’ (умножение 16/32 бит, поддерживаемое МК серии F5). Также можно указать значение ‘auto’. Это говорит GCC, что нужно вывести поддержку аппаратного умножения, основываясь на имени МК, предоставленном параметром -mmcu. Если параметр -mmcu не указан или имя МК не распознаётся, предполагается отсутствие поддержки аппаратного умножения.
auto– значение по умолчанию.Аппаратные умножения обычно выполняются путём вызова библиотечной функции. Это экономит место в сгенерированном коде. Однако при компиляции с -O3 или выше, аппаратный умножитель вызывается встроенно. Это приводит к увеличению размера, но более быстрому коду.
Библиотечные функции аппаратного умножения отключают прерывания во время выполнения и восстанавливают предыдущее состояние прерывания по завершении. Это делает их безопасными для использования как внутри обработчиков прерываний, так и в обычном коде.
-
-minrt -
Включение минимальной среды выполнения — без статических инициализаторов или конструкторов. Предназначено для устройств с ограниченным объёмом памяти. Компилятор включает специальные символы в некоторых объектах, которые сообщают линковщику и среде выполнения, какие фрагменты кода необходимы.
-
-mtiny-printf -
Включить уменьшение размера кода
printfиputsфункций библиотеки. Реализации этих функций с префиксом ‘tiny’ не являются реентерабельными, поэтому их следует использовать с осторожностью в многопоточных приложениях.Поддержка потоков была удалена, и строка, подлежащая выводу, всегда отправляется в stdout через
writeсистемный вызов. Строка не буферизуется перед отправкой в write.Этот параметр требует Newlib Nano IO, поэтому GCC должен быть сконфигурирован с ‘--enable-newlib-nano-formatted-io’.
-
-mmax-inline-shift= -
Этот параметр принимает целое число от 0 до 64 включительно и задаёт максимальное число встроенных инструкций сдвига, которые должны быть выпущены для выполнения операции сдвига на заданное постоянное значение. Когда это значение нужно превысить, используется вспомогательная функция mspabi. Значение по умолчанию равно 4.
Это касается только случаев, когда сдвиг на несколько позиций не может быть выполнен одной инструкцией (например, все сдвиги >1 в ISA 430).
Сдвиги 32-битного значения по крайней мере вдвое дороже, поэтому передаваемое значение для этого параметра делится на 2, и полученное значение используется вместо него.
-
-mcode-region= -mdata-region=-
Эти параметры указывают компилятору, где размещать функции и данные, у которых нет одного из
lower,upper,eitherилиsectionатрибутов. Возможные значения —lower,upper,eitherилиany. Первые три ведут себя так же, как соответствующий атрибут. Четвёртое возможное значение —any— является значением по умолчанию. Оно полностью оставляет размещение на скрипте линкера и том, как он назначает стандартные секции (.text,.data, и т.д.) областям памяти. -
-msilicon-errata= -
Этот параметр передает запрос ассемблеру на включение исправлений для указанных ошибок кремния.
-
-msilicon-errata-warn= -
Этот параметр передаёт запрос ассемблеру на включение сообщений об ошибках, когда может потребоваться применение исправления ошибок кремния.
-
-mwarn-devices-csv -mno-warn-devices-csv-
Выводить предупреждение, если ‘devices.csv’ не найден или при его парсинге возникли проблемы (по умолчанию: включено).
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-13.3.0/gcc/MSP430-Options.html