Easyelectronics.ru

Электроника для всех
Текущее время: 26 фев 2021, 03:46

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Приоритеты и прерывания
СообщениеДобавлено: 16 май 2020, 21:49 
Старожил

Зарегистрирован: 08 июл 2013, 17:00
Сообщения: 863
Чё-т я запутался...

Есть СТМ32. Хочу, чтобы у запроса на прерывание от таймера, по которому запускается планировщик был наименьший приоритет, у другой периферии более высокий, но чтобы можно было из обработчиков прерываний периферийных устройств вызывать функции ОС, ставящие на выполнение задачи с высоким приоритетом.

Если такое возможно, то покажите, пожалуйста, как такое настроить.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Приоритеты и прерывания
СообщениеДобавлено: 17 май 2020, 01:16 
Старожил
Аватара пользователя

Зарегистрирован: 28 янв 2010, 20:18
Сообщения: 609
Приоритет планировщика 15, прерывания из которых будут вызовы FreeRTOS API могут иметь приоритет не выше 5. Но не забывайте, что внутри FreeRTOS везде используется критическая секция в которой будут запрещены прерывания до этого приоритета 5.

Код:
#define configPRIO_BITS                4        /* 15 priority levels */

#define configKERNEL_INTERRUPT_PRIORITY       (15 << (8 - configPRIO_BITS))
#define configMAX_SYSCALL_INTERRUPT_PRIORITY       (5  << (8 - configPRIO_BITS))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Приоритеты и прерывания
СообщениеДобавлено: 17 май 2020, 10:04 
Старожил

Зарегистрирован: 08 июл 2013, 17:00
Сообщения: 863
Благодарю. Теперь понятно стало.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Приоритеты и прерывания
СообщениеДобавлено: 17 май 2020, 11:19 
Старожил

Зарегистрирован: 08 июл 2013, 17:00
Сообщения: 863
Цитата:
внутри FreeRTOS везде используется критическая секция в которой будут запрещены прерывания до этого приоритета 5.

Поторопился, сказав что понял.
То есть, глядя на пример, планировщик имеет приоритет 15, то есть самый низкий. Вызывать функции ОС я могу из обработчиков прерываний с приоритетом от 0 до 5 включительно, то есть функции с суффиксом "ISR". Из обработчиков с приоритетом от 6 до 15 такие вызов запрещены. Пока понятно.
Теперь насчёт критических секций (КС). Пожалуйста, поясни следующие ситуации использования КС:
а) внутри обработчика с приоритетом 0-5;
б) внутри обработчика 6-16;
в) внутри задач.
Чем может быть прервано выполнение кода внутри КС в этих случаях?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Приоритеты и прерывания
СообщениеДобавлено: 17 май 2020, 12:59 
Старожил

Зарегистрирован: 28 сен 2018, 00:25
Сообщения: 371
Можешь вызывать *ISR из прерываний 6-14, а из 0-5 - нет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Приоритеты и прерывания
СообщениеДобавлено: 20 май 2020, 22:15 
Старожил
Аватара пользователя

Зарегистрирован: 28 янв 2010, 20:18
Сообщения: 609
tonyk писал(а):
Цитата:
внутри FreeRTOS везде используется критическая секция в которой будут запрещены прерывания до этого приоритета 5.

Поторопился, сказав что понял.
То есть, глядя на пример, планировщик имеет приоритет 15, то есть самый низкий. Вызывать функции ОС я могу из обработчиков прерываний с приоритетом от 0 до 5 включительно, то есть функции с суффиксом "ISR". Из обработчиков с приоритетом от 6 до 15 такие вызов запрещены. Пока понятно.
Теперь насчёт критических секций (КС). Пожалуйста, поясни следующие ситуации использования КС:
а) внутри обработчика с приоритетом 0-5;
б) внутри обработчика 6-16;
в) внутри задач.
Чем может быть прервано выполнение кода внутри КС в этих случаях?


Приоритеты у ARM чем меньше число тем выше, как уже заметили. В рамках моего примера, внутри ISR с приоритетом 0-5 будет нельзя делать вызовы FreeRTOS. Внутри ISR с приоритетами 6-15 можно. Выполнение кода внутри КС может быть прервано ISR приоритета 0-5, такие ISR вне FreeRTOS. Но я это вспомнил к тому, что нельзя рассчитывать на детерминированный отклик ISR приоритета 6-15, т.к. повсюду в коде FreeRTOS используются КС.

Возможно, сам приоритет 5 включается в группу из которой можно вызывать ISR (то есть разделение 0-4 и 5-15), не помню такие подробности сейчас. Но это мелочи.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Приоритеты и прерывания
СообщениеДобавлено: 20 май 2020, 23:24 
Старожил

Зарегистрирован: 08 июн 2015, 16:26
Сообщения: 519
Да, приоритет 5 включается в эту группу, я могу подтвердить. Только недавно так делал у себя в одном проекте.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB