|
|
  |
Кто-нибудь что-нибудь скажет плохого/хорошего о Nucleus ? |
|
|
|
Mar 29 2006, 07:13
|
Гуру
     
Группа: СуперМодераторы
Сообщений: 2 065
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 892

|
Цитата(KA_ru @ Mar 29 2006, 10:11)  добавлю про всякие фишечки в Nucleus поддержка разных железок там богаче. В смысле - бывают дрова под железо? Цитата(DASM @ Mar 28 2006, 22:07)  Вроде симпатичная, в 40 кил уложилась.. А сколько RAM скушала? По коду близка к eCos - может, ее [eCos] и имеет смысл ковырять? Но RAM eCos надо немало - 32к самый минимум, 64к - практический минимум. + eCos: * лицензия правильная * виртуальные вектора (точки входа) - так что GPL Вас не колышит, Ваш бинарник может быть слинкован отдельно, и Вы не обязаны код раскрывать * IP, FS - все есть изначально * вполне нормальная по системны возможностям, ближе к "большим" осям, чем к "таск свитчерам" * синтетческий порт на Linux - можно отлаживать логику без железа. В какие камни планируете Nucleus засунуть?
|
|
|
|
|
Mar 29 2006, 11:18
|

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

|
Цитата(DASM @ Mar 28 2006, 23:22)  в данном случае все-таки я просто ищу подходящую ось, доступную в сурцах и без вопросов работающую на маленьких армах. ... Такое ошущение что Автор взял книгу с правилами хорошего тона на "С" и сделал наооборот. ... У Nucleus же код ясный и выглядит красиво. (да и компания Accelerated Technology, подразделение Mentor вряд ли каку сделало). Остальное смогу сказать после нормального запуска её Ну лично я от FreeRTOS отплясывать начал. Правда покромсал уже заметно :-(. Сейчас до 4.00 доросла, добавлены (даже не знаю как назвать, ибо термин Автора "co-routines" явно избит и навевает другие ассоциации) "недозадачи". Kак раз под маленькие с ограниченными ресурсами. В принципе я такое руками обычно пишу, но сама идея стандартизации интересна. Кстати, я посылал Вам когда-то для разборок с MT-Link проектик, так он на практически еще не изменненой FreeRTOS. На счет макросов Вы пожалуй погорячились - почти всегда это упрощает и жизнь, и написание, и понимание. Правда бывают и странно выглядящие, те-же со-routines - посмотрел на образец прибалдел, потом когда посмотрел исходники - долго улыбался. FTP поднимется - скачаю, посмотрю. Если добьетесь более-менее рабочего порта и будет не жалко, выложите? Цитата(DASM @ Mar 28 2006, 23:22)  в данном случае все-таки я просто ищу подходящую ось, доступную в сурцах и без вопросов работающую на маленьких армах. ... Такое ошущение что Автор взял книгу с правилами хорошего тона на "С" и сделал наооборот. ... У Nucleus же код ясный и выглядит красиво. (да и компания Accelerated Technology, подразделение Mentor вряд ли каку сделало). Остальное смогу сказать после нормального запуска её Ну лично я от FreeRTOS отплясывать начал. Правда покромсал уже заметно :-(. Сейчас до 4.00 доросла, добавлены (даже не знаю как назвать, ибо термин Автора "co-routines" явно избит и навевает другие ассоциации) "недозадачи". Kак раз под маленькие с ограниченными ресурсами. В принципе я такое руками обычно пишу, но сама идея стандартизации интересна. Кстати, я посылал Вам когда-то для разборок с MT-Link проектик, так он на практически еще не изменненой FreeRTOS. На счет макросов Вы пожалуй погорячились - почти всегда это упрощает и жизнь, и написание, и понимание. Правда бывают и странно выглядящие, те-же со-routines - посмотрел на образец прибалдел, потом когда посмотрел исходники - долго улыбался. FTP поднимется - скачаю, посмотрю. Если добьетесь более-менее рабочего порта и будет не жалко, выложите?
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Mar 30 2006, 13:29
|
Местный
  
Группа: Свой
Сообщений: 437
Регистрация: 27-08-04
Пользователь №: 551

|
Цитата(zltigo @ Mar 28 2006, 22:43)  главной "изюминкой" которого автор считал быстрое табличное получение максимально приоритетной задачи. C тех пор этот заплесневелый изюм там и лежит :-( Имхо на языке "заплесневелой кабернетики"  это называется двухуровневое восьмиточечное дерево. На каждом уровне которого выполняется линейный поиск. Совершенно очевидно почему восьми и почему линейный. Максимальное время поиска - восемь (семь) сравнений байта на 0 плюс восемь (семь) битовых сдвигов. Имхо вполне разумное и сбалансированное решение. Во всяком случае в вытесняемых осях соизмеримое время занимает сохранение восстановление контекста. Скажем, в scmrtos вообще применяется линейный поиск наиболее приоритетной задачи. На сегодня, имхо, наиболее оптимальный вариант. Harry Zhurov большой респект. Что касается нюклеуса, мне довелось работать с портом под вин32. Осталось впечатление излишне тяжелого апи и не совсем оптимального выбора для относительно слабых контроллеров. Простой пример: пакетный обмен по уарту. Если пакет большой, а фифо маленький , либо вообще отсутствует, что нюклеус, что мюкос - дают огромный оверхед. Для подобных ситуаций в осекоподобных осах есть два типа прерываний - с вызовом ос апи и без такового. Изящный механизм програмных прерываний использовал и Harry Zhurov в последней версии scmrtos.
|
|
|
|
|
Mar 30 2006, 20:49
|
Местный
  
Группа: Свой
Сообщений: 421
Регистрация: 25-12-04
Пользователь №: 1 675

|
Цитата(Evgeny_CD @ Mar 28 2006, 21:53)  Интересно, а Ваша оценка - чем она "интереснее" uCOS? Plus надо сравнивать с eCos - на мой взляд - близнецы-братья. (вот чего мне не хватает в eCos, так это "partition memory" - выделение памяти блоками фиксированного размера (или плохо искал?), другим видом динамической памяти пользоваться боюсь) Цитата(DASM @ Mar 28 2006, 22:08)  ... Скормил я это дело ADS1_2. Собственно только скомпилировал, ну и в main пару нужных вызовов сделал, .... Счас буду вектора нормально ставить и шедулер настраивать. А почему не ASD2.2 ? а чем их среда Nucleus EDGE не устраивает (Eclipse + ADS2.2 + ARMulator, кстати, и демо Plus под Armulator прилагается, без исходников). И такой вопрос - а зачем main? и что понимается под "шедулер настраивать"? разве там есть настройки времени компиляции?
|
|
|
|
|
Mar 30 2006, 21:01
|
Местный
  
Группа: Свой
Сообщений: 421
Регистрация: 25-12-04
Пользователь №: 1 675

|
Цитата(DASM @ Mar 29 2006, 00:22)  ...У Nucleus же код ясный и выглядит красиво. (да и компания Accelerated Technology, подразделение Mentor вряд ли каку сделало)...  "каку сделало" и еще какую, и такое впечатление, что специально - в планировщике запрещали прерывание после доступа к глобальной структуре - две строчки поменяли местами. а что они делают в TCC_Time_Slice (tcc.c) я так и не понял - надо разбираться (порт под Infineon Tricore)
|
|
|
|
|
Mar 31 2006, 05:58
|

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

|
Цитата(ig_z @ Mar 30 2006, 15:29)  Имхо вполне разумное и сбалансированное решение. Ага, если кого устраивают все задачи с разными приоритетами, ну и принципиально ограниченное количество задач. А все остальные должны или "балансировать" уже свои решения, либо переписывать систему.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Mar 31 2006, 06:37
|

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

|
Цитата(zltigo @ Mar 31 2006, 12:58)  Цитата(ig_z @ Mar 30 2006, 15:29)  Имхо вполне разумное и сбалансированное решение.
Ага, если кого устраивают все задачи с разными приоритетами А можно обосновать настоятельную необходимость в задачах с одинаковыми приоритетами? Желательно на примерах. Цитата(zltigo @ Mar 31 2006, 12:58)  , ну и принципиально ограниченное количество задач. Максимальное количество поддерживаемых задач - не прихоть, а компромисс. Чем больше задач, тем больше накладных расходов для их обработки. И сложность планировщика, как следствие. Здесь и проявляется сбалансированность. Цитата(zltigo @ Mar 31 2006, 12:58)  А все остальные должны или "балансировать" уже свои решения, либо переписывать систему. Остальные просто должны взять другую ОС, которая их в этой части удовлетворит. И расплатиться за это накладными расходами по памяти и быстродейтсвию. Если целевой процессор это позволяет. Ничего беслатно не быват, вся жизнь - сгусток компромиссов. Сабжевая ОС (и eCOS) просто толще, чем uCOS, и ниши и них немного другие, хотя и пересекающиеся.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Mar 31 2006, 06:49
|

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

|
Цитата(dxp @ Mar 31 2006, 08:37)  А можно обосновать настоятельную необходимость в задачах с одинаковыми приоритетами? Остальные ... просто должны взять другую ОС, которая их в этой части удовлетворит. И расплатиться за это ... Сабжевая ОС (и eCOS) просто толще, чем uCOS, и ниши и них немного другие, хотя и пересекающиеся. 1.Мы уже, кажется, беседовали на эту тему и с "примерами". Не думаю, что стоит повторять. 2.Что и было сделано. 3.Именно по этой причине я к ней и буду присматриваться, ибо для нижнего уровня выбор сделан (FreeRTOS) и сейчас выбор, либо по мере необходимости самостоятельно развивать возможности, либо что-то eCOS образное в качестве более можной платформы выбрать. Nucleus пока не вдохновил, но буду смотреть еще более пристально.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Apr 1 2006, 05:55
|

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

|
Цитата(zltigo @ Mar 31 2006, 23:38)  Ну в дополнение - вот прямо в текущем проекте у меня обслуживается несколько SHDSL железяк. Они равноправны и асинхроннны друг от друга и их обслуживание не является основным назначением устройства. Чем это не случай одной задачи запущенной несколько раз с одним уровнем приоритета? Какой вариант более "кошерный" нужно изобразить? Обслуживание железяк занимает все вермя? Или таки не все? Видимо, не все, иначе проц просто не справлялся бы с задачей по параметру быстродействие. Тогда, если производительности хватает, то и распределить работу по событиям и приоритетам. Например, задача обрабатывает пакет данных от оной железяки. Обрабоатала - отдала управление. В следующий раз она получит управление, когда придет очередной пакет. Отдав управление (встав на ожидание семафора), задача ждет, а управление переходит следующей задаче, если для нее есть работа (пришел ее пакет данных, о чем был взведен соотвествующий семафаор). Поскольку обе задачи из класса фоновых, то их приоритетность друг относительно друга практически никакой роли не играет. И код получается прозрачным и предсказуемым - управление от одной задачи переходит к другой вполне предсказуемо - от первой (более приоритетной) ко второй - по окончании обработки пакета, к первой - по приходу ее пакета. И эффектиность распределения тут не хуже, чем схеме карусели. И управление полностью по событиям - т.е. более предсказуемо с точки зрения внешних событий. А планировщик такой (чисто приоиритетный) заметно попроще, чем комбинированный (приоритетно-карусельный), а значит занимающий меньше места (это, в общем, мелочь) и работающий быстрее (а вот это уже не мелочь).
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Apr 1 2006, 07:26
|

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

|
Цитата(dxp @ Apr 1 2006, 07:55)  Например, задача обрабатывает пакет данных от оной железяки. Может я не написал прямо, что железяки ОДИНАКОВЫЕ, само устройство по количеству таких железяк масштабируемое, но мне казалось, что это и так понятно. Железки не так, что-бы простые, но и не чрезмерно сложные. Цитата И код получается прозрачным и предсказуемым - управление от одной задачи переходит к другой вполне предсказуемо - от первой (более приоритетной) Вот именно за такое и боролся - по завершению обслуживания первой железки, если требует обслуживания вторая... третья... железка-близнец к обслуживанию ее и переходим. При этом "более приоритетной" здесь явно лишнее. Естественно, что задачи можно делать не комплексные а как Вы предлагаете - ориентированные на железку а ориетнированные на одну из функций железки, а уж с количеством железок путь задача внутри разбирается.... Можно? - МОЖНО! Будет работать - БУДЕТ! Нужет такой подход? - НУЖЕН!, когда комплексная задача начнет превышать критический предел сложности (для конкретного разработчика?) и разбивка ее на задачи запускаемые под упралением системы принесет пользу. Стоит, однако провозглашать такой путь практически единственно правильным? Оперируя постулатами: Цитата "И код получается прозрачным и предсказуемым"
"И эффектиность распределения тут не хуже, чем схеме карусели"
"планировщик такой (чисто приоиритетный) заметно попроще"
"а значит занимающий меньше места (это, в общем, мелочь)"
"работающий быстрее (а вот это уже не мелочь)" Вот тут вынуждет ответить - НЕ ТАК ОДНОЗНАЧНО ВСЕ.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|