3.20.33 Параметры MSP430
Для MSP430 определены следующие параметры:
-
-masm-hex -
Принудительно использовать шестнадцатеричные константы в выводе ассемблера. Обычно такие константы представляются в виде десятичных чисел со знаком, но этот параметр доступен для тестового набора и/или эстетических целей.
-
-mmcu= -
Выбрать целевой MCU. Это используется для создания символа препроцессора C на основе имени MCU, преобразованного в верхний регистр и снабжённого префиксом и суффиксом «__». Затем этот символ используется файлом заголовка msp430.h для выбора дополнительного файла заголовка, специфичного для MCU.
Этот параметр также задаёт используемую ISA. Если имя MCU относится к тем, которые поддерживают только ISA 430, выбирается она; в противном случае выбирается ISA 430X. Для выбора ISA 430 также можно использовать общее имя MCU «msp430». Аналогично, общее имя MCU «msp430x» выбирает ISA 430X.
Кроме того, в командную строку компоновщика добавляется скрипт компоновщика для конкретного MCU. Имя скрипта совпадает с именем MCU, к которому добавлено расширение .ld. Таким образом, указание -mmcu=xxx в командной строке
gccопределяет символ препроцессора C__XXX__и приводит к тому, что компоновщик ищет скрипт с именем xxx.ld.Поддерживаемые разными MCU 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», данные MCU будут прочитаны. Как и выше, этот каталог также регистрируется как путь включения и путь поиска библиотек компоновщика.
Если ни один из перечисленных способов поиска не обнаружит «devices.csv», будут использованы жёстко заданные данные MCU.
- Путь включения, указанный с помощью
-
-mwarn-mcu -mno-warn-mcu-
Этот параметр включает или отключает предупреждения о конфликтах между именем MCU, указанным параметром -mmcu, и ISA, заданной параметром -mcpu, и/или поддержкой аппаратного умножителя, заданной параметром -mhwmult. Он также переключает предупреждения о нераспознанных именах MCU. По умолчанию этот параметр включён.
-
-mcpu= -
Задаёт используемую ISA. Допустимые значения: «msp430», «msp430x» и «msp430xv2». Этот параметр устарел. Для выбора ISA следует использовать параметр -mmcu=.
-
-msim -
Связать с библиотеками среды выполнения симулятора и скриптом компоновщика. Переопределяет любые скрипты, которые были бы выбраны параметром -mmcu=.
-
-mlarge -
Использовать адресацию большой модели (20-разрядные указатели, 20-разрядный
size_t). -
-msmall -
Использовать адресацию малой модели (16-разрядные указатели, 16-разрядный
size_t). -
-mrelax -
Этот параметр передаётся ассемблеру и компоновщику и позволяет компоновщику выполнять определённые оптимизации, которые нельзя выполнить до окончательной компоновки.
-
mhwmult= -
Описывает тип аппаратного умножителя, поддерживаемого целевой платформой. Допустимые значения: «none» — аппаратного умножителя нет; «16bit» — исходный умножитель только для 16-разрядных чисел, поддерживаемый ранними MCU; «32bit» — умножитель для 16- и 32-разрядных чисел, поддерживаемый более поздними MCU; «f5series» — умножитель для 16- и 32-разрядных чисел, поддерживаемый MCU серии F5. Также можно указать значение «auto». Оно сообщает GCC, что поддержку аппаратного умножителя нужно определить по имени MCU, заданному параметром -mmcu. Если параметр -mmcu не указан или имя MCU не распознано, поддержка аппаратного умножителя не предполагается.
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-15.3.0/gcc/MSP430-Options.html