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

 
 
> Глобальные данные в FreeRTOS/CMSIS RTOS
simark1979
сообщение Jan 24 2018, 13:42
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 14-03-09
Из: Краснодарский край
Пользователь №: 46 094



Будьте добры, подскажите новичку во FreeRTOS


Есть несколько потоков, которые собирают различные данные с разных устройств, висящих на шинах i2c/uart

Есть таймер, по которому вызывается функция, которая собранные в кучу данные должна выбрасывать хосту через uart

Возможно ли организовать ОДНУ глобальную структуры, в которой каждый поток менял бы только свои данные?
Правильно понимаю, что https://www.keil.com/pack/doc/CMSIS/RTOS/ht...__PoolMgmt.html как раз для таких целей?

Дайте пинка в нужном направлении, спасибо)

Сообщение отредактировал simark1979 - Jan 25 2018, 05:26
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
filip popov
сообщение Jan 25 2018, 09:32
Сообщение #2





Группа: Участник
Сообщений: 6
Регистрация: 25-04-15
Из: г. Карачев, Брянская обл.
Пользователь №: 86 382



Если объем данных невелик, то для этой цели больше подойдут очереди (Queues).
https://www.freertos.org/a00018.html
Go to the top of the page
 
+Quote Post
simark1979
сообщение Jan 25 2018, 12:59
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 14-03-09
Из: Краснодарский край
Пользователь №: 46 094



Цитата(juvf @ Jan 25 2018, 11:40) *
Код
void vTask1( void * pvParameters )
{
     for(;; )
     {
         // Task code goes here.
         // ...
         // The operation is complete.  Restart the RTOS kernel.
         xTaskResumeAll ();
     }
}


Такой вариант был бы неплох, но есть засада:

"Другие API-функции FreeRTOS нельзя вы-
зывать, когда планировщик приостановлен
вызовом vTaskSuspendAll()." Андрей Курниц

А у меня в это время может придти прерывание, где у меня есть работа с семафорами.....

Пожалуй самое оптимальное решение: глобальная структура+мьтексы

Всем спасибо rolleyes.gif

Сообщение отредактировал simark1979 - Jan 25 2018, 13:00
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- simark1979   Глобальные данные в FreeRTOS/CMSIS RTOS   Jan 24 2018, 13:42
- - x893   Объявите переменную нужной структуры и пишите данн...   Jan 24 2018, 14:13
|- - simark1979   Цитата(x893 @ Jan 24 2018, 17:13) Объявит...   Jan 24 2018, 15:19
|- - juvf   Цитата(x893 @ Jan 24 2018, 19:13) Объявит...   Jan 25 2018, 03:10
|- - simark1979   Цитата(juvf @ Jan 25 2018, 06:10) Так нел...   Jan 25 2018, 05:19
|- - juvf   Цитата(simark1979 @ Jan 25 2018, 10:19) P...   Jan 25 2018, 08:40
|- - ViKo   Цитата(simark1979 @ Jan 25 2018, 08:19) P...   Jan 25 2018, 09:46
- - arhiv6   У вас Cortex-M контроллер? Если да, можно атомарно...   Jan 25 2018, 05:53
- - x893   Да как угодно можно сделать атомарную запись. Про ...   Jan 25 2018, 08:29
|- - jcxz   Цитата(filip popov @ Jan 25 2018, 11:32) ...   Jan 25 2018, 18:03
- - kolobok0   Цитата(simark1979 @ Jan 24 2018, 16:42) ....   Jan 25 2018, 17:17
- - simark1979   Всё-таки вернулся к очередям. И уже сделал Мьюте...   Jan 28 2018, 07:45
- - ViKo   Мьютекс задает эксклюзивный доступ к ресурсу, к ст...   Jan 28 2018, 15:20


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

 


RSS Текстовая версия Сейчас: 26th June 2025 - 08:32
Рейтинг@Mail.ru


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