реклама на сайте
подробности

 
 
> Взаимодействие между задачами, Как правильнее ?
MiklPolikov
сообщение Aug 24 2015, 23:53
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Коллеги, добрый день.
Наболел вопрос:

Есть задача А , которая управляет всей системой в целом.
Есть задача Б, которая управляет соединением USB , в ней крутится цикл с приёмом данных из очереди.
USB надо "включать" и "выключать" при отключении/подключении устройства к USB шине. Просто удалить задачу Б неправильно.
Если это делать путём передачи в задачу Б команды через очередь или симафор, то эту очередь/симафор надо поллить в цикле, который там крутится.
Если это делать путём сознания задачи В, которая закрывает задачу Б сделав нужные действия с USB, то получается слишком громоздкий код.
Как быть ? Возможно придуман какой-то стандартный путь ? Или я вообще чего-то не понимаю, и неправильно рассуждаю изначально ?

МП


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
yes
сообщение Aug 26 2015, 10:12
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



> Если это делать путём передачи в задачу Б команды через очередь или симафор, то эту очередь/симафор надо поллить в цикле, который там крутится.

семафоры и очереди работают не так (по крайней мере в FreeRTOS и в остальном, что я видел) - при ожидании семафора или очереди задача отключается, ничего там не крутится. а включается когда семафор освободит другая задача/прерывание или в очередь что-то положат

> А есть во FreeRTOS Сигналы (События), по которым задача и запускается? Должны быть.

нету. зачем они нужны если есть семафоры? ну то есть FreeRTOS ориентирована на минимализацию ресурсов, поэтому много чего там нет, но это много чего не принципиально
Go to the top of the page
 
+Quote Post
ViKo
сообщение Aug 26 2015, 10:28
Сообщение #3


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(yes @ Aug 26 2015, 13:12) *
нету. зачем они нужны если есть семафоры? ну то есть FreeRTOS ориентирована на минимализацию ресурсов, поэтому много чего там нет, но это много чего не принципиально

Кейловская CMSIS-RTOS RTX попроще будет, а Сигналы есть. Например, можно ждать сигналы от нескольких задач. Просто, красиво, удобно.
Код
  for (;; ) {
    osSignalWait(0x0003, osWaitForever);    // Ждать сигналы от ПЛИС и Main
    ...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- MiklPolikov   Взаимодействие между задачами   Aug 24 2015, 23:53
- - zltigo   QUOTE (MiklPolikov @ Aug 25 2015, 02:53) ...   Aug 25 2015, 04:30
|- - MiklPolikov   Цитата(zltigo @ Aug 25 2015, 07:30) ...   Aug 25 2015, 17:20
|- - zltigo   QUOTE (MiklPolikov @ Aug 25 2015, 20:20) ...   Aug 25 2015, 17:24
|- - MiklPolikov   Цитата(zltigo @ Aug 25 2015, 20:24) Ничег...   Aug 25 2015, 17:37
|- - zltigo   QUOTE (MiklPolikov @ Aug 25 2015, 20:37) ...   Aug 25 2015, 17:56
- - ViKo   Цитата(MiklPolikov @ Aug 25 2015, 02:53) ...   Aug 25 2015, 18:17
- - aaarrr   Цитата(MiklPolikov @ Aug 25 2015, 02:53) ...   Aug 25 2015, 18:45
- - AlexandrY   Цитата(MiklPolikov @ Aug 25 2015, 02:53) ...   Aug 25 2015, 19:16
|- - AlexandrY   Цитата(ViKo @ Aug 26 2015, 13:28) Кейловс...   Aug 26 2015, 11:03
|- - ViKo   Цитата(AlexandrY @ Aug 26 2015, 14:03) Ес...   Aug 26 2015, 11:12
|- - AlexandrY   Цитата(ViKo @ Aug 26 2015, 14:12) Не могу...   Aug 26 2015, 12:08
|- - zltigo   QUOTE (AlexandrY @ Aug 26 2015, 15:08) Я ...   Aug 26 2015, 12:16
- - ViKo   У меня мьютекс один, ограничивает доступ к буферу ...   Aug 26 2015, 12:46
- - zltigo   QUOTE (ViKo @ Aug 26 2015, 15:46) У меня ...   Aug 26 2015, 17:11


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st June 2025 - 17:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01371 секунд с 7
ELECTRONIX ©2004-2016