LINUX.ORG.RU

Вышла BuguRTOS-2.0.0!

 , ,


1

2

31 августа вышла очередная мажорная версия BuguRTOS 2.0.0.

BuguRTOS — встраиваемая ОСРВ, ориентированная на применение в программах микроконтроллеров, которая может работать в режимах мягкого и жесткого реального времени.

Основные особенности BuguRTOS:

  • отказ от управления памятью в ядре;
  • пониженные требования к размерам стеков процессов;
  • полностью вытесняемое ядро (код ядра выполняется в отдельном потоке и может быть вытеснен обработчиком прерываний практически в любой момент, за исключением небольших участков);
  • виртуализация прерываний (виртуальные прерывания в BuguRTOS, - это аналог файберов в Zephyr Project);
  • настраиваемый интерфейс системных вызовов (пользователь может легко отключить ненужные системные вызовы, добавить свои или полностью переписать всю таблицу системных вызовов);
  • отсутствие в коде ядра привычных примитивов синхронизации типа семафоров и мьютексов, вместо них есть базовый примитив, на основе которого можно реализовать широкий спектр блокирующих примитивов синхронизации.

В новой версии приозошли следующие изменения:

  • переработан диспетчер системных вызовов (использован паттерн X-macro);
  • переработан API ядра (функции заменены на макросы, для передачи нескольких аргументов теперь используется переменное число параметров, что в сочетании с новым диспетчером системных прерываний позволило добиться гибкости настроек таблицы системных вызовов);
  • обновлена библиотека native API и руковоство по началу работы с BuguRTOS;
  • благодаря Филиппу Клаусу Краузе (разработчику SDCC) добавлен порт STM8/SDCC, в тестах используется свободная библиотека libstm8;
  • код проекта проверен статическим анализатором adlint;
  • исправлено две ошибки.

Фактически BuguRTOS 2.0.x представляет собой платформу для прототипирования ОСРВ, которую можно использовать для обучения низкоуровневому системному программированию.

Планируется расширение функциональности BuguRTOS за счет реализации новых библиотек API, а также перенос на новые архитектуры.

>>> Подробности

★★★★★

Проверено: Shaman007 ()
Последнее исправление: DeadEye (всего исправлений: 6)

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

Микроконтроллеров не видел, да. А всякие SoC ковырял, но они имели на борту загрузчик. Так что какой-нибудь LynxOS там грузился «штатным образом». Если придется, то буду знать как оно делается :)

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

Он, емнип, уже давно не школьник, просто свой трипфажеский никнейм со времен нульчановского кодача до сих пор использует. Эх славные времена были, срач сишников с суигинтой, срачь что на плюсах и си нельзя под баре-метал писать, потому что якобы си без stdlib и stdio это уже не C и прочее.

anonymous
()
Ответ на: комментарий от gns

Ну, ты такие вопросы задаешь, будто бы с тулчейнами разных компиляторов никогда не работал и опции и конфиги под них не курил. А там, как правило, все для баррэ металла есть, и выбор функции для энтрипоинта, и расстановка адресов секций и установка требумых заголовков в результирующйи файл. и даже objcopy для генерации прошивки в требуемых форматах.

anonymous
()
Ответ на: комментарий от anonymous

Эх славные времена были
срачь что на плюсах и си нельзя под баре-метал писать, потому что якобы си без stdlib и stdio это уже не C и прочее.

Мракобесие какое-то, ничего славного

Deleted
()
Ответ на: комментарий от Deleted

Там сам процесс надо было видеть, как золотце суигинто и прочие с помощью умелой демагогии траллили сишников.

anonymous
()
Ответ на: комментарий от anonymous

Для чего-то — крутил, и конфиги самые разные правил, а вот «совсем микроконтроллеров» не видел. Ну буду знать...

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

Любишь вонь и пускать черный дым и не ехать? Дальнобойщик? Жиппер-грязееп?

anonymous
()
Ответ на: комментарий от Sociopsih

4.2 Нет у меня мака и не будет, я идейный свободник. )

4.2 тебе приглючилось. Если бы ты напряг память и вспомнил комедии про Шурика, то наверно догадался бы что в не урезанном виде фраза говорила про то, что и на ваш деревянный С++ макинтошик паскаль ещё горсть земли кинет, перед закапыванием.

Napilnik ★★★★★
()

руковоство

Шамааан!!! Опять спеллчекер выключал, ирод?

anonymous
()
Ответ на: комментарий от Ingwar

А если более серьезно, то:

FreeRTOS использует malloc для вещей типа создания потоков, в BuguRTOS malloc не используется.

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

В обеих ОСях блокирующая синхронизация сделана на основе некоего базового типа данных, но во FreeRTOS примитивы типа мьютексов приделаны костылями.

FreeRTOS вроде как не умеет в полноценное наследование приоритетов.

BuguRTOS не имеет такого широкого сообщества и не так хорошо протестирована, поддерживает меньше архитектур.

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

И да, школьник-кун - вата.

anonymous
()
Ответ на: комментарий от anonymous

И да, школьник-кун - вата.

Самая ценная информация!

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

И правда хезанутые наглухо, маллос пришили по дефолту, по крайней мере. Ну зачем, блять?!! BaseType_t xTaskCreate( TaskFunction_t pvTaskCode, const char * const pcName, unsigned short usStackDepth, void *pvParameters, UBaseType_t uxPriority, TaskHandle_t *pxCreatedTask ); А вотъ поганый укос2, ну, стека чуть более жрёт, но, по сравнению с мировой революцией...: void OSTaskCreate (OS_TCB *p_tcb, CPU_CHAR *p_name, OS_TASK_PTR p_task, void *p_arg, OS_PRIO prio, CPU_STK *p_stk_base, CPU_STK_SIZE stk_limit, CPU_STK_SIZE stk_size, OS_MSG_QTY q_size, OS_TICK time_quanta, void *p_ext, OS_OPT opt, OS_ERR *p_err)

anonymous
()
Ответ на: комментарий от anonymous

Забыл упомянуть во втором абзаце, что в BuguRTOS должны быть более низкие требования к размеру стека потоков, из-за смены контекста при выполнении ядра.

Но, как это на практике - не понятно.

anonymous
()

Я пьяный, мне похуй!!!

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

И что, сишники велись на эту чухню?

Какие-то глюпые сишники!

anonymous
()
Ответ на: комментарий от Quasar

Давай посадим тебя на автомобиль с электронной педалью газа, которая управляет двигателем через Windows 10.

управляющее приложение будет на java с настоящим GC, педаль тормоза тоже электронная, как думаешь минут 10 по городу продержится или раньше влетит куда ?

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

должен превращать этот main в точку входа в процессор

Ниа, не обязан. Компилятор использует в качестве точки входа что-то, что можно передать извне в качестве параметра, по умолчанию - __start (для gcc). А линковщик это что-то должен расположить по адресу, где будет первая инструкция которую процессор решит выполнить после старта (бинари на обычных системах не рассматриваем). В обоих случаях для конкретной железки это нужно ручками указывать или пользоваться тем, что уже есть в SDK от производителя.

Далее классика: начинает работать т.н. Run time языка: типа зануления BSS, подготовки окружения, парсинга аргументов командной строки (ну это уже не для барметала), в случае C++ - всякие плюшки, типа вызова конструкторов глобальных объектов и т.п. А вот потом рантайм вызывает main.

У меня, собсно, от точки входа до main - свой код. Так что и main... мог быть, а мог и не быть. Оставил, дабы следовать правилу наименьшего удивления. Правда запуск операционной системы скрыл в рантайм, что бы в main уже были сконструированы глобальные объекты и был доступен менеджер памяти RTOS.

PS у нас не бугурт. OS - ThreadX, часть SDK.

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

Любишь пипиетарные мокрые письки?

Ты против швабодки!

anonymous
()
Ответ на: комментарий от h4tr3d

За разъяснение — спасибо, помогает для ликвидации безграмотности.

Ну понятно, что точка входа где-то в скрипте линковщика прописана. Так что под компилятором я подразумевал «весь toolchain», скорее. А вот если конкретная плата имеет на борту загрузчик (вроде многие имеют, а ардуины, так все, наверное), то, с одной стороны, без программатора обойтись можно, а с другой стороны, нужно ли как-то по-другому собирать свой загрузочный образ?

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

Платы и SoC тоже разные бывают. Бывают простые загрузчики которые просто прыгают в какое-то определённое место. Или читают от туда. Чего далеко ходить - посмотри на MBR и как там передача управления делается.

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

Ну про MBR и про линукс на флешке для апплаенса или мезонинного сетевого интерфейса какой-нибудь циски все более менее понятно. Вот это я делал как раз. Но там у железки еще до моего загрузочного образа интеллект просыпается немалый. Мне-то как раз было интересно про всякие мелкоконтроллеры типа того же ардуино/AVR узнать. А то есть пара задумок типа термореле для йогуртницы, а с чего там начинать вот пока толком и не знаю.

gns ★★★★★
()

Кстати, а на Реддит, где тусуются ардуинщики, не закидывал?

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

«что есть вата ?»

Вата - это объект, впитывающий всю мочу, которую на него льют пропагандоны.

anonymous
()
Ответ на: комментарий от anonymous

«Ты чё уёб..к, ты против свободы да? Ты против Столлмана?»

Он за свободу быть против Столмана и пользоваться убогими поделками школьников-экстремистов.

anonymous
()
Ответ на: комментарий от anonymous

Потому, что всякий раз в треде про эту ОС начинается рыцарский турнир ордена anus captum.

anonymous
()

Народ! 28-летний упырь развелся с женой, не помогает своему сыну. За то корчит из себя «мачо», тягается с бабами старше себя на 5-10 лет. ЛОШИТЕ ЕГО! https://vk.com/bogdan.svitlitskiy

anonymous
()
Ответ на: комментарий от anonymous

Вата - это объект, впитывающий всю мочу, которую на него льют пропагандоны.

что-то украинское, видимо...

anonymous
()
Ответ на: комментарий от anonymous

Он, емнип, уже давно не школьник, просто свой трипфажеский никнейм со времен нульчановского кодача до сих пор использует. Эх славные врем

Запомни анон, «школьник — это судьба». Возраст тут не причём.

anonymous
()
Ответ на: комментарий от gns

AVR - посмотри Хабр, там были соревнования на самую короткую программу для AVR. ЕМНИП там просто PC = 0x00 при старте и с каждым тактом инкрементируется. Соответственно, что там будет находиться, то и запустится. Много памяти - можно засунуть и бутлодер, можно умный, что бы можно и основной код обновлять и безопасность сего процесса обеспечивать.

Cypress в FX3 сделала примитивный бутлодер в ROM, который читает конфигурацию пинов и может грузить код: a) по USB, б) по SPI, в) из EEPROM и г) по своему интерфейсу GPIF II. При этом, архитектурно этим кодом может стать т.н. Second Stage Bootloader: небольшой кусок кода без ОС, с базовой поддержкой существующей переферии и со своим адресным пространством и возможность прочитать основной код откуда душа пожелает в основную память и передать туда управление. Такая схема позволила сделать, по сути, неубиваемое устройство в части фейлов при обновлении: сделали допуск, что бутлодер пользователь никогда не обновляет, а находится он в отдельной EEPROM :)

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

За тем же, за чем нужны сотни существующих RTOS с открытыми исходниками: сказать смотри, мам, как я могу!

anonymous
()
Ответ на: комментарий от anonymous

Это все вариации на тему malloc разной степени паршивости.

И да начиная с версии 9.0.0 FreeRTOS может в статическое выделение памяти.

Быстро до них дошло, однако, всего через 12 лет.

anonymous
()
Ответ на: комментарий от anonymous

Там пикоядро в смысле его размера, имхо.

h4tr3d ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.