Spec-Zone.ru › GCC 11

Далее: Атрибуты функций 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

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

Spec-Zone.ru

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