Компания Intel представила (https://01.org/blogs/2017/zephyr-os-v1.8-released) выпуск Zephyr 1.8 (https://www.zephyrproject.org/), компактной операционной системы реального времени (RTOS), нацеленной на оснащение устройств, соответствующих концепции "Интернет вещей (https://ru.wikipedia.org/wiki/%D0%98%D0%...)" (IoT, Internet of Things). Наработки проекта распространяются (https://github.com/zephyrproject-rtos/zephyr/) под лицензией Apache 2.0. Система адаптирована для установки на платы (https://www.zephyrproject.org/doc/boards/boards.html) на базе архитектуры x86 (Arduino 101, Quark D2000, Galileo Gen1/Gen2, Minnowboard Max, tinyTILE), ARMv7 (Arduino Due, Freescale FRDM-K64F, 96Boards Carbon, CC3200 LaunchXL, Curie, NXP FRDM, Hexiwear, ST Nucleo, OLIMEX, ARM V2M и т.д.) и ARC (Arduino 101, DesignWare), а также для тестирования в эмуляторе на базе QEMU.
Ядро Zephyr рассчитано на потребление минимальных ресурсов (от 8 до 512 Кб ОЗУ в зависимости от компоновки), что позволяет использовать его на различных портативных системах, от простых встраиваемых датчиков и чипов для одежды, до умных часов и беспроводных шлюзов для IoT-устройств. Из средств сетевого и беспроводного взаимодействия ядром поддерживается Bluetooth 5, IPv4, IPv6, IEEE 802.15.4 (https://ru.wikipedia.org/wiki/IEEE_802.15.4), Bluetooth Low Energy (BLE), 6lowPAN (https://ru.wikipedia.org/wiki/6LoWPAN) (IPv6 over Low power Wireless Personal Area Networks), USB, CoAP (https://en.wikipedia.org/wiki/Constrained_Application_Protocol) (Constrained Application Protocol), DTLS (https://ru.wikipedia.org/wiki/DTLS) (Datagram Transport Layer Security). Доступны драйверы ввода/вывода для ADC, GPIO, I2C и SPI.
Zephyr 1.8 является первым выпуском, после перемещения основного дерева исходных текстов на GitHub. Ожидается, что перемещение разработки на GitHub упростит отправку запросов на изменение, расширит возможности по рецензированию кода и будет способствовать подключению к разработке новых участников. Ключевые (https://github.com/zephyrproject-rtos/zephyr/releases) улучшения (https://www.zephyrproject.org/community/blog/zephyr-os-18-re...) в выпуске Zephyr 1.8:
- В ядро добавлена опция с реализацией режима tickless, обеспечивающего независимую от сигналов таймера многозадачность. В данном режиме ядро может длительное время находиться в состоянии сна, пробуждаясь только при наступлении требующего обработки события, но без периодических пробуждений для обработки сигналов таймера;
- Начальная поддержка возможностей, определённых в спецификации Bluetooth 5.0. На платах Nordic Semiconductor добавлена возможность передачи данных поверх Bluetooth Low Energy на скорости 2Mbit/s;
- Добавлена поддержка сборка с использованием сторонних компиляторов. В том числе теперь возможна сборка в окружении Microsoft Windows с использованием инструментария MSYS2 вместо MinGW, а также сборки из Windows для любых целевых систем, требующих поддержки Device Tree;
- Реализована и включена для некоторых платформ начальная поддержка блоков MMU/MPU (Memory Protection Units), обеспечивающих изоляцию областей памяти между разными исполняемыми контекстами;
- В сетевую подсистему добавлены библиотеки с реализацией HTTP-сервера и клиента, что позволяет легко встроить данную функциональность в приложения, не прибегая к сторонним библиотекам. Добавлена поддержка фрагментации пакетов IPv6. Полностью переработан код для работы с сетевыми буферами. Добавлены реализации DNS-резолвера и NATS. Обеспечена поддержка IEEE 802.15.4 (https://ru.wikipedia.org/wiki/IEEE_802.15.4);
- Внесены оптимизации в модель многопоточного выполнения кода, сетевые интерфейсы и IP-стек;
- Добавлены библиотеки для работы с I2C и JSON
- Добавлена возможность использования сторонних инструментов трассировки отладки;
- Модернизирована сборочная система;
- Добавлена поддержка варианта GCC (https://github.com/jcmvbkbc/gcc-xtensa) для архитектуры Xtensa;
- Добавлена поддержка плат Nucleo STM32F413, Nucleo L432KC, STM32L496G , ARM FRDM-KL25Z, STM32F469I-DISCO, disco_l475_iot1, CC3220SF_LAUNCHXL;
- Добавлены драйверы для nRF5 IEEE 802.15.4, KW41Z IEEE 802.15.4, MCUX TRNG, SiFive Freedom E310, lps22hb, lsm6dsl, lis2dh;
- В будущих выпусках ожидается поддержка POSIX API, BSD Socket,
LWM2M, улучшенная поддержка LLVM, переход на CMake, SMP, AMP и специализированная среда разработки.
Основные особенности ядра Zephyr:
- Работа в едином адресном пространстве (SASOS, Single Address Space Operating System) - для всех процессов предоставляется только одно глобальное совместно используемое виртуальное адресное пространство. Специфичный для приложений код комбинируется с адаптированным под конкретное применение ядром и образует монолитный исполняемый файл для загрузки и запуска на определённом оборудовании. Код приложений и ядра выполняются в одном общем адресном пространстве.
- Широкие возможности по настройке. В системный образ могут включаться только те возможности ядра, которые требуются для выполнения приложения;
- Все системные ресурсы определяются на этапе компиляции, что сокращает размер кода и увеличивает производительность;
- Минимальные проверки ошибок во время выполнения, что также сокращает размер кода и увеличивает производительность. В форме подключаемой надстройки для отладки предлагается специальная отладочная инфраструктура, позволяющая выявлять ошибки во время разработки приложения, создавая специальные тестовые образы;
- Обширный набор привычных сервисов для разработки:
- Многопоточность на основе приоритетов с вытесняющей и совместной моделью передачи управления;
- Подключение обработчиков прерываний, регистрируемых как на этапе компиляции, так и во время выполнения;
- Средства синхронизации данных между потоками - двоичные семафоры, семафоры-счетчики и мьютексы;
- Средства передачи данных между потоками - простые очереди сообщений, расширенные очереди сообщений и байтовые потоки;
- Сервисы для распределения памяти - динамическое выделение памяти и очистка для блоков памяти фиксированного и динамического размера;
- Механизмы управления питанием: режим tickless (вместо фиксированного вызова по таймеру, процессор просыпается только при наличии событий) и расширенная инфраструктура управления простоем процессора (idle).
- Разработка с оглядкой на безопасность. Все стадии разработки проходят обязательные этапы подтверждения безопасности кода: fuzzing-тестирование, статический анализ, испытания на проникновение (https://ru.wikipedia.org/wiki/%D0%98%D1%...), рецензирование кода, анализ внедрения бэкдоров и моделирование угроз. Поставка в виде статически собранного исполняемого файла ограничивает вектор атак только скомпилированным кодом, без возможности загрузить свои модули.
URL: https://01.org/blogs/2017/zephyr-os-v1.8-released
Новость: http://www.opennet.dev/opennews/art.shtml?num=46727