Spec-Zone.ru › GCC 6

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

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

critical

Критические функции отключают прерывания при входе и восстанавливают предыдущее состояние прерывания при выходе. Критические функции также не могут иметь атрибутов naked или reentrant. Они могут иметь атрибут 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-6.5.0/gcc/MSP430-Function-Attributes.html

Spec-Zone.ru

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