Данная статья по большей части является обзорной. В ней будут описаны идеи и возможности применения КолибриОС как теоретические, так и доведенные до реализации. О том, как её используют уже сегодня, будет рассказано в следующей статье.
Наиболее перспективным направлением является промышленное применение и embedded-разработка. Особенности KolibriOS, которые делают привлекательным её применение в данных областях:
- Компактное ядро с открытым кодом;
- Минималистская простота и удобство графической подсистемы;
- Достаточно развитый пользовательский интерфейс;
- Приличный низкоуровневый системный сервис;
- Поддержка наиболее популярных сетевых протоколов и файловых систем.
Ярким доказательством этого является Kolibri-A, форк от art_zh.
Колибри-А — экспериментальная система, полезная только для квалифицированных системотехников, системных программистов, а также разработчиков и наладчиков компьютерного оборудования. Многие стандартные механизмы системной защиты и контроля доступа к критическим системным ресурсам в Колибри-А отключены с целью облегчения максимально свободного и удобного доступа к оборудованию.
- Повышенные требования к аппаратной платформе.
- Дополнительный API-сервис, предоставляющий пользователю расширенный и быстрый доступ к низкоуровневому вводу/выводу.
- Бездрайверный ПДП и контроль нестандартной аппаратуры через доступный из пользовательского пространства статический системный буфер.
- Расширенная поддержка функций PCI-express с элементами тренинга шины, MSI и контроля режимов питания.
- Размер ядра заметно сокращен — исключены многие избыточные, узкоспециальные и рудиментарные системные структуры и функции:
- исключены видеорежимы низкого разрешения (ниже 800х600);
- оставлен единственный видеорежим (VESA2, глубина цвета 32bpp);
- из файловых систем оставлена только FAT.
- убирается поддержка APM; реализовано прямое управление электропитанием.
Её вполне реально вшить в ROM и поставлять компактные энергоэффективные x86-компьютеры с KolibriOS вместо BIOS, пригодные для использования во встроенных системах, или в качестве центральных узлов различных систем.
Что и было продемонстрировано art_zh (тема на форуме).
(kolibri.img прошит в ROM, мышь и клавиатура отключены за ненадобностью)
Позже это же достижение повторил Anthony Lu на промышленном мини-компьютере eBox (тема на нашем форуме).
Для большей эффективности применения в данных областях необходима разработка специализированной платы под KolibriOS (возможно подпилить немного и саму КолибриОС), которая наиболее полно будет использовать возможности ОС. При наличии заинтересованных людей, готовых финансировать идею, реализация возможна текущими участниками проекта.
Из уже доступных на рынке плат подходит 86Duino. Одним из наших участников, hidnplayr, была проведена успешная загрузка на 86duino one с использованием Vortex86 VGA card (для этого им же в ревизии 5154 была реализована поддержка 16bpp VESA режима в ядре) и подготовлена инструкция по загрузке.
Ну а теперь пару примеров реального применения KolibriOS:
- Использование при наладке железа (будет рассказано в следующей статье)
- Использовали на заводе для SCADA-системы;
- На железнодорожном транспорте для автоматического контроля состояния контактного кабеля на основании анализа видеоинформации с проезжающего поезда.
Цитата одного из разработчиков art_zh (оригинал — на нашем форуме):
Скрытый текстВстраиваемые системы — это не только роботы.
Хотя и роботы тоже.
Возьмем, к примеру, «одноглазого» робота, который движется по скоростной железной дороге со скоростью 200 км/ч и наблюдает за состоянием контактной электросети.
Контактный кабель — стальной пруток диаметром 20мм, вихляющий над токоприёмником из стороны в сторону с амплитудой 50см. На этом кабеле надо разглядеть зазубрины размером не менее 0,5 миллиметра.
При обнаружении такой зазубрины — сохранить её фотографию и запомнить время и место (чтоб ремонтники знали где её искать), а если все нормально — сохранять только один кадр из тысячи.
Элементарный анализ такой (реальной!) задачи ставит очень жесткое ТЗ: надо оцифровать 112 тыс. строк в секунду, по 2048 пикселей в строке, 2 байта на пиксель. Итого — 460 Мбайт/с.
Эти полгига надо успеть протолкнуть в память, провести первичную обработку (определить положение троса), найти зазубрины, отобразить 10 картинок на экране, посчитать силу натяжения троса (по частоте биений) и отправить отчет на сервер.
В QNX задачу решить до сих пор не удалось — жуткие дыры в видеопотоке (возможно, что причина не в системе, а в говнокоде). В Колибри принципиальных проблем (почти) нет. Аппаратная часть готова, причем наладка и тестирование нового железа проведены исключительно средствами Колибри.
- Проводили численное моделирование спектров для задач радиофизики (Мессбауэровская спектроскопия) и даже защищали диссертацию — vak2.ed.gov.ru/idcUploadAutoref/renderFile/80179 (программа CMspectra сперва была написана для KolibriOS, затем портирована в другие операционные системы — соавтор Андрей Игнатьев, aka andrew_programmer);
Исходя из вышесказанного можно выделить несколько направлений использования:
- «Умный дом»;
- Автоматизация процессов промышленного производства;
- Бортовая электроника транспортных средств (почему бы и нет?);
- Сбор и обработка большого объема данных (например, метеостанции).
Также, следует отметить, что MenuetOS/KolibriOS успешно ставили в банкомат, и, в принципе, вполне реально написать соответствующий банковский софт.
Это намекает на возможность использования КолибриОС в качестве замены DOS и старых версий Windows на компьютерах различных гос. организаций, таких как ЖД управление и Почта. При этом обновление оборудования вовсе не обязательно, а софт (при наличии исходного кода) можно портировать.
Комментарии (14)
robux
19.05.2015 07:20+3Прочитал, что возможно использование GCC.
А реально в КолибриОС скомпилировать интерпретатор Ruby или Python, например?
Какие трудности при этом могут возникнуть?CleverMouse
19.05.2015 14:40+2Какие трудности при этом могут возникнуть?
1. Придётся компилировать ещё и все библиотеки-зависимости.
2. Какая-то системная библиотека может отсутствовать. Например, нет pthread.
3. Какие-то функции в libc могут отсутствовать или быть заглушками. Например, clock() из POSIX возвращает суммарное процессорное время, использованное программой, ядро KolibriOS не отслеживает эту информацию; clock() из menuetlibc возвращает wall clock, clock() из newlibc возвращает ошибку (clock_t)-1.
beduin01
19.05.2015 09:36+1Мне кажется было бы разумно взять ядро от helenos.org (Оно на Си) и продолжить поверх него писать Колибри. Просто ассемблер это конечно прикольно, но выйти на реальный рынок можно только с чем-то более высокоуровневым. Просто мне кажется сейчас порт на ARM был бы крайне востребован.
Punk_Joker Автор
19.05.2015 19:22+1Можно и Windows пилить на ядре Linux, вот только это уже будет не совсем Windows, а лишь старое название. Так и в этом случае, КолиьриОС это и есть, это саммое монолитное ядро (helenos если не ошибаюсь микроядерная) на ассемблере
DrPass
19.05.2015 10:20KolibriOS — система очень заманчивая для embedded-применений. Но не хватает нескольких ключевых приложений — нормально работающего терминального клиента (есть только зародыш VNC), броузера и полноценного HTTP-сервера.
PQR
19.05.2015 11:11+1Банкоматы — это тема! Но нужно серьёзно вложиться, сначала в разработку, а потом вложиться х10, чтобы внедрить в реальном банке
DrPass
19.05.2015 16:32Ну как тема… в банкомате внутри, по сути, обычный x86 компьютер, причем если лет… надцать назад они были в основном под полуосью, то сейчас там как правило просто Windows стоит.Поэтому то, что туда установили Колибри, само по себе ничего не означает. Я и в «Сапер» на банкомате играл когда-то давно, когда работал в ИТ-управлении банка :) Ключевой вопрос в банкомате, это специализированный софт, который управляет периферией, и обеспечивает безопасный шифрованный канал с банковской сетью. А с этим в Колибри вообще никак. И объем разработки тут будет, пожалуй, вполне сравнимый со всей Колибри на текущий момент.
DeXPeriX
Почему тогда старые Windows заменять не на React OS? Тогда изменения в софте вообще могут не потребоваться…
mayorovp
Ну, зато могут потребоваться изменения в самой React OS…
Punk_Joker Автор
Можно оставить и как есть. Это был лишь пример одного из вариантов.