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

 
 
> Как сделать идеологически выдержанно, "в стиле РТОС"
nanorobot
сообщение Dec 9 2016, 11:08
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503



Дивайс состоит из двух узлов на STM32 связанных по SPI. Программа как для мастера так и для слейва пишется с использованием RTOS: мастер CortexM4/ChibiOS, слейв - CortexM0/nil(облегченный вариант ChibiOS). Слейв, в частности формирует слово состояния - набор битов, которое передается мастеру, а так же используется самой программой слейва. Причем биты могут использоваться в разных тредах(процессах). С точки зрения парадигмы RTOS они являются об'ектами синхронизации процессов. В этом случае они должны иметь тип BinarySemaphore с другой стороны для передачи слова состояния мастеру они(биты) должны быть упакованы в переменную типа uint16_t. Сейчас у меня используется union одно поле которого битовая структура, другое поле uint16_t. Покамест УМВР, но беспокоят возможные проблемы из за отхода от парадигмы RTOS. Напрашивается вариант: любое бращение к битам состояния защищать от коллизий доступа с помощью мютекса, но nil их не имеет, а использовать для слейва полную ChibiOs - тяжеловато будет, там и требования к скорости обработки повыше и процессор послабее. Что посоветуют знатоки?

Сообщение отредактировал nanorobot - Dec 9 2016, 12:07
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zltigo
сообщение Dec 9 2016, 13:27
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(AHTOXA @ Dec 9 2016, 13:40) *
Достаточно обеспечить атомарность доступа. Для этого можно просто запрещать прерывания на время записи переменной.

Именно так, но это если в лоб. А вообще на Corteх кроме заперта прерываний, есть еще два механизма обеспечения атомарного доступа. Не считая комбинированных.
То что тут начали нести про семафоры и иже с ними, есть офигительный бред в стиле через анус, а не в "стиле RTOS".

Цитата(nanorobot @ Dec 9 2016, 14:18) *
почему то напрягает лишний раз прерывания запрещать. Такой вот предрассудок...

Невежество sad.gif. Вы думаете, что в вызовах всяких семафоров с мютексами нет критических секций sm.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
nanorobot
сообщение Dec 9 2016, 15:14
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503



Цитата(zltigo @ Dec 9 2016, 19:27) *
Именно так, но это если в лоб. А вообще на Corteх кроме заперта прерываний, есть еще два механизма обеспечения атомарного доступа. Не считая комбинированных.
То что тут начали нести про семафоры и иже с ними, есть офигительный бред в стиле через анус, а не в "стиле RTOS".


Невежество sad.gif. Вы думаете, что в вызовах всяких семафоров с мютексами нет критических секций sm.gif


Если Вы имели в виду BitBanding и команды LDREX/STREX то выше указано, что речь идет про cortex M0.
Я в курсе про наличие критических секций в обработке мютексов и семафоров, мой "предрассудок" имеет отношение чисто к "ручному" запрету прерываний,
отдавая предпочтение готовым сервисам, то есть в "стиле RTOS" . Кроме того в этом утверждении была некотороя доля (само)иронии.

Касательно бреда про семафоры: С небольшой поправкой, что упаковку значений бинарных семафоров в uint_16_t выполнять в процессе с максимальным приоритетом
это решение перестает быть "бредом".

Спасибо, что уделили внимание моей персоне.

Сообщение отредактировал nanorobot - Dec 9 2016, 15:26
Go to the top of the page
 
+Quote Post
jcxz
сообщение Dec 13 2016, 21:52
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(nanorobot @ Dec 9 2016, 18:14) *
Касательно бреда про семафоры: С небольшой поправкой, что упаковку значений бинарных семафоров в uint_16_t выполнять в процессе с максимальным приоритетом
это решение перестает быть "бредом".

Добавлю ещё один способ обеспечения атомарности доступа (касательно задач, но не ISR-ов) - временный запрет шедулера. Если такое поддерживает Ваша ОС.
Хотя в Вашем случае несомненно использовать надо критические секции aka запрет прерываний.
А фобии надо преодолевать....

Цитата(zltigo @ Dec 11 2016, 11:22) *
Все даже лучше, чем в, например, uCOS у которой даже задач с одинаковыми приоритетами не существует.

Вы отстали от жизни. Откройте для себя uCOS-III. 1111493779.gif
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Dec 14 2016, 08:35
Сообщение #5


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(jcxz @ Dec 13 2016, 23:52) *
Хотя в Вашем случае несомненно использовать надо критические секции aka запрет прерываний.


Кто-то еще запрещает прерывания в Cortex-M?

Там давно уже все уважающие себя RTOS не запрещают прерывания, а просто поднимают приоритет.
Кстати в uCOS тоже нет запрета прерываний, а есть подъем приоритета, как и в MQX.

Цитата(zltigo @ Dec 11 2016, 13:50) *
Я считаю правильным оценивать возможности операционных систем по их ядру, а не по наличию "штатных" прибуд типа поддержек SPI, прикрученных разных библиотек или возможности запуска Microsoft Word.


Хотел бы я посмотреть как линукс будут обсуждать отдельно от файловой абстракции, сетевого стека, управления памятью, загрузки ппроцессов и проч.
В MQX межпроцессорное взаимодействие это часть ядра. Там все сервисы (задачи, семафоры, ивенты...) предусматривают расположение на разных ядрах.
Так что... laughing.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 14 2016, 09:46
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(AlexandrY @ Dec 14 2016, 10:35) *
Хотел бы я посмотреть как линукс будут обсуждать отдельно....

Естественно, что не обсуждают, по тому, что нынешние виндовсы с массовыми линуксами есть один комок со всеми потрохами включая не только стеки, но уже де-факто и приложения sad.gif. Только это совершенно не отрицает и нормального модульного построения систем. Тем более для кортексов M0/M3 которыми здесь Автор озаботился.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- nanorobot   Как сделать идеологически выдержанно, "в стиле РТОС"   Dec 9 2016, 11:08
- - novikovfb   Цитата(nanorobot @ Dec 9 2016, 14:08) Нап...   Dec 9 2016, 11:33
|- - nanorobot   Цитата(novikovfb @ Dec 9 2016, 17:33) а ч...   Dec 9 2016, 11:42
|- - novikovfb   Цитата(nanorobot @ Dec 9 2016, 14:42) Это...   Dec 9 2016, 11:56
|- - nanorobot   Цитата(novikovfb @ Dec 9 2016, 17:56) Это...   Dec 9 2016, 12:18
- - AHTOXA   Цитата(nanorobot @ Dec 9 2016, 16:08) Нап...   Dec 9 2016, 11:40
|- - zltigo   Цитата(nanorobot @ Dec 9 2016, 17:14) Есл...   Dec 9 2016, 16:00
|- - zltigo   Цитата(jcxz @ Dec 13 2016, 23:52) Вы отст...   Dec 13 2016, 22:32
|- - jcxz   Цитата(AlexandrY @ Dec 14 2016, 11:35) Та...   Dec 19 2016, 14:18
- - AlexandrY   Цитата(nanorobot @ Dec 9 2016, 13:08) Нап...   Dec 9 2016, 15:55
- - nanorobot   Цитата(AlexandrY @ Dec 9 2016, 21:55) Воо...   Dec 9 2016, 16:07
- - zltigo   Цитата(nanorobot @ Dec 9 2016, 18:07) не ...   Dec 9 2016, 17:24
|- - nanorobot   Цитата(zltigo @ Dec 9 2016, 23:24) Но тем...   Dec 9 2016, 17:58
|- - AlexandrY   Цитата(nanorobot @ Dec 9 2016, 19:58) Что...   Dec 9 2016, 18:07
||- - nanorobot   Цитата(AlexandrY @ Dec 10 2016, 00:07) Та...   Dec 9 2016, 18:14
||- - AHTOXA   Если отвлечься от вопроса, зачем мастеру знать сос...   Dec 9 2016, 20:19
|||- - nanorobot   Цитата(AHTOXA @ Dec 10 2016, 02:19) Если ...   Dec 9 2016, 21:35
|||- - zltigo   Цитата(nanorobot @ Dec 9 2016, 23:35) Тем...   Dec 10 2016, 08:16
||||- - nanorobot   Цитата(zltigo @ Dec 10 2016, 14:16) Плохо...   Dec 10 2016, 09:30
||||- - AlexandrY   Цитата(nanorobot @ Dec 10 2016, 11:30) Кр...   Dec 10 2016, 20:28
||||- - zltigo   Цитата(nanorobot @ Dec 10 2016, 11:30) По...   Dec 10 2016, 21:03
||||- - AlexandrY   Цитата(zltigo @ Dec 10 2016, 23:03) Это с...   Dec 10 2016, 22:32
||||- - zltigo   Цитата(AlexandrY @ Dec 11 2016, 00:32) Кс...   Dec 11 2016, 08:22
||||- - AlexandrY   Цитата(zltigo @ Dec 11 2016, 10:22) Посмо...   Dec 11 2016, 10:02
||||- - zltigo   Цитата(AlexandrY @ Dec 11 2016, 12:02) Но...   Dec 11 2016, 11:50
|||- - sanny444   Цитата(nanorobot @ Dec 9 2016, 21:35) Все...   Jul 13 2017, 06:55
||- - AlexandrY   Цитата(nanorobot @ Dec 9 2016, 20:14) Так...   Dec 9 2016, 21:15
|- - zltigo   Цитата(nanorobot @ Dec 9 2016, 19:58) Что...   Dec 9 2016, 20:33
- - AlexandrY   Цитата(nanorobot @ Dec 9 2016, 18:07) м.б...   Dec 9 2016, 17:25


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

 


RSS Текстовая версия Сейчас: 30th July 2025 - 15:13
Рейтинг@Mail.ru


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