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

 
 
> scmRTOS - где семафоры?
bmf
сообщение Jun 9 2005, 09:09
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 146
Регистрация: 6-01-05
Из: Украина
Пользователь №: 1 831



Хотел попробовать, стал разбираться и не нашел семафоров.
Может я чего не понял?
Есть TEventFlag - но это немножко другое (после "сигнала" все процессы,
ожидающие указанное событие, будут переведены в состояние готовых к выполнению)
Более похож TMutex - но тоже вроде не то.
Кто работал? В чем фишка?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
bmf
сообщение Jun 14 2005, 17:50
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 146
Регистрация: 6-01-05
Из: Украина
Пользователь №: 1 831



Знаю что не влезет на мегу8, поэтому и ищу вариант для уже написанного кода в jacOS, и в силу некоторых причин надо на preemptive OS.

Напомню, что основный вопрос разногласий "а чем smсRTOS хуже ucos (по концепции построения)"

Вы все прекрасно понимаете.

Возмите API, посмотрите возможности ядра
количество поддерживаемых задач - сколько вы будете делать bitmapsearch (поиск приоритета) для всех? Уснуть можно.
EventFlag в 1 bit - и это полноценный флаг?, вы их наплодите ровно в 8 или 16 раз больше, и соответсвенно займете память.
семафоры
коды возврата вcех функций
обращения по именам
таймауты
различные состояния задачи
еще много чего ....

Принципы построения ядра, когда все задачи и очереди укладываются в байт или нужно орнанизовавать их список и по нему лазить - различаются существенно, и то что не надо для одной необходимо для другой.

Вы скажете что вам всего этого и не нужно, и правильно.
Если покупаете запорожец, то вы знаете зачем и для чего он вам нужен, а вы пытаетесь впарить его как мерс.
Как smcRTOS запорожец по отношению ucos, так и оная тоже самое по отношению скажем mITRON.

Просто надо в документации нормально объяснить эти моменты, что все только ради максимального уменьшения и простоты кода, и в результате вы получите сильно обрезанное API, всем понятно, все юзают и довольны.

Сам юзер должен решать что ему нужно, подставляя небходимые ему опции компиляции, и получая ядро с теми возможностями, которые ему нужны и желательно из всего типового API.
А так получается что даже для целей обучения, несмотря на ясность и элегантность кода, полноценно нельзя использовать, ввиду отсутствия стандартных элементов синхронизации.
Назовите хотя бы одну OC без семафора - элементарного элемента синхронизации, и полноценно поддержать который можно только на уровне ядра.
Или "Такое планирование несколько сложнее простого приоритетного, а преимущества как-то не особенно заметны."
А что плохово в том, что задачи одного приоритета крутятся по Round-Robin, не хочешь - не используй, а равноправных задач в проекте тоже может быть достаточно.

Вот после устранения указанных недочетов (и конечно портируемости) она действительна станет серьезным конкурентом ucos.
И проблем переписать ее на простом C для улучшения портируемости нет никаких, только вся целостность как ОС сразу пропадет.
Кстати bitmapserch в нормальных процессорах эта одна ассемблерная команда за один такт, здесь в том же ucos прощелкали, эту возможность, чтобы вынесте ее в порт.

Насчет макроса, здесь я ошибся, использую свой порт, а там от оригинального ucos мало чего осталось, но такая возможность принципиально есть.

Про прерывание я имел ввиду случай, когда не надо будет переключать контекст при ввходе/выходе, в smcRTOS это обязательно, независимо от будет ли выполняться само переключение, таких ситуаций в жизни предостаточно.

Воспринимайте сказанное как стороннюю оценку, насколько объективную вы сами решите, мне по большому счету побарабану, я просто высказываю свое мнение.
И кстати почему то все солидные фирмы скромно называют свою embedded RTOS - или кернелом или биосом и только новоиспеченные кричат о свох продуктах как о OS, до которой в полном смысле этого слова им ... .
smcKernel отражало внутренности гораздо вернее. Даже в ucos потом дописали "Real-Time kernel".
Go to the top of the page
 
+Quote Post
dxp
сообщение Jun 15 2005, 05:47
Сообщение #3


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(bmf @ Jun 14 2005, 23:50)
Знаю что не влезет на мегу8,

А к чему тогда рассуждения про академичность? Есть реальная задача, есть потребность в интрументе для ее решения, есть адекватный инструмент. Найдите другое, такое же по характеристикам и лишенное указанных Вами недостатков?! Очень интересно посмотреть.

Цитата(bmf @ Jun 14 2005, 23:50)
Напомню, что основный вопрос разногласий "а чем smсRTOS хуже ucos (по концепции построения)"

Основной вопрос - почему в scmRTOS нет простого бинарного семафора (что и тема отражает). А остальная дискуссия развернулась по поводу Ваших замечаний насчет состава, реализации, документации, кривизны архитектуры AVR, которые имеют, извините, не очень много общего с действительностью.

Цитата(bmf @ Jun 14 2005, 23:50)
Возмите API, посмотрите возможности ядра
количество поддерживаемых задач - сколько вы будете делать bitmapsearch (поиск приоритета) для всех? Уснуть можно.

Да, только спать придется недолго. На MSP430 при 5 МГц тактовой (не самая скорость, прямо скажем) проверка признака активности процесса занимает 1.2 мкс. 8-й процесс будет обслужен на 8* 1.2=9.6 мкс позже первого, самого приоритетного, 15-й - на 18 мкс. Учитывая, что низкоприоритетные процессы, мягко говоря, не требуют мгновенной реакции, то добавка в несколько микросекунд для них совершенно ничего не решает. А для приоритетных, которым надо побыстрее, все получаестя максимально шустро. Что и надо. Еще раз повторю, что данный тривиальный механизм тут канает только благодаря исходной ориентированности на малое количество процессов. В этом ключевая фишка.

Цитата(bmf @ Jun 14 2005, 23:50)
EventFlag в 1 bit - и это полноценный флаг?, вы их наплодите ровно в 8 или 16 раз больше, и соответсвенно займете память.

??? А сколько бит должен быть EventFlag? Это бинарный семафор. Сколько событий в системе, нуждающихся в синхронизации, столько и флагов. Все логично. Что не так?

Цитата(bmf @ Jun 14 2005, 23:50)
семафоры

Что с ними не так? За исключением отсутствия горячо любимого Вами простого бинарного семафора.

Кстати, не приведете ли реальную задачу, где он реально нужен? Очень интересно рассмотреть ситуацию, которую нельзя обойти в scmRTOS за неимением оного семафора.

Цитата(bmf @ Jun 14 2005, 23:50)
коды возврата вcех функций

Каких всех функций? Функций сервисов? Если Вы имеете в виду возвращаемый код ошибки в сервисах uCOS, то, имхо, это как раз слабое место этой ОС! Ведь это рантаймные проверки, и тут два принципиальных недостатка. Первое - это оврехед. Но это полбеды. Второе и главное - это то, что проверять/обрабатывать эти ошибки в ембеддед системе некому. Вот представьте, что функция pend вернула код ошибки - например, тип объекта не соответствует функции. Кто проверяет и обрабатывает код ошибки? Писать специальный код? Ну хорошо, написали. Что дальше? В лог его занести? Занесли. Что дальше? Программа-то от этого работоспособной не станет - все это годится только как средство отладки.

Я специально спрашивал знакомых, кто пользуется uCOS, как они обходят эту ситуацию. Отвечают, что никак - не обрабатывают коды ошибок (только при отладке).

Так не более ли правильно все, что можно проверить на этапе компиляции, проверить на этапе компияции. Возложить эту работу на компилятор - статическая проверка типов - одна из ключевых концепций С++ (да и С, в общем-то, тоже). И тогда ни оверхеда, ни ошибок, делающих программу неработоспособной. Что и реализовано в scmRTOS: все сервисные объекты - отдельные типы, их нельзя использовать неправильно (и пользователь имеет доступ только к интерфейсу, но не к представлению) в смысле случайной ошибки (понятно, что от преднамеренного взлома ни язык, ни компилятор не защитят, но этого и не требуется).

Цитата(bmf @ Jun 14 2005, 23:50)
обращения по именам

Не понял, что имеется в виду.

Цитата(bmf @ Jun 14 2005, 23:50)
таймауты

Что не так с таймаутами?

Цитата(bmf @ Jun 14 2005, 23:50)
различные состояния задачи
еще много чего ....

Какие состояния? Если упомнинаете что-то, то уж пожалуйста объясните по-подробнее, что имеется в виду, чтобы не гадать.

Цитата(bmf @ Jun 14 2005, 23:50)
Вы скажете что вам всего этого и не нужно, и правильно.
Если покупаете запорожец, то вы знаете зачем и для чего он вам нужен, а вы пытаетесь впарить его как мерс.
Как smcRTOS запорожец по отношению ucos, так и оная тоже самое по отношению скажем mITRON.

Ну, если запорожец ездит быстрее мерса, если пользоваться им проще и комфортнее, то да. biggrin.gif


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- bmf   scmRTOS - где семафоры?   Jun 9 2005, 09:09
- - ig_z   Цитата(bmf @ Jun 9 2005, 12:09)Хотел попробов...   Jun 9 2005, 10:23
- - bmf   ЦитатаТак ведь автор вполне ясно сказал, что семаф...   Jun 9 2005, 12:24
|- - ig_z   Цитата(bmf @ Jun 9 2005, 15:24)ЦитатаТак ведь...   Jun 9 2005, 13:58
|- - dxp   Цитата(bmf @ Jun 9 2005, 18:24)ЦитатаТак ведь...   Jun 10 2005, 06:25
- - bmf   В доке к версии 2.0 такого обзаца нет. Думаю что к...   Jun 9 2005, 14:41
|- - dxp   Цитата(bmf @ Jun 9 2005, 20:41)В доке к верси...   Jun 10 2005, 06:38
|- - IgorKossak   Цитата(bmf @ Jun 9 2005, 17:41)В доке к верси...   Jun 17 2005, 11:17
|- - dxp   Цитата(IgorKossak @ Jun 17 2005, 17:17)А чем,...   Jun 20 2005, 04:14
- - bmf   ЦитатаНадо бы уточнить, что Вы понимаете под терми...   Jun 10 2005, 08:42
|- - dxp   Цитата(bmf @ Jun 10 2005, 14:42)ЦитатаНадо бы...   Jun 10 2005, 09:57
- - bmf   Спасибо за идеи. В принципе если есть исходники, т...   Jun 10 2005, 11:41
|- - dxp   Цитата(bmf @ Jun 10 2005, 17:41)Дя и сомнения...   Jun 10 2005, 12:09
- - bmf   Не знаю, впринципе всего десяток функций, там и со...   Jun 10 2005, 12:59
|- - dxp   Цитата(bmf @ Jun 10 2005, 18:59)Не знаю, впри...   Jun 10 2005, 13:28
- - bmf   Ну например, для тойже uCos - реакция на прерывани...   Jun 10 2005, 16:57
|- - dxp   Цитата(bmf @ Jun 10 2005, 22:57)Ну например, ...   Jun 14 2005, 06:00
- - bmf   И еще, посмотрите как в uCos ищется самая приорите...   Jun 10 2005, 19:39
|- - dxp   Цитата(bmf @ Jun 11 2005, 01:39)И еще, посмот...   Jun 14 2005, 06:20
- - bmf   А если реализовывать по честному семафоры (как в т...   Jun 11 2005, 09:22
|- - dxp   Цитата(bmf @ Jun 11 2005, 15:22)А если реализ...   Jun 14 2005, 06:32
|- - dxp   Цитата(bmf @ Jun 14 2005, 23:50)Просто надо в...   Jun 15 2005, 05:51
|- - dxp   Цитата(bmf @ Jun 14 2005, 23:50)И проблем пер...   Jun 15 2005, 06:53
- - bmf   На каждый ваш лист, я смогу аргументированно ответ...   Jun 15 2005, 17:25
- - bmf   Теперь о позитиве. ЦитатаОна никогда не станет ко...   Jun 17 2005, 05:12
- - bmf   Придется его такой и использовать. Просто в оригин...   Jun 17 2005, 12:52
- - bmf   Да все уже получилось не так, как вначале задумавы...   Jun 21 2005, 17:39


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

 


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


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