Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
И ещё. Объектно ориентированный подход чаще всего используется с динамической моделью выделения памяти.
Если говорить о объектах и шаблонах и ОСРВ сразу вспоминается eCos. Немногие ОСРВ были написаны в то время на C++.
constexpr GPIO led1(portA,pin4); //пин и порт светодиода известны компайл тайм
led1.init(params); //параметры инициализации тоже
led.up(); //тут идет переход по указателю на регистр BSSR порта и сдвинутый на пин, но т.к. мы знаем параметры compile time, то компилятор может подставить нужный регистр.Поэтому RTOS-ы на С++ еще долго будут не востребованы.
Поэтому RTOS-ы на С++ еще долго будут не востребованы.
Есть например eCos ядро на C++, а API для пользователя на C или C++.
Opensource не очень популярна, но вроде коммерческая еще держится.
Поэтому RTOS-ы на С++ еще долго будут не востребованы.
а можно подробнее, какие компиляторы используете для компиляции ос и приложений для нее?
Процедурный подход в современных ОС
Вообще говоря объектно-ориентированный код можно и на чистом C писать, что и используется во многих ОС, в том числе Linux.
Если не требуется многозадачность, то необходимо и достаточно взять какую-либо штатную библиотеку для контроллеров— это утверждение в корне неверно, даже если задача может быть сделала с основном цикле, часто ее перенос под многозадачную ОС приводит к успеху. Был очаровательный пост, не помню где, в котором не простеньком МК делали игрушку с прямым выводом на телевизор и музыкой «на ножке», так в ней применение ОСРВ, при всех накладных расходах, оказалось весьма кстати и существенно упростило разработку ПО.
Современная ОС должна быть многозадачной.— она может быть какой угодно, но должна многозадачность поддерживать.
Самой ОС не требуется никакой консоли.— расскажите, какая из ОС требует консоль (именно ОС, а не интерпретатор командной строки, который в состав ОС входит, но, например, в ядро не входит)
Масса аппаратных вещей требует миллисекундных реакций… малейшая задержка приведёт к сбою работы всей аппаратной системы.— требует микросекундных реакций и никак (от слова совсем) не может быть реализована в виде задачи — только аппаратная реализация критичных задержек, поскольку задержка может привести не к сбою, а к повреждению системы.
Иными словами, в правильно спроектированной программе будет соблюдаться гарантированное время реакции на те или иные события.как было указано в предыдущем параграфе, это время реакции Вас не порадует, поскольку никаких гарантий по железу не дает.
В них не предусмотрено средств виртуализации памяти (блока MMU)— блок MPU в последнее время есть, а этого уже позволяет реализовать изоляцию процессов.
Кроме того, у этих контроллеров имеется большой объём флэш-памяти, иногда — специально адаптированной на быстрое исполнение программМК без ускорителя доступа к Flash — 2017 год на дворе — такие еще делают? — но это придирки.
Объём ОЗУ в самом контроллере обычно невеликво многих МК делают много ОЗУ именно для ускорения работы критических фрагментов программы, ну и для специфических задач.
но в пределах одного микроконтроллера изолированные процессы запустить невозможно— смотри предыдущее примечание об MPU.
ОС компилируется и компонуется монолитно, вместе с программой пользователя— всего лишь один из подходов, никто не мешает делать правильно и разделить их, остро популярная ESP делает именно так и прекрасно себя чувствует.
Они обе располагаются во флэш-памяти, так как исполнение в ОЗУ на некоторых контроллерах снижает производительностьо ложности данного утверждения см. выше, пример в предыдущем параграфе.
Процедурные программы плохо структурированы, их сложно сопровождать, в них проще допускать досадные ошибки, но не буду долго останавливаться на преимуществах объектно-ориентированного подходаплохо спроектированный объектно-ориентированный код ничуть не лучше, смею Вас уверить.
Проще сделать новую ОС. Чем, собственно, мы и занялись.ну и главное, у Вашей ОС нет фатального недостатка.
Обзор одной российской RTOS