Что такое yocto linux
Обновлено: 21.11.2024
Yocto Framework — это совместный проект с открытым исходным кодом под руководством Linux Foundation, цель которого — упростить процесс разработки программного обеспечения для дистрибутивов Linux.
Эта платформа специально разработана для настройки образа Linux для встроенных приложений для развертывания во встроенных приложениях и приложениях Интернета вещей, которые не зависят от базовой архитектуры встроенного оборудования.
Проект Yocto упрощает создание настраиваемых дистрибутивов Linux, не зависящих от аппаратного обеспечения, с помощью интегрированной среды. Сюда входят все необходимые инструменты и процессы.
Таким образом, проект успешно создал гибкую экосистему для разработчиков встроенного программного обеспечения, позволяющую создавать и обмениваться программными стеками и передовыми технологиями для индивидуальной разработки дистрибутива Embedded Linux.
Системы сборки Android и Linux: что было до появления Yocto
Операционная система Linux была стандартной ОС, развернутой на нескольких встроенных устройствах/устройствах, таких как смарт-телевизоры, игровые приставки, медицинские устройства и т. д. С другой стороны, Android был представлен как ОС для смартфонов, планшетов и других портативных устройств.
Android находится под управлением Google Inc., которая предлагает периодические выпуски версий и обновления программного обеспечения для них. Android состоит из предварительно определенной среды графического интерфейса пользователя, системы сборки и абстракций ОС, что экономит драгоценное время, необходимое для создания смарт-устройства на базе Android с нуля.
Android как операционная система для интеллектуальных мобильных устройств пользуется популярностью среди производителей устройств благодаря наличию стандартизированных API и поддержке очень активного сообщества разработчиков приложений Google.
В отличие от этой четко определенной экосистемы ОС Android, экосистема разработки Linux была фрагментирована между отдельными встроенными системами, разработанными каждым SOC или поставщиком микропроцессоров, таким как Intel, Texas Instrument, FreeScale.
Это означало, что каждый отдельный проект разработчик должен был начинать с нуля. Это включало следующий довольно утомительный процесс, как описано ниже:
- Извлечение исходного файла.
- Интеграция отдельных программных компонентов.
- Настройка программного обеспечения BSP и перенос ОС.
- Создание пользовательского дистрибутива ОС — это зависело от руководства и рекомендаций, предоставленных поставщиком используемой микропроцессорной платформы.
Запуск проекта Yocto
Поэтому сообщество Linux-разработчиков осознало необходимость стандартного набора инструментов и фреймворка, чтобы упростить процесс разработки пользовательской сборки Linux для встраиваемых устройств. В 2010 году проект Yocto был инициирован Linux Foundation. Позже, в 2011 году, проект был официально запущен совместно с 22 организациями, наряду с OpenEmbedded.
Проект Yocto был запущен с целью создания пространства для совместной работы, где разработчики, работающие над приложениями для встраиваемых систем Linux, могут обмениваться инструментами и процессами. Это, в свою очередь, сэкономит время и силы, которые можно потратить на решение более важных задач разработки.
Обзор Yocto Framework:
Все цели, которые Yocto Project поставил перед собой, твердо поддерживаются лежащей в его основе технологической архитектурой.
Эта архитектура платформы Yocto носит модульный характер, поскольку она была разработана как программный стек, состоящий из различных уровней, управляющих определенной задачей/функцией.
Чтобы помочь нам понять, почему эта архитектура делает Yocto такой мощной средой, давайте рассмотрим некоторые уровни и преимущества, которые предлагает эта модель.
Yocto IDE. Источник изображения: Yocto Метаданные: это программный уровень, который содержит предоставленные пользователем файлы рецептов, файлы конфигурации и добавления, а также исправления. В основном он состоит из конкретной информации о сборке и данных, которые сообщают BitBake, что делать дальше.
Машина/уровень BSP: этот уровень предоставляет конфигурации машины. Этот уровень состоит из информации и компонентов, специфичных для целевого оборудования, для которого создается образ/SDK. Вы можете настроить уровень BSP в соответствии с требованиями встроенного проекта, настроив метауровень.
Уровень дистрибутива/Конфигурация политики. Уровень дистрибутива включает в себя общие политики или политики верхнего уровня, относящиеся к конкретному дистрибутиву. Уровень может состоять из файлов классов, файлов конфигурации и различных рецептов для пользовательского образа, конфигурации для конкретного дистрибутива, сценариев инициализации и т. д.
Система сборки OpenEmbedded: это система сборки для проекта Yocto, основанная на «Poky», эталонном встроенном дистрибутиве. В документации Yocto Project ее часто называют просто «системой сборки».
BitBake: BitBake — это ключевой компонент системы сборки OpenEmbedded, используемый для создания образов. BitBake анализирует метаданные, находит файлы исправлений и применяет их к исходным файлам. Он также может найти и применить несколько исправлений для одного рецепта.
Система сборки Poky. Система сборки Poky служит эталонным встроенным дистрибутивом, а также тестовой конфигурацией для проекта Yocto. Он используется для проверки компонентов Yocto Project и указания способа настройки дистрибутива.
Преимущества Yocto:
- Модульная архитектура поддерживает простую настройку. Как уже упоминалось, многоуровневая инфраструктура Yocto является фундаментальной частью модели Yocto. Уровни классифицируют все связанные функции в отдельные пакеты, такие как уровни платформы, уровень графического интерфейса и т. д. Вы можете включить или исключить эти слои в свою сборку, настроенную в соответствии с требованиями вашего проекта. Сегментация связанной информации в один слой означает, что вы можете вносить необходимые изменения в несколько простых шагов, а не менять всю систему сборки. Многослойность упрощает процесс настройки и повторного использования слоев Yocto для различных нужд проекта.
- Легкая доступность и гибкость. Будучи проектом с открытым исходным кодом, компоненты Yocto, такие как особенности сборки Poky, можно изменять, совместно использовать и повторно использовать в соответствии с требованиями конкретного встроенного проекта. Кроме того, все файлы Yocto Project систематически хранятся в определенных репозиториях в веб-браузере исходного кода. Эти файлы исходного кода аккуратно организованы в такие сегменты, как Poky, плагины IDE, ядро Yocto Linux и другие. Как разработчик, вы можете легко получить доступ к этим файлам исходного кода, создать их локальный / Git-клон и изменить их — как в соответствии с вашими требованиями.
- Механизм важнее политики: Yocto в основном основан на механизме, а не на политике. Это помогает разработчикам систем свободно устанавливать политику в соответствии с потребностями своего проекта/назначения.
- Упрощенный процесс настройки. В отличие от традиционной модели дистрибутива Linux, которая включает в себя полную установку и настройку, вы можете использовать проект Yocto, чтобы либо создать индивидуальный дистрибутив Linux, либо просто использовать определенные пакеты для добавления определенной функции на встроенное устройство. Например. , если вы хотите иметь богатый графический интерфейс во встроенном приложении, вы можете включить любую из доступных опций — Qt, X11, GTK+ или SDL для вашего устройства, если оно оснащено аппаратным обеспечением дисплея. Если ваше целевое устройство не содержит дисплея оборудование, вам вообще не нужно устанавливать эти компоненты.
- Упрощенный процесс выпуска версий и обновлений: Yocto следует строгому графику выпусков: основные выпуски выходят каждые 6 месяцев. Это позволяет командам разработчиков лучше планировать свою работу. Разработчики могут легко выбрать нужную ветку Yocto, которая предлагает доступ к новейшим функциям. Такой оптимизированный график обновлений также означает, что распространенные уязвимости безопасности и другие потенциальные проблемы устраняются вовремя. Ниже представлен график выпуска Yocto.
- Общая поддержка сообщества. Разработчики, использующие Yocto для дистрибутивов Embedded Linux, могут обратиться за поддержкой к сообществу разработчиков, работающих над улучшением проекта Yocto. Это означает, что если вы обнаружите какие-либо проблемы на любом этапе разработки встроенного проекта, вы можете обратиться к сообществу разработчиков. Это полезно, особенно для начинающих разработчиков, которые плохо знакомы с системами сборки Yocto.
- Доступ к широкому набору инструментов и SDK. Сообщество Yocto поддерживает предварительно протестированные цепочки инструментов и SDKS, совместимые с широким спектром платформ и архитектур. Эти цепочки инструментов легко настроить с помощью стандартных механизмов рецептов Yocto. На самом деле исходный код Yocto по умолчанию поддерживает несколько коммерческих наборов инструментов. Это предлагает разработчикам множество вариантов и помогает им поддерживать различные приложения. Кроме того, проект также предоставляет доступ к набору инструментов для разработки приложений, подключаемому модулю ECLIPSE IDE, графическому пользовательскому интерфейсу.
- Облегчает процесс переноса на Linux: в связи с изменением требований к проекту или в связи с разработкой новых линеек продуктов перед группами разработчиков ставится задача переноса встроенного приложения на новую аппаратную платформу. Это требует переноса ОС Linux на новую аппаратную архитектуру. В отличие от традиционного процесса, Yocto Project сделал портирование встроенной ОС Linux быстрой и простой задачей для разработчиков. ол>р>
- Основы Yocto Project, включая структуру и основную терминологию.
- Как Yocto Project помогает встраиваемым аппаратным системам адаптироваться с нуля до конечного потребительского продукта
- Познакомьтесь с тем, как разработать образ Linux на reTerminal, расширяемом устройстве ЧМИ на базе Raspberry Pi Compute Module 4.
- Базовый уровень инфраструктуры дистрибутива, иллюстрирующий настройку дистрибутива.
- Средство для проверки компонентов Yocto Project.
- Целевые двоичные файлы времени выполнения: к ним относятся загрузчик, ядро, модули ядра, образ корневой файловой системы. и любые другие вспомогательные файлы, необходимые для развертывания Linux на целевой платформе.
- Фид пакетов. Это коллекция пакетов программного обеспечения, которые можно установить на целевой компьютер. Вы можете выбрать формат пакета (например, deb, rpm, ipk) в зависимости от ваших потребностей. Некоторые из них могут быть предварительно установлены в бинарных файлах целевой среды выполнения, однако можно создавать пакеты для установки в развернутую систему.
- Целевой SDK. Это набор библиотек и файлов заголовков, представляющих программное обеспечение, установленное на вашем целевом устройстве. Они используются разработчиками приложений при создании своего кода, чтобы убедиться, что они связаны с соответствующими библиотеками.
- Образ корневой файловой системы и любые другие вспомогательные файлы, необходимые для развертывания Linux на целевой платформе
- Ядро, загрузчик и модули ядра, соответствующие целевому оборудованию
- Связь инструментов, используемая для создания всех целевых двоичных файлов.
- Кроссплатформенная поддержка с помощью контейнеров (CROPS)
Кроссплатформенная среда разработки, использующая контейнеры Docker - Extensible Software Development Kit (eSDK)
Extensible SDK предоставляет цепочку инструментов для совместной разработки и библиотеки, адаптированные к содержимому образа, чтобы обеспечить разработку функций, характерных для целевого устройства. - Devtool
Инструмент командной строки, который помогает создавать, тестировать и упаковывать программное обеспечение в рамках расширяемого SDK - Подключаемый модуль Eclipse Ide
Интегрирует функции и набор инструментов в Eclipse IDE - Toaster
Предоставляет веб-интерфейс для системы сборки Yocto Project с большими возможностями судебной экспертизы. Настройка, запуск сборок и просмотр информации о сборках - Auto Upgrade Helper
Утилита, которая автоматически создает обновления рецептов на основе новых версий, публикуемых ранее. - Система отчетов о рецептах
Система отчетов о рецептах отслеживает доступные версии рецептов для Yocto Project и помогает разработчикам управлять поддерживаемыми ими рецептами - Patchwork
Patchwork — это организационный инструмент, используемый для обработки исправлений для каждого выпуска. - AutoBuilder
Механизм AutoBuilder немедленно проверяет любые изменения, внесенные в эталонный дистрибутив - Cross-Prelink
Изменяет общие библиотеки ELF и динамически подключаемые двоичные файлы ELF, предварительно назначая адреса загрузки для каждого объекта ELF - Псевдо
Позволяет успешно выполнять операции, выполняемые обычным пользователем, как если бы у него были права администратора. - Bitbake
Создает образ, следуя задачам, указанным в рецептах - OpenEmbedded Core (Oe-Core)
Содержит базовый уровень рецептов, классов и связанных файлов, которые предназначены для представления общей базовой линии для любого дистрибутива на основе OpenEmbedded - Poky
Эталонный дистрибутив для встраиваемых устройств
BSP включен в качестве моделируемой аппаратной платформы - Matchbox
Среда для системы X Window, работающей на встроенных платформах - Opkg
Opkg – это облегченная система управления пакетами для встроенных устройств Linux. - Платы для разработки
Прототип оборудования для MIP, NXP, Intel, ARM и других - Пакеты поддержки плат (BSP)
Предварительно упакованное программное обеспечение, предназначенное для определенного типа платы и процессора
Yocto становится мейнстримом!
С тех пор, как было обнаружено, что Yocto облегчает жизнь разработчикам встраиваемых систем Linux, он стал основным выбором для создания пользовательских систем Linux.
Осознавая преимущества единой платформы для разработки приложений для встраиваемых систем Linux, несколько заинтересованных сторон в отрасли пообещали поддержать проект Yocto.
В число этих организаций входят: Intel, LSI, Freescale Semiconductor, Dell, MontaVista Software, Texas Instruments, Mentor Graphics, Cavium Networks, Timesys, Tilera Corporation, NetLogic Microsystems и Wind River.
Кроме того, новые отраслевые инициативы, такие как Automotive Grade Linux и GENIVI Alliance, открыли свои двери для проекта Yocto. Излишне говорить, что это значительно поощрит широкое использование Yocto Project для приложений Embedded Linux.
Yocto Project – это отличный проект сообщества с открытым исходным кодом, который позволяет вам создать собственную систему Linux с нуля и загрузить ее на встроенное оборудование, что делает встроенный Linux простым и доступным. Он помогает разработчикам создавать настраиваемые системы на основе ядра Linux, предоставляя полезные шаблоны, инструменты и методы, а также широкую поддержку аппаратных архитектур на ARM, PPC, MIPS, x86 (32- и 64-разрядная версии).
В этой статье речь пойдет о:
reTerminal поставляется с предустановленной операционной системой Raspberry Pi. Мы также можем прошить 64-битную ОС Ubuntu или другую ОС, такую как Fedora, OpenSUSE, Debian, Ubuntu или CentOS, в хранилище eMMC CM4 на reTerminal. Однако следуя reTerminal Yocto SDK с нашей вики-страницы, вы даже можете создать свой собственный образ системы reTerminal с помощью Yocto. Кроме того, руководство по началу работы с reTerminal можно найти здесь.
Что такое Yocto Project?
Проект Yocto структурирован с использованием кроссплатформенных инструментов и метаданных, позволяющих разработчикам быстро создавать настраиваемые дистрибутивы Linux из исходного кода, что упрощает процесс разработки. По сравнению с полным дистрибутивом Linux, настроенная система зарезервирует программное обеспечение, которое вам нужно, чтобы сделать систему более конкретной для вашего приложения. Yocto Project имеет преимущества в разработке систем и приложений, архивировании и управлении. Разработчики могут настраивать свои системы с точки зрения скорости, объема памяти и даже использования памяти. Yocto Project позволяет настраивать программное обеспечение и обмениваться конструкциями для нескольких аппаратных платформ, а также поддерживает масштабируемость стека программного обеспечения. (Ссылка: Руководство по обзору и концепциям проекта Yocto)
Yocto Project обеспечивает большую гибкость. Для корпоративных предприятий разработчики встраиваемых систем могут настраивать внутренние дистрибутивы Linux на основе существующих базовых систем Linux и развертывать их в нескольких конечных продуктах.
С помощью Yocto при разработке вашей операционной системы вы уменьшите нагрузку на настройку обновлений кросс-дистрибутивов Linux и уменьшите объем работы, необходимой для межархитектурной миграции.
Что такое компоненты Yocto Project, инструменты и рабочий процесс сборки?
Проект Yocto – это сочетание проектов с открытым исходным кодом и метаданных. Его цель – помочь разработчикам разрабатывать индивидуальные системы Linux для встраиваемых продуктов независимо от аппаратной архитектуры. Yocto Project предоставляет ряд инструментов и обширные ресурсы (включая продолжение, программное обеспечение, конфигурацию, шаблоны) сообщества для создания (адаптированных) систем Linux для встраиваемых устройств.
Компоненты и инструменты отделены от эталонного дистрибутива (Poky) и системы сборки OpenEmbedded. Большинство компонентов и инструментов загружаются отдельно. Yocto Project объединяет, поддерживает и проверяет следующие ключевые компоненты:
Rf: Что такое проект Yocto?
1. BitBake: основной инструмент системы сборки OpenEmbedded.
BitBake играет роль ядра системы сборки и отвечает за анализ метаданных, создание на их основе списков задач и последующее выполнение этих задач.
2. Система сборки OpenEmbedded, которая поддерживается совместно с OpenEmbedded Project.
OpenEmbedded-Core (OE-Core) – это метаданные, состоящие из основных рецептов, классов и связанных файлов. Эти метаданные предназначены для использования во многих различных производных системах OpenEmbedded (включая проекты Yocto).
3. Poky: эталонный дистрибутив.
Poky — это название эталонного дистрибутива или эталонной ОС проекта Yocto. Poky включает систему сборки OpenEmbedded (BitBake и OpenEmbedded-Core) и набор метаданных, которые помогут вам приступить к созданию собственного дистрибутива. Poky использует OpenEmbedded Build System для создания небольшой встраиваемой операционной системы. Poky — это уровень интеграции поверх OE-Core. Poky предоставляет следующее:
Рабочий процесс системы сборки OpenEmbedded
При загрузке системы сборки «файл» сборки Poky называется рецептом и слоем. Вы можете изменять, назначать или любым другим образом создавать собственные встроенные Linux.
На следующей диаграмме показан высокоуровневый рабочий процесс сборки. В этом разделе рассматриваются основные логические блоки ввода, вывода, обработки и метаданных, из которых состоит рабочий процесс.
После того, как мы загрузим образ системы Yocto на reTerminal, включите reTerminal. Здесь вы увидите всплывающий журнал ядра на ЖК-дисплее reTerminal и, наконец, откроется демонстрационное приложение, созданное с использованием Qt.
Время загрузки образа системы по умолчанию составляет около 17 секунд.
Мы также проверили использование оборудования и интерфейсов для созданного нами Yocto Image. Нажмите здесь, если вы хотите проверить доступность оборудования с помощью различных изображений, чтобы расширить свои идеи.
Yocto Project подходит для встраиваемых устройств и устройств IoT с ограниченными ресурсами: в отличие от полного дистрибутива Linux разработчики встраиваемых систем могут использовать Yocto Project для создания сокращенной версии для встраиваемых устройств. Вам нужно только добавить необходимые функциональные инструменты и программные пакеты в вашу систему Linux. Если на устройстве есть дисплей, вы можете использовать такие системные компоненты, как X11, GTK+, Qt, Clutter и SDL, чтобы создать дистрибутив с улучшенным пользовательским интерфейсом.
reTerminal также оснащен 5-дюймовым емкостным сенсорным экраном IPS с разрешением 1280 x 720 и плотностью пикселей 293 PPI, обеспечивающим высокое разрешение и насыщенные цвета. Это разрешение в 1,6 раза выше, чем наиболее распространенное разрешение для 5-дюймовых дисплеев, которое составляет 800 x 480. Кроме того, по сравнению с дисплеями TN, дисплей IPS на reTerminal также предлагает лучшие углы обзора! Вы можете создавать различные взаимодействия с графическим интерфейсом для своей системы, используя Yocto Project на reTerminal.
Терминология проекта Yocto
Прежде чем мы приступим к работе с Yocto Project, давайте взглянем и запомним следующую терминологию, чтобы помочь вам лучше понять структуру и все компоненты Yocto Project.
Мы с нетерпением ждем создания вашей системы на reTerminal, не стесняйтесь прикалывать нас, если у вас возникнут какие-либо вопросы во время разработки! Присоединяйтесь к сообществу Seeed Discord, чтобы получать поддержку в прямом эфире!
Изучите дистрибутивы Yocto, Buildroot, OpenWRT и адаптированные дистрибутивы для настольных компьютеров, чтобы выбрать правильный вариант для своего проекта.
Linux развертывается на гораздо большем количестве устройств, чем предполагал Линус Торвальдс, когда работал над ним в своей комнате в общежитии. Разнообразие поддерживаемых архитектур чипов поразительно и привело к появлению Linux на больших и малых устройствах; от огромных мейнфреймов IBM до крошечных устройств размером не больше их портов подключения и всего, что между ними. Он используется в крупных корпоративных центрах обработки данных, устройствах интернет-инфраструктуры и системах персонального развития. Он также питает бытовую электронику, мобильные телефоны и многие устройства Интернета вещей.
При создании программного обеспечения Linux для настольных компьютеров и устройств корпоративного класса разработчики обычно используют дистрибутив для настольных ПК, такой как Ubuntu, на своих сборочных компьютерах, чтобы иметь среду, максимально приближенную к той, в которой будет развернуто программное обеспечение. Такие инструменты, как VirtualBox и Docker, позволяют еще лучше согласовать среды разработки, тестирования и производства.
Что такое встроенная система?
В Википедии встроенная система определяется как "компьютерная система со специальной функцией в рамках более крупной механической или электрической системы, часто с вычислительными ограничениями в реальном времени".
Достаточно просто сказать, что встроенная система — это компьютер, о котором большинство людей не думают как о компьютере. Его основная роль заключается в том, чтобы служить своего рода устройством, и он не считается вычислительной платформой общего назначения.
Дополнительные ресурсы по Linux
Среда разработки в программировании встроенных систем обычно сильно отличается от среды тестирования и производственной среды. Они могут использовать различные архитектуры микросхем, программные стеки и даже операционные системы. Рабочие процессы разработки сильно отличаются для разработчиков встраиваемых систем и разработчиков настольных компьютеров и веб-разработчиков.Как правило, выходные данные сборки будут состоять из полного образа программного обеспечения для целевого устройства, включая ядро, драйверы устройств, библиотеки и прикладное программное обеспечение (а иногда и загрузчик).
В этой статье я представлю обзор четырех общедоступных вариантов сборки встраиваемых систем Linux. Я расскажу, каково это работать с каждым из них, и предоставлю достаточно информации, чтобы помочь читателям решить, какой инструмент использовать для их дизайна. Я не буду учить вас, как пользоваться любым из них; после того, как вы сузили свой выбор, есть множество углубленных онлайн-ресурсов для обучения. Ни один вариант не подходит для всех случаев использования, и я надеюсь представить достаточно подробностей, чтобы определить ваше решение.
Йокто
Проект Yocto определяется как "проект совместной работы с открытым исходным кодом, который предоставляет шаблоны, инструменты и методы, помогающие создавать собственные системы на базе Linux для встраиваемых продуктов независимо от аппаратной архитектуры". Это набор рецептов, значений конфигурации и зависимостей, используемых для создания пользовательского образа среды выполнения Linux, адаптированного к вашим конкретным потребностям.
Yocto использует Openembedded в качестве системы сборки. Технически это два отдельных проекта; на практике, однако, пользователям не нужно понимать различие, и названия проектов часто используются как синонимы.
Вывод сборки проекта Yocto состоит из трех компонентов:
Преимущества
Проект Yocto широко используется в отрасли и поддерживается многими влиятельными компаниями. Кроме того, этому способствует большое и активное сообщество разработчиков и экосистема. Сочетание энтузиастов открытого исходного кода и корпоративных спонсоров помогает продвигать проект Yocto.
В Yocto есть множество вариантов получения поддержки. Есть книги и другие учебные материалы, если вы хотите сделать это самостоятельно. Многие инженеры с опытом работы в Yocto доступны, если вы хотите нанять специалистов. А многие коммерческие организации предоставляют готовые продукты или услуги на основе Yocto для реализации и настройки вашего проекта.
Проект Yocto легко расширяется за счет слоев, которые можно публиковать независимо для добавления дополнительных функций, для целевых платформ, недоступных в выпусках проекта, или для хранения настроек, уникальных для вашей системы. В вашу конфигурацию можно добавить слои, чтобы добавить уникальные функции, которые специально не включены в стандартные выпуски; например, слой «мета-браузер» содержит рецепты для веб-браузеров, которые можно легко создать для вашей системы. Поскольку они поддерживаются независимо друг от друга, графики выпуска слоев могут отличаться от стандартных выпусков Yocto (с учетом скорости разработки слоев).
У Yocto, возможно, самая широкая поддержка устройств из всех вариантов, обсуждаемых в этой статье. Благодаря поддержке со стороны многих производителей полупроводников и плат Yocto, вероятно, будет поддерживать любую целевую платформу, которую вы выберете. Прямые выпуски Yocto поддерживают только несколько плат (чтобы обеспечить надлежащее тестирование и циклы выпуска), однако стандартной рабочей моделью является использование внешних слоев поддержки плат.
Наконец, Yocto чрезвычайно гибкий и настраиваемый. Настройки для вашего конкретного приложения могут храниться на уровне для инкапсуляции и изоляции. Настройки, уникальные для векторного слоя, обычно хранятся как часть самого слоя, что позволяет применять одни и те же настройки одновременно к нескольким системным конфигурациям. Yocto также обеспечивает четко определенный приоритет слоев и возможность переопределения. Это позволяет определить порядок применения слоев и поиска метаданных. Это также позволяет вам переопределять настройки в слоях с более высоким приоритетом; например, многие настройки существующих рецептов будут добавлены в ваши личные слои, причем порядок точно контролируется приоритетами.
Недостатки
Самым большим недостатком проекта Yocto является кривая обучения. Требуется значительное время и усилия, чтобы изучить систему и по-настоящему понять ее. В зависимости от ваших потребностей, это может быть слишком большим вложением в технологии и компетенции, которые не являются центральными для вашего приложения.В таких случаях хорошим вариантом может стать сотрудничество с одним из коммерческих поставщиков.
Сроки разработки и ресурсы для сборки проектов Yocto довольно высоки. Количество пакетов, которые необходимо собрать, включая цепочку инструментов, ядро и все целевые компоненты среды выполнения, является значительным. Рабочие станции разработчиков Yocto, как правило, представляют собой большие системы. Использование компактного ноутбука не рекомендуется. Это можно смягчить, используя облачные серверы сборки, доступные от многих поставщиков. Кроме того, Yocto имеет встроенный механизм кэширования, который позволяет повторно использовать ранее созданные компоненты, когда он определяет, что параметры для сборки конкретного пакета не изменились.
Рекомендация
Использование проекта Yocto для вашего следующего проекта встраиваемой системы Linux — это хороший выбор. Из представленных здесь вариантов этот наиболее широко применим независимо от вашего целевого варианта использования. Широкая отраслевая поддержка, активное сообщество и широкая поддержка платформ делают его хорошим выбором для обязательных дизайнеров.
Корневая сборка
Проект Buildroot определяется как "простой, эффективный и удобный в использовании инструмент для создания встроенных систем Linux с помощью кросс-компиляции". Он разделяет многие из тех же целей, что и проект Yocto, однако он ориентирован на простоту и минимализм. Как правило, Buildroot отключает все необязательные параметры времени компиляции для всех пакетов (за некоторыми заметными исключениями), что приводит к минимально возможной системе. Разработчик системы должен включить настройки, подходящие для данного устройства.
Buildroot собирает все компоненты из исходного кода, но не поддерживает управление целевыми пакетами. Таким образом, его иногда называют генератором прошивки, поскольку образы в основном исправляются во время сборки. Приложения могут обновлять целевую файловую систему, но нет механизма для установки новых пакетов в работающую систему.
Вывод Buildroot состоит из трех компонентов:
Преимущества
Стремление Buildroot к простоте означает, что в целом его легче освоить, чем Yocto. Основная система сборки написана на Make и достаточно коротка, чтобы позволить разработчику понять всю систему, и в то же время достаточно расширяема, чтобы удовлетворить потребности разработчиков встраиваемых систем Linux. Ядро Buildroot обычно обрабатывает только стандартные варианты использования, но его можно расширить с помощью сценариев.
Система Buildroot использует для своей конфигурации обычные файлы Makefile и язык Kconfig. Kconfig был разработан сообществом ядра Linux и широко используется в проектах с открытым исходным кодом, что делает его знакомым многим разработчикам.
Из-за того, что целью разработки является отключение всех необязательных настроек времени сборки, Buildroot обычно создает образы минимально возможного размера, используя готовую конфигурацию. Время сборки и ресурсы хоста сборки также в целом будут меньше, чем у проекта Yocto.
Недостатки
Фокус на простоте и минимальном количестве включенных параметров сборки означает, что вам может потребоваться выполнить значительную настройку, чтобы настроить сборку Buildroot для вашего приложения. Кроме того, все параметры конфигурации хранятся в одном файле, а это означает, что если у вас несколько аппаратных платформ, вам нужно будет внести каждое из ваших изменений в настройку для каждой платформы.
Любое изменение файла конфигурации системы требует полной перестройки всех пакетов. Это несколько смягчается минимальными размерами образов и временем сборки по сравнению с Yocto, но это может привести к длительной сборке, пока вы настраиваете конфигурацию.
Кэширование промежуточного состояния пакета не включено по умолчанию и не так тщательно, как в реализации Yocto. Это означает, что хотя первая сборка может быть короче эквивалентной сборки Yocto, последующие сборки могут потребовать перестроения многих компонентов.
Рекомендация
Использование Buildroot для вашего следующего встраиваемого проекта Linux — хороший выбор для большинства приложений. Если ваш проект требует нескольких типов оборудования или других различий, вы можете пересмотреть свое решение из-за сложности синхронизации нескольких конфигураций, однако для системы, состоящей из одной установки, Buildroot, скорее всего, подойдет вам.
OpenWRT/LEDE
Проект OpenWRT был запущен для разработки пользовательских прошивок для потребительских маршрутизаторов. Многие из недорогих маршрутизаторов, доступных в вашем местном магазине, способны работать под управлением системы Linux, но, возможно, не из коробки. Производители этих маршрутизаторов могут не предоставлять частые обновления для устранения новых угроз, и даже если они это делают, механизмы установки обновленных образов сложны и подвержены ошибкам.Проект OpenWRT создает обновленные образы прошивки для многих устройств, от которых отказались их производители, и дает этим устройствам новую жизнь.
Основными результатами проекта OpenWRT являются двоичные образы для большого количества коммерческих устройств. Существуют доступные по сети репозитории пакетов, которые позволяют конечным пользователям устройств добавлять новое программное обеспечение в свои системы. Система сборки OpenWRT — это система сборки общего назначения, которая позволяет разработчикам создавать пользовательские версии в соответствии с их собственными требованиями и добавлять новые пакеты, но ее основное внимание уделяется целевым двоичным файлам.
Преимущества
Если вы ищете замену прошивки для коммерческого устройства, OpenWRT должен быть в вашем списке вариантов. Он хорошо поддерживается и может защитить вас от проблем, с которыми не может справиться прошивка производителя. Вы также можете добавить дополнительные функции, чтобы сделать ваши устройства более полезными.
Если ваш встроенный проект ориентирован на работу с сетью, OpenWRT — хороший выбор. Сетевые приложения являются основным вариантом использования OpenWRT, и вы, вероятно, найдете многие из этих программных пакетов, доступных в нем.
Недостатки
OpenWRT налагает важные политические решения на ваш дизайн (по сравнению с Yocto и Buildroot). Если эти решения не соответствуют вашим целям проектирования, возможно, вам придется внести нетривиальные изменения.
Управлять пакетными обновлениями для множества развернутых устройств сложно. Это, по определению, приводит к загрузке программного обеспечения, отличной от той, которую протестировала ваша группа контроля качества. Кроме того, с большинством менеджеров пакетов сложно гарантировать атомарную установку, а несвоевременное включение и выключение питания может привести к непредсказуемому состоянию устройства.
Рекомендация
OpenWRT — хороший выбор для любительских проектов или повторного использования коммерческого оборудования. Это также хороший выбор для сетевых приложений. Если вам нужна значительная настройка по сравнению с установкой по умолчанию, вы можете предпочесть Buildroot или Yocto.
Настольные дистрибутивы
Общий подход к разработке встраиваемых систем Linux заключается в том, чтобы начать с настольного дистрибутива, такого как Debian или Red Hat, и удалять ненужные компоненты до тех пор, пока установленный образ не впишется в размер вашего целевого устройства. Это подход, используемый для популярного дистрибутива Raspbian для платформы Raspberry Pi.
Преимущества
Основным преимуществом этого подхода является знакомство. Часто разработчики встраиваемых систем Linux также являются пользователями настольных систем Linux и хорошо разбираются в выбранном ими дистрибутиве. Использование аналогичной среды на цели может позволить разработчикам быстрее приступить к работе. В зависимости от выбранного дистрибутива можно установить множество дополнительных инструментов, используя стандартные инструменты упаковки, такие как apt и yum.
Возможно, к целевому устройству можно подключить дисплей и клавиатуру и выполнять всю разработку непосредственно на нем. Для разработчиков, плохо знакомых со встроенным пространством, это, скорее всего, будет более знакомой средой и избавит от необходимости настраивать и использовать сложную настройку для совместной разработки.
Количество пакетов, доступных для большинства настольных дистрибутивов, как правило, больше, чем для встроенных сборщиков, которые обсуждались ранее. Благодаря большей пользовательской базе и более широкому разнообразию вариантов использования вы можете найти все пакеты среды выполнения, которые вам нужны для вашего приложения, уже созданные и готовые к использованию.
Недостатки
Использование цели в качестве основной среды разработки, скорее всего, будет медленным. Запуск инструментов компилятора — это ресурсоемкая операция, которая, в зависимости от объема создаваемого вами кода, может снизить производительность.
За некоторыми исключениями дистрибутивы для настольных компьютеров не предназначены для работы с системами с низким уровнем ресурсов, и может быть сложно надлежащим образом обрезать целевые изображения. Точно так же ожидаемый рабочий процесс в настольной среде не идеален для большинства встраиваемых систем. Получить воспроизводимую среду таким образом сложно. Добавление и удаление пакетов вручную чревато ошибками. Это можно написать с помощью инструментов для конкретного дистрибутива, таких как debootstrap для систем на базе Debian. Чтобы еще больше улучшить воспроизводимость, вы можете использовать инструмент управления конфигурацией, такой как CFEngine (полное раскрытие которого сделано моим работодателем, Mender.io). Однако вы по-прежнему зависите от поставщика распространения, который будет обновлять пакеты в соответствии со своими потребностями, а не с вашими.
Рекомендация
Остерегайтесь такого подхода к продукту, который вы планируете вывести на рынок. Это прекрасная модель для любителей; однако для продуктов, нуждающихся в поддержке, такой подход, скорее всего, вызовет затруднения. Хотя вы можете начать быстрее, это может стоить вам времени и усилий в долгосрочной перспективе.
Другие соображения
Это обсуждение сосредоточилось на функциональности систем сборки, но обычно существуют нефункциональные требования, которые могут повлиять на ваше решение. Если вы уже выбрали систему на кристалле (SoC) или плату, ваш выбор, скорее всего, будет диктоваться поставщиком.Если ваш поставщик предоставляет пакет поддержки плат (BSP) для данной системы, его использование, как правило, экономит немало времени, но, пожалуйста, изучите качество BSP, чтобы избежать проблем на более позднем этапе цикла разработки.
Если ваш бюджет позволяет, вы можете рассмотреть возможность использования коммерческого поставщика для вашей целевой ОС. Есть компании, которые предоставят проверенную и поддерживаемую конфигурацию многих опций, обсуждаемых здесь, и, если у вас нет опыта работы со встроенными системами сборки Linux, это хороший выбор, который позволит вам сосредоточиться на своей основной компетенции.
В качестве альтернативы вы можете рассмотреть коммерческое обучение для вашего персонала по разработке. Это, вероятно, будет дешевле, чем у коммерческого поставщика ОС, и позволит вам быть более самодостаточным. Это быстрый способ освоить основы выбранной вами системы сборки.
Наконец, возможно, у вас уже есть разработчики, имеющие опыт работы с одной или несколькими системами. Если у вас есть инженеры, у которых есть предпочтения, безусловно, стоит принять это во внимание при принятии решения.
Обзор
Существует множество вариантов создания встраиваемых систем Linux, каждый из которых имеет свои преимущества и недостатки. Крайне важно расставить приоритеты в этой части вашего дизайна, так как переключение систем на более поздних этапах процесса обходится очень дорого. Помимо этих вариантов постоянно разрабатываются новые системы. Надеемся, что это обсуждение предоставит некоторый контекст для обзора новых систем (и упомянутых здесь) и поможет вам принять твердое решение для вашего следующего проекта.
Несколько лет назад Yocto стал популярным дистрибутивом Linux для встраиваемых устройств и устройств Интернета вещей. Не все разработчики Linux знают об этом или даже знают, что их организация использует его, поэтому мы решили рассмотреть его здесь.
Небольшая перспектива
Встраиваемые системы, необходимые для управления в реальном времени, изначально разрабатывались как узкоспециализированные системы, работающие на определенных процессорах и оборудовании. Это означало, что для каждого нового разрабатываемого встроенного устройства или системы каждый раз приходилось писать новое управляющее программное обеспечение. Вместо того, чтобы изобретать велосипед для нового продукта, требовался более общий подход. Разработка операционных систем, не зависящих от процессора или оборудования, таких как VxWorks или QNX, решила эту проблему. Однако им по-прежнему требовался программный уровень, позволяющий портировать образ RTOS и работать на конкретном процессоре и подсистемах, присутствующих на аппаратной платформе или плате разработки.
Этот уровень программного обеспечения, известный как пакет поддержки платы или BSP, обеспечивал доступ ОСРВ ко всем функциям, предлагаемым на плате разработки. BSP обычно проектировались и кодировались производителем платы и включались как часть комплекта разработки платы. Платы для разработки могут быть разработаны для очень специфической функции или быть универсальными, а добавленная стоимость заключается в программном обеспечении, работающем на устройстве. С введением Linux в качестве серверной/настольной ОС в 1991 году многие компании и разработчики рассматривали Linux как возможность использовать ОС с открытым исходным кодом в качестве операционной системы реального времени и во встроенных приложениях.
Linux: от корпоративной к встроенной
Путь Linux к встроенной ОС имеет свои повороты и повороты. Это началось с использования Linux в приложениях, которые требовали управления в реальном времени при работе на платформах ПК. Две наиболее известные реализации, RTLinux и Real-time Extensions (RTE) от Windriver и Timesys соответственно, расширили ОС Linux, позволяя использовать ее для работы в средах, чувствительных ко времени. В дополнение к реальному времени были также проприетарные встроенные реализации Linux, наиболее распространенная из которых была от Montavista, а также другие уникальные реализации, предназначенные для карманных компьютеров и телефонов. Чтобы Linux можно было использовать на других семействах процессоров от MIP, Motorola, Freescale или ARM требовалось создание пользовательских дистрибутивов. Проблема с созданием встроенной системы на основе стандартного дистрибутива Linux заключалась в том, что для удаления лишних компонентов Linux в соответствии с ограничениями целевого оборудования требовалось время и опыт, и не было единообразия в том, как это было сделано. Кроме того, когда требовались исправления ошибок, новые функции или поддержка процессора, разработчикам приходилось начинать с самого начала, поскольку было мало или совсем не было возможности повторно использовать то, что было сделано в предыдущем созданном образе.
Быстро стало очевидно, что такое переизобретение модели колеса не является устойчивым, и первым шагом сообщества Linux было определение и разработка единого дистрибутива Linux специально для использования во встроенных средах. Следование модели RTOS с отделением конкретных аппаратных уровней от основного ядра предоставило возможность определить и реализовать единую кодовую базу, независимую от аппаратного обеспечения процессора и подсистемы, что привело к тому, что сообщество Linux использовало устоявшуюся модель BSP традиционных реализаций RTOS в качестве основы. отправная точка.Это архитектурное решение привело к разработке Buildroot в середине 2001 года, OpenEmbedded в 2004 году, Poky в 2005 году и, наконец, к Yocto Project в 2010 году. инициатива Linux Foundation по разработке и предоставлению инструментов, документации и методологий, которые позволяют дистрибутиву Linux для встроенных устройств и устройств IoT, который абстрагируется от независимого от нижележащего аппаратного уровня. Yocto не является встроенной реализацией Linux, а скорее основывается на своем предшественнике, OpenEmbedded (теперь известном как OE-core), чтобы объединить основную встроенную ОС Linux и цепочку инструментов в общую и согласованную среду. Это значительно упрощает разработчикам выбор только необходимых компонентов, создание и упаковку встроенного дистрибутива Linux, который точно соответствует их потребностям и постоянно воспроизводим.
Yocto Under The Covers
Вместо того, чтобы собирать все программное обеспечение, необходимое для создания пакета и окончательного образа, инженерам по инструментам и разработчикам больше не нужно тратить время и усилия, собирая все вместе и настраивая эту пользовательскую среду для Разработка встраиваемых систем Linux. Теперь они могут сосредоточиться на разработке дополнительных функций и ускорить создание жизнеспособного продукта. Все компоненты платформы разработки Yocto классифицируются и описываются следующим образом:
Платформа разработки
Производственные инструменты
Создать систему
Эталонное распространение
Пакеты
Несмотря на то, что BSP не являются непосредственно частью загружаемого набора инструментов Yocto, они необходимы для портирования и последующего запуска конкретного встроенного образа Linux в прототипе системы. Платы для разработки могут работать от самодельных до полнофункциональных, готовых к производству аппаратных средств с многочисленными вариантами подключения. BSP будет включен в сборку, как определено в рецепте, специфичном для целевого оборудования и типа процессора.
Аппаратные платформы
Как все это объединяется?
Метаданные/входные данные: определите политики, параметры, расположение источников кода, слоев и рецептов, чтобы указать системе сборки, что и как собирать и компилировать пакет и, наконец, создать загрузочный или исполняемый образ и eSDK. специально для изображения для разработки приложений.
Система сборки: загружает исходный код, применяет исправления, настраивает и компилирует обновленный код в соответствии с инструкциями в метаданных.Поскольку система сборки может поддерживать компиляцию для разных архитектур процессоров одновременно, система сборки анализирует выходные данные и решает, необходимо ли разделение пакетов. После принятия решения о пакете создаются файлы .dab, .rpm и .ipk, которые проходят проверку качества.
Фиды пакетов: каждый сгенерированный пакет размещается в фидах пакетов. В зависимости от используемой конфигурации во время цикла сборки может быть создан один или несколько пакетов. В случае, когда используется менеджер пакетов IPK и существует поддержка архитектуры пакетов как для x86 64bit, так и для ARM. Пакеты для 64-битной архитектуры x86 и ARM размещаются в разных уникальных каталогах со следующей структурой: build/tmp/deploy/ipk/”architecture”. Чтобы сгенерировать образ и связанный SDK, система сборки обращается к указанному каталогу для исходного пакета.
Образ: представляет конечный продукт процесса разработки, встроенную ОС в виде прошиваемого или запускаемого объекта.
SDK для разработки приложений: одновременно с созданием окончательного образа система сборки также создает расширенную разработку приложения. SDK или eSDK, соответствующий образу. Наличие eSDK означает, что разработчикам или инженерам по инструментам не нужно собирать различные инструменты в пользовательский SDK, а затем настраивать и поддерживать его на постоянной основе.
Речь идет о согласованности построения: быстрее
Являясь интегрированным набором инструментов, Yocto значительно упрощает и ускоряет работу со встроенным Linux, чтобы перейти в состояние готовности к работе. Несмотря на то, что для Yocto есть некоторые уникальные потребности и требования, такие как система сборки, на сайте Yocto есть множество ресурсов и хороший справочник «извлеченных уроков». Какие преимущества увидят разработчики встроенных систем или устройств IoT, используя Yocto?
Повторяемость
Полное документирование формулы, используемой для создания уникального базового встроенного дистрибутива, позволяющего последовательно воспроизводить один и тот же образ, даже при включении исправлений или обновлений в будущем.
Модульность.
Рецепты обеспечивают детальный контроль над конфигурацией и компонентами, которые должны быть включены в окончательный образ или исключены из него. Слои обеспечивают логическое разделение информации при сборке для нескольких архитектур, а также консолидируют связанные метаданные для настройки конкретной сборки
Время к продукту
Ускорение процесса создания работающего встроенного образа и одновременное создание eSDK с инструментами уровня приложения, специфичными для образа, позволяет командам сосредоточиться на дополнительных функциях и функциях вместо того, чтобы пытаться реконструировать общий пакет SDK или создать его. с нуля
Гибкость
Добавление новой функции в существующий образ или переход на другой дистрибутив Linux выполняется легко и не требует не требует перенастройки всей системы сборки или перезапуска процесса разработки с самого начала.
Расширяемость.
Разработчики могут использовать существующие инструменты или разрабатывать/добавлять новые инструменты в среду по мере необходимости для поддержки определенных потребностей/проектов, не затрагивая ни одного из них. их существующих проектов
Преимущества использования Yocto многочисленны, и включение инструментов для автоматизированной сборки и тестирования, процессов поддержки плат, соответствия лицензии и информации о компонентах в единой среде является большой победой для разработчиков Linux. специализированные встроенные устройства.
Yocto за пределами Интернета вещей
В результате очевидных преимуществ, которые Yocto предоставляет разработчикам встраиваемых систем Linux, автомобильная промышленность обратила на это внимание и приняла среду для разработки программного обеспечения. Потребности автомобильной промышленности полностью отличаются от потребностей систем, ориентированных на Интернет вещей. Эти уникальные требования к безопасности, автомобильной связи и контролю до 100 отдельных ЭБУ потребовали другого подхода к использованию Linux в автомобиле. Для достижения этих целей производители автомобилей присоединились к совместному проекту Automotive Grade Linux в рамках фонда Linux и разработали набор спецификаций для разработки стандартизированной и высокооптимизированной ОС Linux под названием Automotive Grade Linux или AGL. Чтобы включить использование AGL в Yocto, проект AGL разработал сборку специально для использования в среде Yocto. Используя мета-agl и определяя уровень AGL, а также указывая BSP и приведенные ниже рецепты, разработчики теперь могут создавать и генерировать образ на основе AGL для указанной аппаратной платформы вместе со связанным eSDK в среде Yocto.
Специальные рецепты AGL доступны для использования:
Мы надеемся, что предоставили вам неоценимую информацию о возможностях Yocto и о том, как среда позволяет разработчикам создавать оптимизированные встроенные образы Linux быстрее и лучше. надежно.
При настройке встроенных решений слово Yocto нельзя игнорировать.В этой статье мы стремимся объяснить, что делает проект Yocto, зачем он нужен и как его можно применять при работе с платформой FPGA/ARM, такой как Xilinx Zynq.
Что такое YOCTO
"Это не встроенный дистрибутив Linux — он создает для вас собственный дистрибутив"
Проект Yocto – это открытая платформа, предоставляющая шаблоны, инструменты и методы, помогающие создавать собственные системы на базе Linux для встраиваемых продуктов. Он объединяет BitBake и OpenEmbedded для создания специализированных дистрибутивов Linux. Используя инструменты Yocto, процесс настройки пакета поддержки плат (BSP) становится более аккуратным и более модульным, чем попытка вручную отслеживать большие объемы исходного кода сторонних производителей. Раньше этот процесс отличался для каждой аппаратной платформы, а Yocto стремится стать универсальным решением, независимым от поставщика.
Модульный подход
Yocto разбивает большие программные модули на уровни, такие как уровни дистрибутива, BSP и программного обеспечения. Производители оборудования обычно предоставляют уровень BSP для своих продуктов вместе с драйверами и конфигурацией ядра. Затем специалист по встраиваемым системам добавляет пользовательский уровень, наследующий аппаратный уровень, добавляя и удаляя компоненты в соответствии с конечным продуктом. Программное обеспечение пользовательского уровня хранится в одном или нескольких отдельных слоях. Если разработчики хорошо справляются с разделением слоев, они ведут себя как стандартные блоки и могут включаться и выключаться в зависимости от аппаратного обеспечения, требований заказчика и разновидностей версии. Благодаря такой модульности ядро Linux и программное обеспечение могут обновляться на протяжении всего жизненного цикла продукта независимо от производителя оборудования.
Yocto может получать, создавать, настраивать и устанавливать все программное обеспечение, используемое во встроенном продукте, например ядро, загрузчик, корневую файловую систему, модули драйверов и деревья устройств. Он использует рецепты, чтобы описать, как выполняются эти шаги. Рецепты могут быть унаследованы от других слоев и добавлены. Слой может содержать конфигурации для нескольких различных аппаратных платформ, разделенных на «машины». Конфигурации компьютеров являются частью уровня BSP, зависящего от платы. Как правило, загрузчик, конфигурация ядра Linux, деревья устройств и параметры загрузки должны быть настроены в соответствии с целевой платой. Конфигурации машины могут устанавливать переменные сборки и выбирать рецепты не по умолчанию, которые будут использоваться для сборки, например. ядро Linux, чтобы настроить полученный продукт. Какая машина для сборки выбирается до начала процесса сборки.
Жить с лицензиями
При использовании программного обеспечения с открытым исходным кодом разработчики часто сталкиваются с проблемой отслеживания лицензий. Случайное использование неправильной лицензии может привести к дорогостоящим испытаниям и проблемам. Каждый рецепт Yocto должен указывать, какую лицензию должно использовать программное обеспечение, и процесс сборки завершится ошибкой, если рецепт применит открытый исходный код в закрытом программном модуле. Yocto отслеживает все лицензии не только во время разработки, но и на протяжении всего жизненного цикла продукта.
Извлечение и ветвление
Из-за одновременной разработки несколькими разными сторонами различные варианты Yocto и последующие уровни должны быть разделены на ветви в Git. Большинство слоев BSP будут работать только с OpenEmbedded-Core той же ветки. Xilinx, например, использует филиалы Dora или Daisy, в то время как другие поставщики имеют свои собственные филиалы. Выбор правильной ветки для всех компонентов и отслеживание того, какие ветки будут работать вместе, является частью процесса разработки на основе Yocto.
Yocto Linux и платформа Xilinx Zynq
Xilinx — одна из многих компаний-поставщиков, которые предоставляют слой Yocto для своих продуктов. Слой мета-xilinx добавляет верхние мета-уровни poky и open-embedded, чтобы обеспечить поддержку Yocto для архитектур Xilinx Zynq и Microblaze, а также конфигурации машин для некоторых из их плат разработки. Как только вы сообщили Bitbake о своих слоях, вы можете настроить таргетинг на разные платы Xilinx, просто установив переменную в локальном файле конфигурации, которая сообщает Yocto, какую конфигурацию машины использовать.
Деревья устройств используются для предоставления ядру Linux информации об оборудовании, на котором оно работает. Это удобный способ использовать одно и то же ядро на несколько отличающихся аппаратных конфигурациях. Для платформы Zynq стандартное ядро скомпилировано с драйверами для всех периферийных устройств PS/SoC, общими компонентами платы и некоторыми драйверами для Xilinx FPGA IP. Дерево устройств информирует ядро о том, какие компоненты присутствуют и как они настроены, чтобы драйверы загружались и инициализировались правильно. Также можно описать компоненты платы. Описывая топологию шин i2c, включая коммутаторы и адреса узлов, Linux сможет получить доступ и настроить каждый узел в сети i2c (при условии, что драйверы скомпилированы в ядре).
Когда приходит время отклоняться от стандартных конфигураций и рецептов, предоставляемых поставщиком, вы создаете свой собственный слой Yocto поверх слоев ваших поставщиков. Затем вы наследуете все их функции, но можете добавлять свои собственные настройки. На этом уровне вы обычно поддерживаете пользовательские деревья устройств, конфигурации ядра, исправления, драйверы, конфигурации машин и т. д. Такой подход упрощает поддержку уровня BSP и переход от оценочной платы поставщика к собственной встроенной плате.
Ответы Yocto и данных
Компания Data Respons увидела, что их раннее внедрение Yocto приносит плоды, поскольку все большее число производителей оборудования отказываются от своих собственных инструментов для проекта Yocto. Более глубокое понимание многих параметров и ответвлений платформы оказалось необходимым, чтобы не отставать от растущих требований к высокой скорости выхода продукта на рынок. Специалисты Data Respons в настоящее время также работают над созданием полной системы управления конфигурацией, отслеживающей версии каждого компонента сверху донизу во встроенных системах на базе Linux.
Получить полный обзор всех параметров и возможностей Yocto — непростая задача, но после ее выполнения ее можно применить к большому количеству других аппаратных платформ.
Читайте также: