Spec-Zone.ru › GCC 15

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

Следующие атрибуты функций поддерживаются серверной частью MSP430:

critical

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

Аппаратное обеспечение MSP430 гарантирует, что при входе в функции interrupt прерывания отключены, а при выходе восстанавливает предыдущее состояние прерываний. Поэтому атрибут critical избыточен для функций interrupt.

interrupt

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

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

naked

Этот атрибут позволяет компилятору сформировать необходимое объявление функции, оставляя при этом тело функции написанным на ассемблере. Для заданной функции компилятор не генерирует пролог и эпилог. В функции с атрибутом 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, поскольку они создают более мелкие области, которые проще упаковать.

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-15.3.0/gcc/MSP430-Function-Attributes.html

Spec-Zone.ru

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