Перейти к содержанию
    

GCC, SVC и Cortex-M0

gcc отказывается компилировать svc для Cortex-M0+ (конкретно - STM32G071): "Error: SVC is not permitted on this architecture". Вызов нужен для преключения контекста в операционке. Кто-нибудь знает почему и как починить (или обойти)?. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А почему не переключаете контекст в PendSV? SVC не нужен для переключения контекста ОС (имхо).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

SVC обычно применяется для переключения из режима User в режим Supervisor, позволяющий использовать привилегированные инструкции. В больших ОС типа Linux SVC используется в системных вызовах. В МК Cortex, как верно указали выше, для переключения контекстов предназначено прерывание PendSV.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Формально SVC должен поддерживаться - https://developer.arm.com/documentation/dui0497/a/the-cortex-m0-instruction-set/miscellaneous-instructions/svc?lang=en

Проверил, мой gcc (arm-none-eabi-gcc (15:12.2.rel1-1) 12.2.1 20221205) с ключами -march=armv6-m -mcpu=cortex-m0 -mfloat-abi=soft -mthumb прекрасно компилирует следующий код:

asm volatile ("svc 0 \n");

ЧЯДНТ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня те же ключи, только gcc постарше - 11.2. Попробую обновить. Пока заменил на PendSV - вроде не обиделась.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Обновил gcc до 13.2 - все равно не катит.

14 hours ago, makc said:

 

asm volatile ("svc 0 \n");

ЧЯДНТ?

Различие только в том, что у меня это в ассемблерном файле.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Axel сказал:

Обновил gcc до 13.2 - все равно не катит.

Различие только в том, что у меня это в ассемблерном файле.

Тогда речь идёт не о GCC, а о GAS из комплекта Binutils. С этого и нужно было начинать.

Добавьте в начало файла строчку:

.cpu cortex-m0

И попробуйте собрать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...