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

STM32F072 Cortex-M0 Имплементация мюьтекса

Применил в устройстве STM32F072. Прельстило USB без внешнего кварца. Задача решалась элементарная - прокси между проприетарным устройством и компом. STM32 в режиме SPI slave с одной стороны получает / принимает данные по SPI от другого девайса, с другой стороны обрабатывает их и через CDC USB передаёт на комп, а от него принимает команды. RTOS не используются. Возникла подзадача - нужны объекты синхронизации, хотя-бы самый простейший - мьютекс.

 

-Инструкций LDREX/STREX у M0 нет, соответственно релизовать семафор/мьютекс как в M3 нельзя

-Bit banding тоже нет, с помощью него тоже вопрос не решить

 

Может быть есть каки-нибудь варианты кроме варварского запрета прерываний? Вроде семафоры есть в FreeRTOS, но использовать её не хочется, и встречал где-то информацию что там всё равно испольщуется disable_irq которого хочется избежать.

 

 

 

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


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

disable_irq - не избежать на M0. И ничего плохого в этом нет, если правильно пользоваться.

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


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

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

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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