|
Как сделать идеологически выдержанно, "в стиле РТОС" |
|
|
|
Dec 9 2016, 11:08
|
Местный
  
Группа: Участник
Сообщений: 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
|
|
|
|
|
 |
Ответов
|
Dec 9 2016, 16:07
|
Местный
  
Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503

|
Цитата(AlexandrY @ Dec 9 2016, 21:55)  Вообще не понял проблемы. Что такое здесь 'парадигма'? У меня на M0 вполне себе MQX крутится. Может вам на MQX перейти?  м.б. сформулировал неудачно, но тема себя исчерпала. Цитата(zltigo @ Dec 9 2016, 22:00)  Вообще-то не только о нем. Для предельно кастрированных платформ, где даже допотопного SWP нет, остается запрет прерывания. Мне, значит, не дано не понять  почему вызов вызов десятков-сотен команд содержащих запреты прерывания вместо просто запрета прерывания назван Вами "без предрасудков". О критических секциях - если если в некой операционке нет оформления критических секций, то это надо дописать, либо выкинуть такую "RTOS" нафиг. Процесс это НЕ семафор. Использование возможностей высокоприоритетного процесса, это нормально. указано что слейв-M0, далее все про слейв возможно стоит отказаться от всех сервисов РТОС, для синронизации использовать обычные переменные, запрещая , где требуется, прерывания не удалось найти места, где бы я утверждал что процесс это семафор.
Сообщение отредактировал nanorobot - Dec 9 2016, 16:13
|
|
|
|
|
Dec 9 2016, 17:24
|

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

|
Цитата(nanorobot @ Dec 9 2016, 18:07)  не удалось найти места, где бы я утверждал что процесс это семафор. Но тем не менее свалили их в одну кучу: Цитата Касательно бреда про семафоры: С небольшой поправкой, что упаковку значений бинарных семафоров в uint_16_t выполнять в процессе с максимальным приоритетом Цитата(nanorobot @ Dec 9 2016, 18:07)  возможно стоит отказаться от всех сервисов РТОС, для синронизации использовать обычные переменные, запрещая , где требуется, прерывания  Перестаньте противопоставлять средства предоставляемой какой то кастрированой RTOS всему спектру приемов программирования.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Dec 9 2016, 17:58
|
Местный
  
Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503

|
Цитата(zltigo @ Dec 9 2016, 23:24)  Но тем не менее свалили их в одну кучу: Что не так? Есть набор бинарных семафоров, значения которых требуется "упаковать" в переменную типа uint16_t. Эту самую упаковку я собираюсь выполнять в процессе(треде, задаче) обладающем наивысшим приоритетом. Ни логических, ни грамматических ошибок не допущено. Ну, возможно, запятую пропустил. Ну так я на Пулитцеровскую премию не претендую.  Будьте доброжелательнее, не упоминайте анусы всуе  Всего доброго.
|
|
|
|
|
Dec 9 2016, 18:07
|

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

|
Цитата(nanorobot @ Dec 9 2016, 19:58)  Что не так? Есть набор бинарных семафоров, значения которых требуется "упаковать" в переменную типа uint16_t. Так это же нарушение 'парадигмы' если я ее правильно понимаю. Основной принцип RTOS - независимость задач, для того чтобы была возможность оценить их планируемость. Вы же целую кучу задач связываете между собой неким общим маршалингом. Это не RTOS, планируемости нет.
|
|
|
|
|
Dec 9 2016, 18:14
|
Местный
  
Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503

|
Цитата(AlexandrY @ Dec 10 2016, 00:07)  Так это же нарушение 'парадигмы' если я ее правильно понимаю. Основной принцип RTOS - независимость задач, для того чтобы была возможность оценить их планируемость. Вы же целую кучу задач связываете между собой неким общим маршалингом. Это не RTOS, планируемости нет. парадигма маршалинга это серьезно... Ну то есть мне удалось обозначить проблему? Я же с тем и пришел, что решения, которые мне видятся, мне не слишком нравятся. Смутно припоминаю в TNKernel был сервис EventFlags вот это очень близко к тому, что требуется. Но не бросать же ChibiOs(в данном случае nil) с которой сроднился Еще: решение, бесспорно, далеко от изящества но насчет планируемости и независимости задач: Каждый битик состояния существует в виде бинарного семафора, и "маршалингу" подвергается исключительно для цели передачи его мастеру. Так что "парадигма" не так уж сильно нарушена...
Сообщение отредактировал nanorobot - Dec 9 2016, 18:49
|
|
|
|
|
Dec 9 2016, 20:19
|

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

|
Если отвлечься от вопроса, зачем мастеру знать состояние семафоров ведомого, то тут всё достаточно прозрачно. Это для ведомого они - семафоры, потому что он их использует как семафоры. То есть, для взаимодействия между процессами (ведь он их для этого использует, да?). А для мастера - это просто некие флаги. Которые вполне можно упаковать в uint16_t (и даже в uint32_t), и передать любым имеющимся способом.
Что же касаемо приоритета процесса, который делает эту упаковку, то тут всё зависит от того, насколько срочно надо отправлять статус мастеру. Если при каждом изменении, то приоритет должен быть повыше (хотя всё равно можно пропустить), но скорее всего надо просто передавать с определённой периодичностью. В этом случае приоритет неважен.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|