Spec-Zone.ru › GCC 9

6.33.21 Атрибуты функций MSP430

Эти атрибуты функций поддерживаются бэкендом MSP430:

critical

Критические функции отключают прерывания при входе и восстанавливают предыдущее состояние прерываний при выходе. Критические функции также не могут иметь атрибуты naked, reentrant или interrupt.

Аппаратное обеспечение MSP430 гарантирует, что прерывания отключены при входе в функции interrupt, и восстанавливает предыдущее состояние прерываний при выходе. Атрибут critical поэтому избыточен для функций interrupt.

interrupt

Используйте этот атрибут, чтобы указать, что указанная функция является обработчиком прерываний. Компилятор генерирует последовательности входа и выхода функции, подходящие для использования в обработчике прерываний, когда этот атрибут присутствует.

Вы можете предоставить аргумент к атрибуту прерывания, который указывает имя или номер. Если аргумент — число, оно указывает слот в таблице векторов прерываний (0—31), в который должен быть назначен этот обработчик. Если аргумент — имя, оно обрабатывается как символическое имя для слота вектора. Эти имена должны соответствовать соответствующим записям в скрипте компоновщика. По умолчанию распознаются имена watchdog для вектора 26, nmi для вектора 30 и reset для вектора 31.

naked

Этот атрибут позволяет компилятору построить требуемое объявление функции, позволяя при этом использовать ассемблерный код в теле функции. Указанная функция не будет иметь пролога/эпилога, сгенерированных компилятором. В голых функциях можно безопасно включать только базовые asm операторы (см. Базовый ассемблер). Хотя использование расширенных asm или смешение базовых asm и C-кода может работать, нельзя полагаться на их надежную работу, и это не поддерживается.

reentrant

Вспомогательные функции отключают прерывания при входе и включают их при выходе. Вспомогательные функции также не могут иметь атрибуты naked или critical. Они могут иметь атрибут interrupt.

wakeup

Этот атрибут применим только к функциям прерывания. Он будет проигнорирован, если применен к функции, не являющейся функцией прерывания. Функция прерывания пробуждения выведет процессор из любого состояния низкого энергопотребления, в котором он может находиться при выходе из функции.

lower
upper
either

В целевой системе MSP430 эти атрибуты могут быть использованы для указания, следует ли поместить функцию или переменную в низкую память, высокую память или следует ли оставить решение о размещении компилятору. Атрибуты значимы только при компиляции для архитектуры MSP430X.

Атрибуты работают совместно со скриптом компоновщика, дополненным указаниями о размещении секций с префиксом .lower и .upper. Например, помимо размещения секции .data, скрипт также указывает размещение секций .lower.data и .upper.data. Цель состоит в том, чтобы секции lower размещались в небольшом, но более легкодоступном регионов памяти, а верхние секции — в более крупном, но медленнее доступном регионы.

Атрибут either является специальным. Он сообщает компоновщику разместить объект в соответствующую секцию lower, если для него есть место. Если места недостаточно, объект размещается в соответствующей секции upper вместо этого. Обратите внимание, что алгоритм размещения не очень сложен. Он не пытается найти оптимальную укладку секций lower. Он просто проходит по объектам и делает все возможное. Использование опций командной строки -ffunction-sections и -fdata-sections может помочь в укладке, так как они производят более мелкие, более легко упаковываемые области.

Далее: Атрибуты функций NDS32, Предыдущее: Атрибуты функций MIPS, Вверх: Атрибуты функций [Содержание][Индекс]

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-9.5.0/gcc/MSP430-Function-Attributes.html

Spec-Zone.ru

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