Spec-Zone.ru › GCC 10

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

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 размещались в небольшом, но более легкодоступном сегменте памяти, а верхние секции - в большем, но медленнее доступном сегменте.

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

Spec-Zone.ru

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