rtos или нет, выбор rtos

Про байтики и логику ЭБУ
Post Reply
User avatar
Sergey89
contributor
contributor
Posts: 839
Joined: Wed Sep 25, 2013 5:30 pm
Location: Russia, Velikiy Novgorod

rtos или нет, выбор rtos

Post by Sergey89 »

Хорошо бы разобраться с архитектурой для начала и решить ключевые вопросы. Только так получится объединить усилия в одном коде. И если использовать ОС, то хочется рассмотреть вот этот вариант http://erika.tuxfamily.org/drupal/
frig
contributor
contributor
Posts: 569
Joined: Wed Oct 23, 2013 8:05 pm

Re: как поженить ежа и ужа

Post by frig »

Sergey89, чем плохо то, что есть сейчас? Нужны же какие-то объективные причины для смены одного на другое.
Сейчас есть весьма скромный функционально, но работающий код и неплохая база. Некоторое количество принципиальных проблем уже решены, дальше надо наращивать. Железяка с большим запасом по производительности, так что на первом месте могут быть не ресурсы. Почему-бы не взять то, что есть сейчас и не продолжить?
На RTOS там возложено не так много, и код, в общем то, неплох и при желании его можно будет использовать в других местах. В этом, как я понимаю, одна из основных идей. Захочется сменить os - это не будет смертельно сложно. Захочется вообще ее выкинуть - тоже самое.
Но стоит ли сейчас распыляться на мелочи, когда есть хороший запас и место для маневра?
skype: frig_frig
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: как поженить ежа и ужа

Post by AndreyB »

Sergey89 wrote:вариант http://erika.tuxfamily.org/drupal/
Знакомство с этим вариантом началось с 404 ошибки :( http://software.evidence.eu.com/ee_210/IDE/EE_RT-Druid-2.1.0-juno-win32-x86_64.zip
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
Sergey89
contributor
contributor
Posts: 839
Joined: Wed Sep 25, 2013 5:30 pm
Location: Russia, Velikiy Novgorod

Re: как поженить ежа и ужа

Post by Sergey89 »

32 битная версия с их сайта качается, а 64 битная со стороннего нет.
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: как поженить ежа и ужа

Post by Maxi »

frig wrote:Sergey89, чем плохо то, что есть сейчас? Нужны же какие-то объективные причины для смены одного на другое.
Сейчас есть весьма скромный функционально, но работающий код и неплохая база. Некоторое количество принципиальных проблем уже решены, дальше надо наращивать. Железяка с большим запасом по производительности, так что на первом месте могут быть не ресурсы. Почему-бы не взять то, что есть сейчас и не продолжить?
На RTOS там возложено не так много, и код, в общем то, неплох и при желании его можно будет использовать в других местах. В этом, как я понимаю, одна из основных идей. Захочется сменить os - это не будет смертельно сложно. Захочется вообще ее выкинуть - тоже самое.
Но стоит ли сейчас распыляться на мелочи, когда есть хороший запас и место для маневра?
примитивный шедулер без таймслотов. с корпоративной многозадачностью там вообще беда.
osek сертифицированная система гораздо более продуманные в этом плане.
frig
contributor
contributor
Posts: 569
Joined: Wed Oct 23, 2013 8:05 pm

Re: как поженить ежа и ужа

Post by frig »

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

Я буду очень благодарен, если вы расскажете подробнее, чем все это грозит и почему это не преждевременная оптимизация, а именно сейчас об этом думать самое время. Лучшее враг хорошего. Иногда и так бывает.
Спасибо.
skype: frig_frig
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: как поженить ежа и ужа

Post by AndreyB »

Maxi wrote:примитивный шедулер без таймслотов. с корпоративной многозадачностью там вообще беда.
osek сертифицированная система гораздо более продуманные в этом плане.
Это к ChibiOS относится? Вроде бы я вижу константу CH_TIME_QUANTUM
"This constant is the number of system ticks allowed for the
* threads before preemption occurs. Setting this value to zero
* disables the preemption for threads with equal priority and the
* round robin becomes cooperative. Note that higher priority
* threads can still preempt, the kernel is always preemptive."

Отдельный вопрос, зачем нам вообще шедулер - вроде бы все наши потоки в основном должны СПАТЬ, а если они и не спят - то работы у них по 100 тактов.
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: как поженить ежа и ужа

Post by Maxi »

Суть OSEK сертифицированной OS в том что каждой задаче можно присвоить или задержку старта или периодичность. после чего на уровне компилятора происходит построение такой структуры таймслотов которая обепечивает наиболее рациональное распределение процессорного времени между всеми задачами с учетом приоритетов. а сами задачи реализованы в виде конечного автомата и контекста не имеют - так что не то что 100 тактов.. редко когда больше 2-х команд выполняется.
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: как поженить ежа и ужа

Post by AndreyB »

Maxi wrote:Суть OSEK сертифицированной OS в том что каждой задаче можно присвоить или задержку старта или периодичность. после чего на уровне компилятора происходит построение такой структуры таймслотов которая обепечивает наиболее рациональное распределение процессорного времени между всеми задачами с учетом приоритетов. а сами задачи реализованы в виде конечного автомата и контекста не имеют - так что не то что 100 тактов.. редко когда больше 2-х команд выполняется.
На уровне компилятора... На уровне какого именно компилятора, т.е. значит мы уже отходим от GCC?

Ну и плюс уточним, инвалидируем ли мы фразу "примитивный шедулер без таймслотов с корпоративной многозадачностью там вообще беда"?
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
Sergey89
contributor
contributor
Posts: 839
Joined: Wed Sep 25, 2013 5:30 pm
Location: Russia, Velikiy Novgorod

Re: как поженить ежа и ужа

Post by Sergey89 »

GCC поддерживается. Там фишка в том, что вся конфигурация описывается в специальном OIL файле. Перед тем как компилировать проект через специальную утилиту обрабатывается этот OIL файл и создаётся конфигурационный файл OS на C, который компилируется вместе с остальным кодом. А вся конфигурация системы описывается как раз в этом OIL файле. И получается так, что OS знает всю информацию о задачах заранее.
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: rtos или нет, выбор rtos

Post by AndreyB »

Я не уверен, что я доразбирался в вопросе, но моё текущее понимание такое:

1) ERIKA в вопросе планировщика как минимум более стандартизирована, как максимум еще и более мощный вариант, чем ChibiOS
2) для более мощной работы с планировщиком появляется новая сущность - OIL - "OSEK Implementation Language" - которая как-то пока без статьи на википедии
3) пока в виде подзрения: для самого hart real time программирования нужно немного поменять парадигму разделения процесса на задачи
4) ERIKA не имеет такого толстого HAL (драйвера перифиирии) слоя, как Chibi - видимо поэтому и комьюнити там сильно меньше, слишком узкий спектр задач ERIKA решает

Нужно понимать, что при том что ChibiOS и потенциально слабее ERIKи, хоть какой-то планировщик лучше, чем никакой/самописный планировщик, если писать всё руками с нуля.

Нужно учитывать и еще один факт: ChibiOS приближается к мажорному релизу 3.0, где они во-первых отделят полностью уровень HAL, а во-вторых обещают новое безтиковое ядро.

Получается, что по большому счёту идеальным вариантом была бы ERIKA + ChibiHAL.
Прямо сейчас выделенный ChibiHAL еще не зарелизился - он пока в виде dev ветки http://svn.code.sf.net/p/chibios/svn/branches/kernel_3_dev/
Времени разбираться с ERIKA и OIL прямо сейчас у меня нет - прямо сейчас ChibiOS мне кажется разумным балансом, хоть какой-то планировщик лучше никакого планировщика. Код писался и будет писаться без жёсткой зависимости к ChibiOS, так что я лично буду для себя верить в переход на что угодно другое в случае или необходимости, или появления героя, который нам "более лучший" планировщик разжуёт и положит в рот.

Итого: пока ChibiOS, но ищём ERIKA добровольца! Имея текущие rusefi сорцы, оный доброволец в идеале напишет прототип хотя бы чего-то на ERIKA.
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
nikll
Posts: 186
Joined: Tue Oct 15, 2013 5:45 am

Re: rtos или нет, выбор rtos

Post by nikll »

Я начал осваивать эрику, качнул у них 32бит ide со всеми нужными плагинами, на FreeBSD все запустилось почти нормально. Времени к сожалению пока что слижком мало, за три дня уделил 2 часа. По возможности продолжу вникать но то что я уже увидел мне однозначно понравилось.
По поводу OIL, сходу нашел анлоязычный толмуд http://portal.osek-vdx.org/files/pdf/specs/oil25.pd
Примеры на русском http://www.intuit.ru/studies/courses/10617/1101/lecture/11484?page=3
Еще хоть и старая но по прежнему актуальная статья http://webcache.googleusercontent.com/search?q=cache:6ohTOSP_6NEJ:www.swsys.ru/index.php%3Fpage%3Darticle%26id%3D856+&cd=2&hl=ru&ct=clnk&gl=ru&lr=lang_ru&client=opera
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: rtos или нет, выбор rtos

Post by Maxi »

Нет ну зачем OSEK - это понятно. это просто проверенный способ не бегать по граблям, потому, что 100500 мозгов так или иначе на OSEK OS.
а HAL то зачем нужен? чтоб прыгать между процессорами?
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: rtos или нет, выбор rtos

Post by AndreyB »

Maxi wrote:а HAL то зачем нужен? чтоб прыгать между процессорами?
прыгать между процессеорами - скорее нет, чем да.

HAL исключительно для правильного дизайна. Настройка мк - отдельно, логика - отдельно. Если настройка мк уже приведена в удобный вид кем-то, почему бы не воспользоваться? А то еще один повод созывать консилиум и еще что-то решать совместно - это непросто. А так - chibi HAL уже есть и его уже можно использовать. Или не использовать в конкретных местах, если на то будет нужда.
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: rtos или нет, выбор rtos

Post by Maxi »

Даже не так - ну hal так hal. hal можно в хидерах нарисовать.

но вот зачем HAL должен быть именно средством ОС? она то какую тут играет роль?
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: rtos или нет, выбор rtos

Post by AndreyB »

Maxi wrote:Даже не так - ну hal так hal. hal можно в хидерах нарисовать.

но вот зачем HAL должен быть именно средством ОС? она то какую тут играет роль?
Никакую. Утвержается, что для версии 3 Chibi уже отделили HAL от OS - HAL можно будет использовать не используя их OS: "The HAL will no more dependent on the ChibiOS/RT Kernel but will depend on a generic OSAL (Operating System Abstraction Layer) that will abstract the underlying operating system. Rationale: The HAL will be able to serve both ChibiOS/RT and NilRTOS. The HAL would be able to operate without an OS too. (DONE 80%)"

Какие там будут вызовы через этот OSAL? Предположу, что что-нибудь про синхронизацию или блокировки.
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
nikll
Posts: 186
Joined: Tue Oct 15, 2013 5:45 am

Re: rtos или нет, выбор rtos

Post by nikll »

+1 за "нарисовать в хидерах". Особого смысла в использовании ChibiHAL нет. У нас будет заюзанна только самая банальнища:
1. GPIO
2. Timers (несколько простых таймеров, захват и шим)
3. ADC
4. SPI + SDIO + DMA
5. USART (возможно его аналог по юсб шине)

Я уже успел наигратся как с StdPeriph_Lib так и с голым CMSIS и твердо уверен что все это банально и достаточно просто т.к. документации в том числе и на русском языке море. Нам же требуется просто отделение логики от регистров, по сути банальные макросы дефайны в хидерах да несколько фунцкий, кода пара сотен строк вместе со всей инициализацией.
ChibiHAL конечно круто и как бы готовое решение, вот только распространенность мизерная да еще и в альфаверсии по сути. Тащить кучу чужого не оттестированного толком кода только ради готовой абстракции, которая к тому же будет использоватся дай бог на 10% смысла нет.
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: rtos или нет, выбор rtos

Post by AndreyB »

nikll wrote:кода пара сотен строк вместе со всей инициализацией
Вот плохо скажу, но это минимум наивняк - максимум... Не буду говорить, что это максимум.

Предлагаю для теста написать драйвер только захвата, поддерживающий 7 разных таймеров и по два канала на каждый. Мне почему-то кажется, что только драйвер захвата на 7 таймеров x 2 канала будет более двух сотен строк. Но я могу и буду рад ошибиться. Итак, если это возможно - ждём HAL захвата сигнала.

Просто не хочется комментировать про альфа версию и неоттестированость. Ну просто... Нет, я сдержусь :)
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
Sergey89
contributor
contributor
Posts: 839
Joined: Wed Sep 25, 2013 5:30 pm
Location: Russia, Velikiy Novgorod

Re: rtos или нет, выбор rtos

Post by Sergey89 »

В одной из тем я упомянул про AUTOSAR. Дак вот этот стандарт в том числе и HAL специфицирует

http://www.autosar.org/index.php?p=3&up=1&uup=2&uuup=6&uuuup=0&uuuuup=0

Но в целом это не только спецификации, но и методология разработки. Пока не знаю подходит она нам или нет :)
Post Reply