LINUX.ORG.RU

Suckless альтернатива FreeRTOS

 , , , ,


1

5

DISCLAIMER: Понимаю, что форум про Linux. Linux при том, что устройство будет общатся с ПК под управлением Linux. Конечная прошивка устройства будет выпущена под GNU GPL.

Пощупал FreeRTOS. Стиль кода данной ОС, по моему мнению, нездорового человека. Куча переусложненных сущностей, а самое главное: динамическое выделение памяти! Знаю, что в конфигурации можно выбрать режим статического выделения, но он не отличается эффективностью в FreeRTOS. Также я заметил, что переключение контекста в FreeRTOS очень медленное. Бывает, что переключение занимает такт или больше! А также переключение контекста занимает непредсказуемое количество времени, что для ОСРВ не подходит в принципе.

Вопрос: какая есть suckless альтернатива данному поделию для систем реального времени? От системы требуется только грамотное разделение времени. А драйверы периферии будут реализованы с нуля.

Ответ на: комментарий от KivApple

Кстати прикольная штука, хотя я хз, что там ТСу не понравилось в коде фриртос, так то и в чибиосе ехал макрос через макрос и все прелести сишного эмбеддеда.

ya-betmen ★★★★★
()
Последнее исправление: ya-betmen (всего исправлений: 1)

Посмотри на zephyrproject.org

Кроме этого знаю про mbed

Но мне кажется, что у каждой ОС свои проблемы. FreeRTOS вроде как индустриальный стандарт по сути. Наверное она не так уж и плоха.

vbr ★★★★
()
Последнее исправление: vbr (всего исправлений: 2)
Ответ на: комментарий от realbarmaley

Плюсы в контроллере - это изврат полный!

Размораживайся. Даже под AVRки в нулевых все уже писали на плюсах - тебя же не заставляют на них STL, rtti и исключения тянуть, а и без них это куда более выразительный и эффективный язык чем С. Достаточно классов с RAII и немного шаблонов чтобы сделать исходник куда более лаконичным и переносимым забесплатно, и прошивку заметно ужать. А уж там куда влезет RTOS, влезет и почти полноценный STL. Недосям уже нигде не осталось применений, даже в эмбеддовке.

slovazap ★★★★★
()
Ответ на: комментарий от demidrol

Real time executive for missile systems в гитаре? Это же то что я хотел!!! Зато можно будет сказать, что у меня в барабанах электронных операционка от крылатых ракет

realbarmaley ★★
() автор топика

Чушь. Если у тебя квант времени планировщика сопоставим со временем его работы, значит, квант слишком маленький. У меня, скажем, в системе требуемое время реакции для задач — 1 мс, квант выбран 250 мкс и всё прекрасно работает. При этом время работы задачи планировщика — где-то единицы микросекунд, если попытаться задать квант такого размера — естественно, всё встанет раком.

Если прям позарез нужны короткие времена (для АЦП/ЦАП или типа того), заводи отдельный (аппаратный, не RTOS) таймер и вешай обработку на него.

alegz ★★★★
()
Последнее исправление: alegz (всего исправлений: 1)

Стиль кода данной ОС, по моему мнению, нездорового человека. Куча переусложненных сущностей,

Вот не надо катить бочку. Там всё просто и топорно. А «набор сущностей» – это вполне ожидаемый набор интерфейсов, который ожидаешь от кода, способного работать на разных микроконтроллерах и платах.

а самое главное: динамическое выделение памяти!

И как много из них используется не на старте системы?

Ну и если, какие-то конкретные места не нравятся. То перепиши под себя. Там не 100500 строк кода.

Также я заметил, что переключение контекста в FreeRTOS очень медленное.

Удивительно? Сохрани регистры, выбери следующую задачу, восстанови регистры. Но никто же не запрещает под себя затюнить это место.

А также переключение контекста занимает непредсказуемое количество времени, что для ОСРВ не подходит в принципе.

Если у тебя тут ОЧЕНЬ сильно плавает время, то ищи причину.

Ты на микроконтроллере, где кроме основного цикла ещё много прерываний. И итоговый код – это баланс между задачами, их приоритетами и прерываниями.

Вопрос: какая есть suckless альтернатива данному поделию для систем реального времени?

Ну вот не стоит такие продукты называть «поделием». Это, скорее, говорит, что ты не разобрался. И это ты ещё не видел TI-RTOS, который при компиляции выдаёт немереное число предупреждений.

FreeRTOS - это минимум. По сути минимальный интерфейс для задач, которые можно писать универсально для нескольких аппаратных решений. Плюс минимальный набор интерфейсов для драйверов устройств. Далее собирай и дописывай.

Есть китайская RT-Thread. По своей сути тоже минимальна. Код так себе. Но под неё много примеров от китайских производителей микроконтроллеров. Так что на учёте должна быть ;)

Есть Zephyr, но минимальной её уже не назовёшь. Хотя для современных микроконтроллеров на сотни MHz пожалуй подойдёт.

Всё остальное, можно рассматривать только после глубоко изучения FreeRTOS, ибо желание быть лучше, чем FreeRTOS приводит к ещё большему числу абстракций.

AlexVR ★★★★★
()
Ответ на: комментарий от slovazap

Вроде бы да, но это «совсем не осталось места, даже в ембеддед» превращается в «у нас тут уже всё на мази, и предыдущие версии писали на С и в ус не дули, а плюсов мы и не особо знаем».

seiken ★★★★★
()
9 февраля 2024 г.
Ответ на: комментарий от Beewek

Я созрел на плюсы. Я понял, что RAII - это круто. А то во freertos (ну и все остальное) для перезапуска процесса пришлось использовать goto start! Мне так больно на это смотреть…

realbarmaley ★★
() автор топика