rtos или нет, выбор rtos
rtos или нет, выбор rtos
Хорошо бы разобраться с архитектурой для начала и решить ключевые вопросы. Только так получится объединить усилия в одном коде. И если использовать ОС, то хочется рассмотреть вот этот вариант http://erika.tuxfamily.org/drupal/
Re: как поженить ежа и ужа
Sergey89, чем плохо то, что есть сейчас? Нужны же какие-то объективные причины для смены одного на другое.
Сейчас есть весьма скромный функционально, но работающий код и неплохая база. Некоторое количество принципиальных проблем уже решены, дальше надо наращивать. Железяка с большим запасом по производительности, так что на первом месте могут быть не ресурсы. Почему-бы не взять то, что есть сейчас и не продолжить?
На RTOS там возложено не так много, и код, в общем то, неплох и при желании его можно будет использовать в других местах. В этом, как я понимаю, одна из основных идей. Захочется сменить os - это не будет смертельно сложно. Захочется вообще ее выкинуть - тоже самое.
Но стоит ли сейчас распыляться на мелочи, когда есть хороший запас и место для маневра?
Сейчас есть весьма скромный функционально, но работающий код и неплохая база. Некоторое количество принципиальных проблем уже решены, дальше надо наращивать. Железяка с большим запасом по производительности, так что на первом месте могут быть не ресурсы. Почему-бы не взять то, что есть сейчас и не продолжить?
На RTOS там возложено не так много, и код, в общем то, неплох и при желании его можно будет использовать в других местах. В этом, как я понимаю, одна из основных идей. Захочется сменить os - это не будет смертельно сложно. Захочется вообще ее выкинуть - тоже самое.
Но стоит ли сейчас распыляться на мелочи, когда есть хороший запас и место для маневра?
skype: frig_frig
- AndreyB
- Site Admin
- Posts: 14331
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: как поженить ежа и ужа
Знакомство с этим вариантом началось с 404 ошибки http://software.evidence.eu.com/ee_210/IDE/EE_RT-Druid-2.1.0-juno-win32-x86_64.zipSergey89 wrote:вариант http://erika.tuxfamily.org/drupal/
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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: как поженить ежа и ужа
32 битная версия с их сайта качается, а 64 битная со стороннего нет.
Re: как поженить ежа и ужа
примитивный шедулер без таймслотов. с корпоративной многозадачностью там вообще беда.frig wrote:Sergey89, чем плохо то, что есть сейчас? Нужны же какие-то объективные причины для смены одного на другое.
Сейчас есть весьма скромный функционально, но работающий код и неплохая база. Некоторое количество принципиальных проблем уже решены, дальше надо наращивать. Железяка с большим запасом по производительности, так что на первом месте могут быть не ресурсы. Почему-бы не взять то, что есть сейчас и не продолжить?
На RTOS там возложено не так много, и код, в общем то, неплох и при желании его можно будет использовать в других местах. В этом, как я понимаю, одна из основных идей. Захочется сменить os - это не будет смертельно сложно. Захочется вообще ее выкинуть - тоже самое.
Но стоит ли сейчас распыляться на мелочи, когда есть хороший запас и место для маневра?
osek сертифицированная система гораздо более продуманные в этом плане.
Re: как поженить ежа и ужа
Все это хорошо бы рассматривать в разрезе задач и железа. Понятно, что есть вещи лучше, есть хуже, совсем здорово писать на асме и экономить байты. Но до тех пор пока края железяки не видно и пока есть возможность за дешево эту числодробилку поменять на более мощную это будет тупо дешевле.
Это весьма противно мне как программисту, но очень уж часто проще нарастить железо, чем оптимизировать код. Просто так дешевле. Такое положение вещей постепенно приходит и на "братьев меньших".
Я буду очень благодарен, если вы расскажете подробнее, чем все это грозит и почему это не преждевременная оптимизация, а именно сейчас об этом думать самое время. Лучшее враг хорошего. Иногда и так бывает.
Спасибо.
Это весьма противно мне как программисту, но очень уж часто проще нарастить железо, чем оптимизировать код. Просто так дешевле. Такое положение вещей постепенно приходит и на "братьев меньших".
Я буду очень благодарен, если вы расскажете подробнее, чем все это грозит и почему это не преждевременная оптимизация, а именно сейчас об этом думать самое время. Лучшее враг хорошего. Иногда и так бывает.
Спасибо.
skype: frig_frig
- AndreyB
- Site Admin
- Posts: 14331
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: как поженить ежа и ужа
Это к ChibiOS относится? Вроде бы я вижу константу CH_TIME_QUANTUMMaxi wrote:примитивный шедулер без таймслотов. с корпоративной многозадачностью там вообще беда.
osek сертифицированная система гораздо более продуманные в этом плане.
"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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: как поженить ежа и ужа
Суть OSEK сертифицированной OS в том что каждой задаче можно присвоить или задержку старта или периодичность. после чего на уровне компилятора происходит построение такой структуры таймслотов которая обепечивает наиболее рациональное распределение процессорного времени между всеми задачами с учетом приоритетов. а сами задачи реализованы в виде конечного автомата и контекста не имеют - так что не то что 100 тактов.. редко когда больше 2-х команд выполняется.
- AndreyB
- Site Admin
- Posts: 14331
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: как поженить ежа и ужа
На уровне компилятора... На уровне какого именно компилятора, т.е. значит мы уже отходим от GCC?Maxi wrote:Суть OSEK сертифицированной OS в том что каждой задаче можно присвоить или задержку старта или периодичность. после чего на уровне компилятора происходит построение такой структуры таймслотов которая обепечивает наиболее рациональное распределение процессорного времени между всеми задачами с учетом приоритетов. а сами задачи реализованы в виде конечного автомата и контекста не имеют - так что не то что 100 тактов.. редко когда больше 2-х команд выполняется.
Ну и плюс уточним, инвалидируем ли мы фразу "примитивный шедулер без таймслотов с корпоративной многозадачностью там вообще беда"?
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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: как поженить ежа и ужа
GCC поддерживается. Там фишка в том, что вся конфигурация описывается в специальном OIL файле. Перед тем как компилировать проект через специальную утилиту обрабатывается этот OIL файл и создаётся конфигурационный файл OS на C, который компилируется вместе с остальным кодом. А вся конфигурация системы описывается как раз в этом OIL файле. И получается так, что OS знает всю информацию о задачах заранее.
- AndreyB
- Site Admin
- Posts: 14331
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: rtos или нет, выбор rtos
Я не уверен, что я доразбирался в вопросе, но моё текущее понимание такое:
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.
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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: rtos или нет, выбор rtos
Я начал осваивать эрику, качнул у них 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
По поводу 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
читать всем: http://rusefi.com/forum/viewtopic.php?t=213#p336
Re: rtos или нет, выбор rtos
Нет ну зачем OSEK - это понятно. это просто проверенный способ не бегать по граблям, потому, что 100500 мозгов так или иначе на OSEK OS.
а HAL то зачем нужен? чтоб прыгать между процессорами?
а HAL то зачем нужен? чтоб прыгать между процессорами?
- AndreyB
- Site Admin
- Posts: 14331
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: rtos или нет, выбор rtos
прыгать между процессеорами - скорее нет, чем да.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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: rtos или нет, выбор rtos
Даже не так - ну hal так hal. hal можно в хидерах нарисовать.
но вот зачем HAL должен быть именно средством ОС? она то какую тут играет роль?
но вот зачем HAL должен быть именно средством ОС? она то какую тут играет роль?
- AndreyB
- Site Admin
- Posts: 14331
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: rtos или нет, выбор rtos
Никакую. Утвержается, что для версии 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%)"Maxi wrote:Даже не так - ну hal так hal. hal можно в хидерах нарисовать.
но вот зачем HAL должен быть именно средством ОС? она то какую тут играет роль?
Какие там будут вызовы через этот 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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: rtos или нет, выбор rtos
+1 за "нарисовать в хидерах". Особого смысла в использовании ChibiHAL нет. У нас будет заюзанна только самая банальнища:
1. GPIO
2. Timers (несколько простых таймеров, захват и шим)
3. ADC
4. SPI + SDIO + DMA
5. USART (возможно его аналог по юсб шине)
Я уже успел наигратся как с StdPeriph_Lib так и с голым CMSIS и твердо уверен что все это банально и достаточно просто т.к. документации в том числе и на русском языке море. Нам же требуется просто отделение логики от регистров, по сути банальные макросы дефайны в хидерах да несколько фунцкий, кода пара сотен строк вместе со всей инициализацией.
ChibiHAL конечно круто и как бы готовое решение, вот только распространенность мизерная да еще и в альфаверсии по сути. Тащить кучу чужого не оттестированного толком кода только ради готовой абстракции, которая к тому же будет использоватся дай бог на 10% смысла нет.
1. GPIO
2. Timers (несколько простых таймеров, захват и шим)
3. ADC
4. SPI + SDIO + DMA
5. USART (возможно его аналог по юсб шине)
Я уже успел наигратся как с StdPeriph_Lib так и с голым CMSIS и твердо уверен что все это банально и достаточно просто т.к. документации в том числе и на русском языке море. Нам же требуется просто отделение логики от регистров, по сути банальные макросы дефайны в хидерах да несколько фунцкий, кода пара сотен строк вместе со всей инициализацией.
ChibiHAL конечно круто и как бы готовое решение, вот только распространенность мизерная да еще и в альфаверсии по сути. Тащить кучу чужого не оттестированного толком кода только ради готовой абстракции, которая к тому же будет использоватся дай бог на 10% смысла нет.
читать всем: http://rusefi.com/forum/viewtopic.php?t=213#p336
- AndreyB
- Site Admin
- Posts: 14331
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: rtos или нет, выбор rtos
Вот плохо скажу, но это минимум наивняк - максимум... Не буду говорить, что это максимум.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
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: rtos или нет, выбор rtos
В одной из тем я упомянул про AUTOSAR. Дак вот этот стандарт в том числе и HAL специфицирует
http://www.autosar.org/index.php?p=3&up=1&uup=2&uuup=6&uuuup=0&uuuuup=0
Но в целом это не только спецификации, но и методология разработки. Пока не знаю подходит она нам или нет
http://www.autosar.org/index.php?p=3&up=1&uup=2&uuup=6&uuuup=0&uuuuup=0
Но в целом это не только спецификации, но и методология разработки. Пока не знаю подходит она нам или нет