Repbase
CubOS
CubIO.Cloud
CubIO
CubVISION
Контакты
Главная
Содержание
Общие сведения

CubOS - минималистичная операционная система пользовательского интерфейса. CubOS имеет открытые коды и поддерживает микроконтроллеры и процессоры различных архитектур (подробнее в разделе Поддерживаемые устройства).

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

Исходные коды открыты для использования в коммерческих целях, скачать можно по ссылке https://github.com/yacubovvs/CubOS

Сфера применения

Особенности операционной системы CubOS делают ее отличным вариантом для использования:

Поддерживаемые устройства

На данный момент минимальные системные требования для установки CubOS следующие:

В остальном CubOS является достаточно гибкой системой, способной запуститься практически на любом микроконтроллере

CubOS был скомпилирован и запущен на многих микроконтроллерах и процессорах:

Также существуют уже готовые устройства, к которым адаптирована CubOS:

Носимые устройства

Благодаря низкому энергопотреблению, поддерживаемым микроконтроллерам и оптимизации кода, CubOS хорошо подходит для носимых устройств. На данный момент CubOS портирован на такие носимые устройства, как M5 Stick, M5 stick Plus, TTGO T-Wristband, T-SmartWatch v1/2/3, OpenSmartwatch. Для всех устройств добавлена поддержка акселерометра и расчет количества шагов и времени сна. Максимальное время работы от одного заряда аккумулятора у OpanSmartWatch с аккумулятором 500 mah составило 2 недели.

Встраиваемые системы и рабочие станции

Благодаря низким требованиям к питанию и электромагнитным помехам, а также вибровоздействию из-за небольшого количества деталей устройства на базе CubOS являются отличным решением для автоматизированных рабочих станций.

Некоторые ARM микроконтроллеры по типу Atmel SAM3X8E имеют аппаратный USB порт, а так же внешние устройства USB можно подключить с помощью внешнего USB контроллера. Это позволяет подключать устройства ввода в рабочие места на базе CubOS. Могут быть подключены клавиатуры, мышки, а также сканеры штрих-кодов. Для упрощенной работы со штрих-кодами можно использовать встраиваемые 1D и 2D сканеры штрих-кодов.
Для упрощения авторизации могут использоваться сканеры отпечатков пальцев, которые легко подключаются ко всем устройствам CubOS через UART интерфейс.

Средства связи

Почти все микроконтроллеры имеют низковольтный UART интерфейс, способный передавать данные на небольшие расстояния в пару метров, однако при использовании специальной платы согласования уровней (например, на базе MAX232), передача возможна на более дальнее расстояние, особенно при использовании экранированного кабеля. При использовании специальных плат преобразования UART данных в данные для передачи по витой паре расстояние можно увеличить до 100 и более метров.

Самым простым способом передачи данных на большие расстояния - это использование WiFi. Часто микроконтроллеры уже имеют встроенные WiFi модули (Esp32, Esp8266), или же в качестве модема можно использовать плату ESP-01, которая поддерживается CubOS и с легкостью помогает подключаться к WiFi сетям, и отправлять GET запросы на локальные сервера и сервера в интернете, а также получать ответы.

Менее зависимый от помех способ передачи данных - использование Ethernet порта с помощью дополнительной платы или использование микроконтроллера с встроенным Ethernet портом.

Если рабочая станция на базе CubOS находится на большом удалении от сервера и нет никакого способа передавать данные стандартным способом, то можно использовать радиомодули, подключаемые к микроконтроллеру. В разрешенных диапазонах 433 Мгц и 2.4 ГГц на прямой видимости можно достичь расстояния до 50 км с помощью направленных антенн. Для настройки радио связи необходимо учесть некоторые факторы:

Для правильной настройки дальней радио связи, скорее всего, потребуется специализированное оборудование типа VNA и SDR радиоприемник.

Средства разработки

Разработка производится на компьютере с использованием любого удобного редактора, рекомендуется использовать Visual Studio Code.
В корневой папке /generators находятся папки с названиями оборудования, над которыми ведется разработка. В каждой папке находится файлы скриптов make.sh для сборки соответствующего готового проекта.
Для выполнения скрипта в Windows следует использовать Git bash из пакета программы Git CLI, в Unix системах можно использовать встроенный bash.

Для сборки CubOS для процессоров x86, x64, ARM и прочих поверх существующих операционных систем используется компилятор GCC версии 7+ для соответствующей ОС. При этом для работы дисплея используется эмулятор экрана, подключаемый через socket. Данный способ запуска позволяет не только запустить CubOS на компьютере, но отладить написанный код без загрузки на устройство.

Для большинства устройств возможна загрузка через Arduino IDE, в этом случае достаточно открыть проект из папки /releases (релизы) или /outputs (тестируемые сборки), выполнить настройки IDE и загрузить проект на устройство.

Особенности системы
Время использования процессора

CubOS намеренно сохранила некоторые архаичные черты операционных систем, как однозадачность, что позволяет детально контролировать каждый процессорный такт выполнения кода. Благодаря точному контролю выполнения кода удалось достичь большой оптимизации энергопотребления, даже на таких процессорах, как Xtensa l6: в тот момент, когда процессор находится в бездействии, он уходит в сон, просыпаясь по таймеру или внешнему событию в нужные моменты, что необходимо для экономии заряда в носимых устройствах. В процессе работы устройства бодрствование процессора Xtensa составляет менее 0.1% от времени использования устройства.

Быстрое включение
Быстрое включение

В отличие от большинства операционных систем, CubOS не требуется время на подгрузку дополнительных модулей во время работы или обращение к файловой системе, так как основное ядро ОС является монолитным. Это позволяет включить устройство за очень короткое время. Время начала загрузки CubOS занимает несколько тактов процессора, то есть меньше 1 микросекунды. Дальнейшая скорость загрузки зависит от времени инициализации внутренних компонентов, таких как экран или контролер питания, и занимает от 1 до 3 секунд, что намного быстрее загрузки современных операционных систем для пользовательских компьютеров. При этом устройства на базе CubOS не подвержены повреждению при резком отключении питания.

Низкое энергопотребление

Благодаря низкому времени использования процессора и оптимизации кода для режимов сна, удалось очень сильно снизить энергопотребление устройств. Из указанных выше устройств максимальное потребление может быть у процессора Xtensa L6, во время полной загрузки обоих ядер и одновременного использования модулей Wifi и Bluetooth потребление может составлять около 1.65 Ватт без учета использования экрана. Во время сна потребление снижается до единиц нВт в зависимости от электрической схемы питания устройства. Другие устройства требуют питание выше 1.2 Ватта.
Большинство микроконтроллеров требуют напряжение от 1.8 до 5 вольт в широком диапазоне.  Все это позволяет обеспечить достаточно продолжительную работу устройства от аккумулятора или слабого источника питания.

Внешние скрипты

На данный момент ведется разработки скриптового языка B-code для выполнения внешних инструкций внутри операционной системы CubOS.
Архитектура скриптового язык B-code построена таким образом, чтобы тратить как можно меньше оперативной памяти системы. В связи с чем у данного скриптового языка есть некоторые особенности:

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

Подробнее за ходом разработки можно следить на странице Github проекта CubOS по ссылке https://github.com/yacubovvs/CubOS/tree/main/tools/B-code_Compiler