Новый проект Linux Foundation по созданию ОС реального времени для интернета вещей
18 февраля 2016 года
Организация Linux Foundation анонсировала новый совместный проект Zephyr, в рамках которого ведётся разработка новой компактной Real-Time операционной системы (RTOS), предназначенной для оснащения устройств, соответствующих концепции "Интернет вещей" (IoT, Internet of Things). Наработки проекта поставляются под лицензией Apache 2.0. Участниками проекта выступили такие компании, как Intel, NXP Semiconductors/Freescale, Synopsys и UbiquiOS.
В настоящее время для загрузки доступны первый выпуск ядра Zephyr Kernel 1.0 и набор Zephyr SDK, включающий инструменты и кросс-компиляторы для сборки ядра для различных аппаратных платформ. Система адаптирована для установки на платы на базе архитектуры x86 (Arduino 101, Quark D2000 CRB, Galileo Gen1/Gen2, Minnowboard Max), ARMv7 (Arduino Due, Freescale FRDM-K64F) и ARC (Arduino 101), а также для тестирования в эмуляторе на базе QEMU. В состав SDK входят: GCC, binutils, gdb, libgcc, newlib, Python 2.7, QEMU, GNU Make и OpenOCD (Open On-Chip Debugger).
Ядро рассчитано на потребление минимальных ресурсов (от 8 до 512 Кб ОЗУ в зависимости от компоновки), что позволяет использовать его на различных портативных системах, от простых встраиваемых датчиков и чипов для одежды, до умных часов и беспроводных шлюзов для IoT-устройств. Из средств сетевого и беспроводного взаимодействия ядром поддерживается Bluetooth 4, IPv4, IPv6, IEEE 802.15.4, Bluetooth Low Energy (BLE), 6lowPAN (IPv6 over Low power Wireless Personal Area Networks), CoAP (Constrained Application Protocol), DTLS (Datagram Transport Layer Security). Доступны драйверы ввода/вывода для ADC, GPIO, I2C и SPI.
Основные особенности ядра Zephyr:
- Работа в едином адресном пространстве (SASOS, Single Address Space Operating System) - для всех процессов предоставляется только одно глобальное совместно используемое виртуальное адресное пространство. Специфичный для приложений код комбинируется с адаптированным под конкретное применение ядром и образует монолитный исполняемый файл для загрузки и запуска на определённом оборудовании. Код приложений и ядра выполняются в одном общем адресном пространстве.
- Широкие возможности по настройке. В системный образ могут включаться только те возможности ядра, которые требуются для выполнения приложения;
- Все системные ресурсы определяются на этапе компиляции, что сокращает размер кода и увеличивает производительность;
- Минимальные проверки ошибок во время выполнения, что также сокращает размер кода и увеличивает производительность. В форме подключаемой надстройки для отладки предлагается специальная отладочная инфраструктура, позволяющая выявлять ошибки во время разработки приложения, создавая специальные тестовые образы;
- Обширный набор привычных сервисов для разработки:
- Многопоточность на основе приоритетов с вытесняющей и совместной моделью передачи управления;
- Подключение обработчиков прерываний, регистрируемых как на этапе компиляции, так и во время выполнения;
- Средства синхронизации данных между потоками - двоичные семафоры, семафоры-счетчики и мьютексы;
- Средства передачи данных между потоками - простые очереди сообщений, расширенные очереди сообщений и байтовые потоки;
- Сервисы для распределения памяти - динамическое выделение памяти и очистка для блоков памяти фиксированного и динамического размера;
- Механизмы управления питанием: режим tickless (вместо фиксированного вызова по таймеру, процессор просыпается только при наличии событий) и расширенная инфраструктура управления простоем процессора (idle).
- Разработка с оглядкой на безопасность. Все стадии разработки проходят обязательные этапы подтверждения безопасности кода: fuzzing-тестирование, статический анализ, испытания на проникновение, рецензирование кода, анализ внедрения бэкдоров и моделирование угроз. Поставка в виде статически собранного исполняемого файла ограничивает вектор атак только скомпилированным кодом, без возможности загрузить свои модули.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.