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

 
 
> Глобальные данные в 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
Ответов
x893
сообщение Jan 24 2018, 14:13
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



Объявите переменную нужной структуры и пишите данные туда раз все меняют только свои данные.
Go to the top of the page
 
+Quote Post
juvf
сообщение Jan 25 2018, 03:10
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(x893 @ Jan 24 2018, 19:13) *
Объявите переменную нужной структуры и пишите данные туда раз все меняют только свои данные.

Так нельзя. Можно, если только все операции записи в структуру атомарные.

Я бы сделал глобальную структуру и при записи/чтении уходил бы в критическую секцию.
Go to the top of the page
 
+Quote Post
simark1979
сообщение Jan 25 2018, 05:19
Сообщение #4


Участник
*

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



Цитата(juvf @ Jan 25 2018, 06:10) *
Так нельзя. Можно, если только все операции записи в структуру атомарные.

Я бы сделал глобальную структуру и при записи/чтении уходил бы в критическую секцию.


Старался не пользоваться критическими секциями, но тут вы наверное правы, по идее операции быстрые, лагов с переключениями тасков быть не должно.
Буду пробовать.

Cпасибо)

PS. если у кого есть другие идеи, просьба отозваться.
Go to the top of the page
 
+Quote Post
juvf
сообщение Jan 25 2018, 08:40
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(simark1979 @ Jan 25 2018, 10:19) *
PS. если у кого есть другие идеи, просьба отозваться.

Код
void vTask1( void * pvParameters )
{
     for(;; )
     {
         // Task code goes here.

         // ...

         // At some point the task wants to perform a long operation during
         // which it does not want to get swapped out.  It cannot use
         // taskENTER_CRITICAL ()/taskEXIT_CRITICAL () as the length of the
         // operation may cause interrupts to be missed - including the
         // ticks.

         // Prevent the RTOS kernel swapping out the task.
         vTaskSuspendAll ();

         // Perform the operation here.  There is no need to use critical
         // sections as we have all the microcontroller processing time.  
         // During this time interrupts will still operate and the RTOS kernel
         // tick count will be maintained.

         // ...

         // The operation is complete.  Restart the RTOS kernel.
         xTaskResumeAll ();
     }
}


Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- simark1979   Глобальные данные в FreeRTOS/CMSIS RTOS   Jan 24 2018, 13:42
|- - simark1979   Цитата(x893 @ Jan 24 2018, 17:13) Объявит...   Jan 24 2018, 15:19
|- - 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
- - filip popov   Если объем данных невелик, то для этой цели больше...   Jan 25 2018, 09:32
|- - simark1979   Цитата(juvf @ Jan 25 2018, 11:40) Код voi...   Jan 25 2018, 12:59
|- - 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 Текстовая версия Сейчас: 11th August 2025 - 13:22
Рейтинг@Mail.ru


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