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

 
 
> Как сделать идеологически выдержанно, "в стиле РТОС"
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
Ответов
AlexandrY
сообщение Dec 9 2016, 15:55
Сообщение #2


Ally
******

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



Цитата(nanorobot @ Dec 9 2016, 13:08) *
Напрашивается вариант: любое бращение к битам состояния защищать от коллизий доступа с помощью мютекса, но nil их не имеет, а использовать для слейва полную ChibiOs - тяжеловато будет, там и требования к скорости обработки повыше и процессор послабее. Что посоветуют знатоки?


Вообще не понял проблемы. Что такое здесь 'парадигма'?
У меня на M0 вполне себе MQX крутится. Может вам на MQX перейти? biggrin.gif
Go to the top of the page
 
+Quote Post
nanorobot
сообщение Dec 9 2016, 16:07
Сообщение #3


Местный
***

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



Цитата(AlexandrY @ Dec 9 2016, 21:55) *
Вообще не понял проблемы. Что такое здесь 'парадигма'?
У меня на M0 вполне себе MQX крутится. Может вам на MQX перейти? biggrin.gif


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


Цитата(zltigo @ Dec 9 2016, 22:00) *
Вообще-то не только о нем. Для предельно кастрированных платформ, где даже допотопного SWP нет, остается запрет прерывания.

Мне, значит, не дано не понять sm.gif почему вызов вызов десятков-сотен команд содержащих запреты прерывания вместо просто запрета прерывания назван Вами "без предрасудков". О критических секциях - если если в некой операционке нет оформления критических секций, то это надо дописать, либо выкинуть такую "RTOS" нафиг.

Процесс это НЕ семафор. Использование возможностей высокоприоритетного процесса, это нормально.



указано что слейв-M0, далее все про слейв
возможно стоит отказаться от всех сервисов РТОС, для синронизации использовать обычные переменные, запрещая , где требуется, прерывания wink.gif

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

Сообщение отредактировал nanorobot - Dec 9 2016, 16:13
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 9 2016, 17:24
Сообщение #4


Гуру
******

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



Цитата(nanorobot @ Dec 9 2016, 18:07) *
не удалось найти места, где бы я утверждал что процесс это семафор.

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

Цитата(nanorobot @ Dec 9 2016, 18:07) *
возможно стоит отказаться от всех сервисов РТОС, для синронизации использовать обычные переменные, запрещая , где требуется, прерывания wink.gif

Перестаньте противопоставлять средства предоставляемой какой то кастрированой RTOS всему спектру приемов программирования.


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


Местный
***

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



Цитата(zltigo @ Dec 9 2016, 23:24) *
Но тем не менее свалили их в одну кучу:


Что не так? Есть набор бинарных семафоров, значения которых требуется "упаковать" в переменную типа uint16_t. Эту самую упаковку я собираюсь выполнять в процессе(треде, задаче) обладающем наивысшим приоритетом. Ни логических, ни грамматических ошибок не допущено. Ну, возможно, запятую пропустил. Ну так я на Пулитцеровскую премию не претендую. biggrin.gif Будьте доброжелательнее, не упоминайте анусы всуе laughing.gif Всего доброго.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Dec 9 2016, 18:07
Сообщение #6


Ally
******

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



Цитата(nanorobot @ Dec 9 2016, 19:58) *
Что не так? Есть набор бинарных семафоров, значения которых требуется "упаковать" в переменную типа uint16_t.


Так это же нарушение 'парадигмы' если я ее правильно понимаю.
Основной принцип RTOS - независимость задач, для того чтобы была возможность оценить их планируемость.
Вы же целую кучу задач связываете между собой неким общим маршалингом.
Это не RTOS, планируемости нет.


Go to the top of the page
 
+Quote Post
nanorobot
сообщение Dec 9 2016, 18:14
Сообщение #7


Местный
***

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



Цитата(AlexandrY @ Dec 10 2016, 00:07) *
Так это же нарушение 'парадигмы' если я ее правильно понимаю.
Основной принцип RTOS - независимость задач, для того чтобы была возможность оценить их планируемость.
Вы же целую кучу задач связываете между собой неким общим маршалингом.
Это не RTOS, планируемости нет.


парадигма маршалинга это серьезно... blink.gif
Ну то есть мне удалось обозначить проблему? Я же с тем и пришел, что решения, которые мне видятся, мне не слишком нравятся.

Смутно припоминаю в TNKernel был сервис EventFlags вот это очень близко к тому, что требуется. Но не бросать же ChibiOs(в данном случае nil) с которой сроднился

Еще: решение, бесспорно, далеко от изящества но насчет планируемости и независимости задач: Каждый битик состояния существует в виде бинарного семафора, и "маршалингу" подвергается исключительно для цели передачи его мастеру. Так что "парадигма" не так уж сильно нарушена...

Сообщение отредактировал nanorobot - Dec 9 2016, 18:49
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Dec 9 2016, 20:19
Сообщение #8


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Если отвлечься от вопроса, зачем мастеру знать состояние семафоров ведомого, то тут всё достаточно прозрачно.
Это для ведомого они - семафоры, потому что он их использует как семафоры. То есть, для взаимодействия между процессами (ведь он их для этого использует, да?).
А для мастера - это просто некие флаги. Которые вполне можно упаковать в uint16_t (и даже в uint32_t), и передать любым имеющимся способом.

Что же касаемо приоритета процесса, который делает эту упаковку, то тут всё зависит от того, насколько срочно надо отправлять статус мастеру. Если при каждом изменении, то приоритет должен быть повыше (хотя всё равно можно пропустить), но скорее всего надо просто передавать с определённой периодичностью. В этом случае приоритет неважен.


--------------------
Если бы я знал, что такое электричество...
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   Цитата(AHTOXA @ Dec 9 2016, 13:40) Достат...   Dec 9 2016, 13:27
|- - nanorobot   Цитата(zltigo @ Dec 9 2016, 19:27) Именно...   Dec 9 2016, 15:14
|- - zltigo   Цитата(nanorobot @ Dec 9 2016, 17:14) Есл...   Dec 9 2016, 16:00
|- - jcxz   Цитата(nanorobot @ Dec 9 2016, 18:14) Кас...   Dec 13 2016, 21:52
|- - zltigo   Цитата(jcxz @ Dec 13 2016, 23:52) Вы отст...   Dec 13 2016, 22:32
|- - AlexandrY   Цитата(jcxz @ Dec 13 2016, 23:52) Хотя в ...   Dec 14 2016, 08:35
|- - zltigo   Цитата(AlexandrY @ Dec 14 2016, 10:35) Хо...   Dec 14 2016, 09:46
|- - jcxz   Цитата(AlexandrY @ Dec 14 2016, 11:35) Та...   Dec 19 2016, 14:18
|||- - 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 Текстовая версия Сейчас: 22nd July 2025 - 21:25
Рейтинг@Mail.ru


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