Разработка носимых с Zephyr

В ELC Фабьен Родитель и Нил Армстронг рассказали, как они использовали Zephyr для создания предмета одежды.
Они похвалили Зефира, но отказались от инструментов обзора и управления.

Проект Zephyr Project с открытым исходным кодом Linux Foundation получил значительное внимание на февральской конференции по встроенному Linux (ELC).
Несмотря на то, что до сих пор нет продуктов для доставки, использующих эту легковесную операционную систему реального времени (RTOS) для микроконтроллеров, Фабьен Родитель и Нил Армстронг из французской встраиваемой фирмы BayLibre поделились своим опытом в разработке носимого устройства, которое может оказаться первым на основе Zephyr. продукт бытовой электроники.

Устройство BayLibre имеет ARM Cortex-A SoC, подключенный через шину SPI к Cortex-M4 STM32L4xx.
Это связано через I2C с другими, более легкими ядрами Cortex-M.
Родитель и Армстронг не могли больше сказать о дизайне, но объяснили, почему они выбрали Zephyr, и обсудили все за и против проекта.


Нил Армстронг раскрывает основную архитектуру носимых устройств BayLibre

(щелкните изображение, чтобы увеличить)

Parent и Armstrong требовалась бесплатная лицензированная ОСРВ для носимого устройства небольшого размера, а также драйверы для UART, I2C master и SPI slave.
Им также нужны были такие функции, как планировщик, таймеры, задачи, потоки и блокировки.
Список был быстро сужен до лицензированного Apache 2.0 Zephyr, NuttX с лицензией BSD с 3 пунктами или собственной операционной системы.
После того, как Apache myNewt уже принял участие в Zephyr, он запустил, и они поняли, что это также может сработать .

Родитель и Армстронг первыми рассмотрели подход «сделай сам».
«У разработки нашей собственной ОС было преимущество быть веселой», - сказал Армстронг.
«Он может быть адаптирован к нашим потребностям и процессу разработки, и мы лучше понимаем всю кодовую базу.
Недостатком является то, что это требует времени, и нет сообщества, чтобы помочь.
Это было бы трудно поддерживать, и было бы мало времени, чтобы повзрослеть и исправить ошибки ».

С учетом того, что крайний срок для клиентов BayLibre практически сводит на нет отечественный вариант, разработчики обратили внимание на NuttX, который имел преимущество в том, что он дольше, чем Zephyr.
Хотя Parent и Armstrong были разработчиками встраиваемых Linux-систем и довольно плохо знакомы с ОСРВ, Parent познакомился с NuttX в течение двух лет работы в недавно заброшенном Google Project Ara .
NuttX наиболее известен тем, что работает на контроллерах беспилотников Pixhawk .

«Преимуществом NuttX было то, что он был знаком, и он уже поддерживал нашу STM32L4xx SoC», - сказал Родитель.
«Но система сборки совершенно ненадежна.
В Project Ara всякий раз, когда мы меняли конфигурацию, мы не могли быть уверены, что она будет работать.
Кроме того, нет реального сообщества NuttX - это в основном один парень, который написал почти все, и в основном нет рецензирования ». Наконец, несмотря на лицензию NuttX BSD,« внутри ее репозитория много кода с такими лицензиями, как GPL, поэтому есть вероятность, что вы можете случайно включить некоторые, что пугает », - добавил Родитель.

Зефир за и против

Zephyr был объявлен только за несколько недель до того, как они начали проект, но у него уже было несколько привлекательных особенностей.
«Это очень похоже на Linux в стиле кодирования, системе сборки и концепции сопровождающих», - сказал Армстронг.
«У Зефира также есть отличная документация, и они быстро растут сильным сообществом.
Zephyr поддерживает низкое использование памяти, а также обладает широкими возможностями настройки и модульности.
Он предлагает современную совместную и упреждающую многопоточность и в конечном итоге добавит предварительную сертификацию безопасности ».

В то время самым большим недостатком Zephyr была его незрелость и тот факт, что он не поддерживал STM32L4xx SoC, только более старую модель STM32F1xx.
Последнее оказалось гораздо проще, чем они предполагали.
SoC оказались очень похожими, поэтому обновление порта заняло всего полтора дня, а тестирование закончилось в течение недели.
«Большая часть времени была потрачена на I2C и SPI, а также на отладку глупой проблемы с регистрами», - сказал Армстронг.


Ускоренный график Зефира против Linux.
Родитель: «Как только у вас будет чистый код, попробуйте добавить его».

(щелкните изображение, чтобы увеличить)

Проблемы возникли с самим процессом добычи и тем, что Зефир так быстро менялся.
«Мы сделали неправильный выбор - месяц ожидания, прежде чем внедрять код», - сказал Родитель.
«Когда мы сделали первую перезагрузку, ничего не получалось, и нам пришлось переписывать код управления питанием три раза.
Как только у вас будет чистый код, попробуйте добавить его.
В противном случае вы потратите часы на то, чтобы все перебрать ».

Процесс проверки исправлений, который сейчас пересматривается, также был более громоздким по сравнению с Linux.
«Zephyr использует Gerrit для проверки исправлений и JIRA для запросов функций, а также есть список рассылки», - сказал Родитель.
«Иногда вы не знаете, где искать ответы».

Gerrit позволяет легко не забывать патчи, но «это очень медленно и очень сложно», сказал Родитель.
«Одна из самых больших проблем заключается в том, что вам приходится выбирать рецензентов индивидуально, а не вещать.
Не существует концепции серии исправлений, поэтому вам нужно добавлять темы в серии исправлений, что усложняет отправку исправлений.
Его поиск в архиве действительно плох, и очень сложно получить полное представление о патче ».

JIRA также создала некоторые проблемы.
«JIRA дружелюбен к менеджерам и позволяет легко создавать графики, но не удобен для разработчиков, и нет хорошей информации о том, как его использовать», - сказал Родитель.
«Это еще одна коммуникационная среда, которая пересекается со списками рассылки и Gerrit».

HAL сюрприз

Родитель и Армстронг загрузили исправления порта ST в Gerrit и ждали отзывов.
Не было никакого ответа, но они продолжали пинговать сопровождающего на IRC.
Они почти месяц ждали ответа, и когда он пришел, он был довольно расплывчатым.

Они также получили обескураживающую записку от разработчика Zephyr от крупной корпорации.
«Он сказал, пожалуйста, прекрати свою работу, потому что мы хотим перенести наш собственный HAL в Zephyr на основе STM32 Cube SDK», - сказал Армстронг.
«Он сказал, что после того, как он сделал его предложение, мы можем переделать наш патч».

Они были удивлены принятием технологии HAL (Hardware Abstraction Layer).
«Наш патч был полностью переписан в нативном коде без каких-либо внешних ссылок», - сказал Армстронг.
«Мы привыкли к ядру Linux, где вы можете иметь только собственный, поддерживаемый код.
И сопровождающие с самого начала не рассказывали нам о HAL ».

«В списке рассылки Zephyr обсуждалась необходимость использования HAL перед переходом на нативный код», - добавил Родитель.
«Ответ был запрошен у сопровождающих, но ответа не было.
В настоящее время большинство сопровождающих Zephyr принадлежат компаниям SoC.
В результате HAL поставщика медленно заменяют родные драйверы или, по крайней мере, для ST.
Лично я хотел бы не иметь HALS ».

Родитель отметил, что проект ядра Linux предпочитает, чтобы их сопровождающие высшего уровня не работали для компаний SoC.
Он спросил у сопровождающего Linux DRM Дейва Эйрли о ситуации, и Эйрли сказал: «Причина, по которой сопровождающий верхнего уровня (я) не работает на Intel, AMD или каких-либо поставщиков, - я могу сказать, что НЕТ, когда ваши сопровождающие могут или не скажешь.

Родитель также предположил, что проект Zephyr не так прозрачен, как некоторые другие проекты с открытым исходным кодом.
Техническое руководство определяется голосованием членов Технического руководящего комитета Zephyr (TSC).
TSC открыт для участия членов сообщества, но вы должны быть приглашены для участия в собраниях.

«Для большинства протоколов собраний требуется разрешение, и это может занять до двух недель», - сказал он.
«Решения распределяются по JIRA, Gerrit и спискам рассылки, а сообщения в блоге контролируются отдельным комитетом, что затрудняет публикацию блога».

Есть также проблемы в работе с новым проектом, основанным на «нисходящей разработке», сказал Родитель.
Он добавил, что приоритетами являются запланированные функции, такие как унифицированное ядро, новый стек IP и поддержка протокола потоков.
«Они должны уточнить свои приоритеты и сообщить нам, если запланированные функции имеют приоритет по сравнению с вкладом сообщества».

В заключение Армстронг подвел итоги своего первого опыта Зефира.
«Нам не нравятся HAL, и инструменты проверки очень расстроили нас», - сказал он.
«Код все еще очень молодой, и API меняются быстро, поэтому вам нужно тестировать код для каждого выпуска, чтобы убедиться, что он все еще работает».

Тем не менее, Армстронг также подчеркнул преимущества Zephyr, не в последнюю очередь это тот факт, что это одна из немногих ОСРВ с открытым исходным кодом, оптимизированная для носимых устройств.
«Zephyr - это хороший дизайн для низкой памяти или низкой производительности на небольших процессорах», - сказал Армстронг.
«Это действительно похоже на Linux, а API просты и хорошо документированы.
Существует реальное и активное сообщество, и недостатки исправляются очень быстро ».

Армстронг также отметил возможное улучшение ситуации с обзорами: «Сегодня утром ходил слух, что Зефир переходит от Геррита к GitHub», - сказал он.
«Это не идеально.
но это точно лучше, чем Геррит.

Другие сессии Zephyr от ELC 2017, теперь доступные на YouTube, включают:

  • Анас Нашиф из Intel подводит итоги работы Зефира и планы на следующий год.
  • Энди Гросс из Linaro рассказывает о планах по интеграции дерева устройств в Zephyr.
  • Марсель Холтманн из Intel обсуждает использование Zephyr на микросхеме BBC.
  • Сакари Пусса из Intel объясняет, как начать разработку Zephyr с помощью JavaScript Runtime для Zephyr, включая режим разработчика «shell» и Web USB.
  • Винченцо Фрашино из ARM, работающий в группе Linaro LITE, рассказывает, как Zephyr работает на тестовой микросхеме ARM Beetle, реализующей подсистему IoT для процессоров Cortex-M.
  • Йохан Хедберг (Intel) рассказывает о поддержке Bluetooth от Zephyr, в том числе о стеке IPv6 / 6LoWPAN для реализации IPv6 поверх BLE и появившейся Bluetooth Mesh.

Вы можете посмотреть полное видео «War Story» о разработке Zephyr ниже:

«История войны: использование проекта Zephyr для разработки носимого устройства»

Эта статья защищена авторским правом © 2017 Linux.com и была первоначально опубликована здесь .
Он был воспроизведен этим сайтом с разрешения его владельца.
Пожалуйста, посетите Linux.com для получения последних новостей и статей о Linux и open source.