Spec-Zone.ru › GCC 12

6.33.22 Атрибуты функций 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 располагались в небольшом, но более легкодоступном региoне памяти, а верхние секции — в более большом, но медленнее доступном региoне.

Атрибут 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-12.2.0/gcc/MSP430-Function-Attributes.html

Spec-Zone.ru

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