© 2023 DiyTronic

Пробую на вкус Zephyr

Что-то я как-то упоролся в конец RTOS-ами и что называется «Остапа понесло». Обнаружил, что zephyr тоже поддерживает Bluetooth и решил попробовать как оно в работе. А копнув глубже обнаружил, что штука-то очень даже перспективная и имеет ряд довольно приятных возможностей и особенностей.

Как я выяснил Zephyr разрабатывается такими монстрами индустрии как Intel, Nordic, NXP, Texas Instruments и иже с ними, что как бы намекает нам, что разработка эта обречена на успех. Для сравнения Mynewt пилится непонятно кем и поддерживается похоже только Apache Foundation, что на особо радует. У зефира заявлено, что над проектом работает 218 человек.

Сравнил репы zephyr и mynewt — у зефира разработка идёт гораздо бодрее. Ну и к слову отправлял в баг-трекер Mynewt сообщение о проблеме — уже несколько дней прошло и реакция нулевая, чему я не особо удивлён, т. к. изначально видел, что там и без меня достаточно репортов висящих без ответа.

У Zephyr есть поддержка IP стэка, что теоретически должно позволять нам объединять устройства в сеть и видимо даже общаться по сети с компьютерами. Есть поддержка Bluetooth, но пока только для нордиковских чипов. Но это вполне логично если учесть тот факт, что проект отчасти финансируется Nordic Semiconductors. К слову в документации к SDK у нордиков есть даже раздел, посвящённый Zephyr.

В общем-то цель разработки Zephyr как заявлено у них на сайте довольно амбициозная — похоронить остальные оси, типа чтобы избежать фрагментации на этом поле.

Ну и ближе к делу — Zephyr генерирует монолитный код с единым адресным пространством ядра и приложения. Я пока не готов сказать хорошо это или плохо, но как минимум одно можно сказать точно — это удобно для разработки.

Концепция разработки Zephyr предполагает минимизировать использование ресурсов в процессе выполнения и перенести как можно больше на этап компиляции. Это касается как выделения ресурсов так и обработки ошибок, которая сведена к минимуму.

Ну и как уже писал выше встроенная поддержка сети, включая BLE меш сети. К слову в Mynewt это ещё в планах.

Минимальные системные требования — 8Кб памяти. Не нашёл правда какой — флеша или оперативки. Я почему-то думаю, что флеша.

Для сборки кода используется стандартный CMake. В общем-то это даже и неплохо — не надо осваивать никакие новые тулзы.

Нашёл у них в блоге ещё интересную штуку — можно разделить Bluetooth приложение между 2-мя чипами. Т.е. пишем один код, а запускаем часть на одном микроконтроллере (непосредственно приложение и Bluetooth host), а часть (Bluetooth controller) на другом. Подробнее тут.

В общем однозначно надо пробовать этот зефир в работе — выглядит очень «вкусно». Писанину пока закончу — накропал уже слишком много. Думаю надо перейти к практике, но об этом уже в следующий раз.

Комментарии