Spec-Zone.ru › GCC 7

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

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

critical

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

interrupt

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

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

naked

Этот атрибут позволяет компилятору создать необходимое объявление функции, при этом позволяя телу функции быть кодом ассемблера. Указанная функция не будет иметь пролога/эпилога, сгенерированных компилятором. Только базовые asm инструкции могут безопасно включаться в функции без пролога/эпилога (см. Basic 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-7.5.0/gcc/MSP430-Function-Attributes.html

Spec-Zone.ru

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