Spec-Zone.ru › GCC 8

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

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

critical

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

interrupt

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

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

naked

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

Spec-Zone.ru

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