3.19.33 Параметры 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. Строка не буферизуется перед отправкой на запись.Для этого параметра требуется 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-11.4.0/gcc/MSP430-Options.html