Меню Рубрики

Embedded linux что это

Что такое Embedded Linux?

в Linux 11.09.2019 0 156 Просмотров

Термин «Embedded – встроенный Linux®» может использоваться для описания любого варианта операционной системы, работающей на встроенной компьютерной системе – специализированного устройства или платформы, интегрированных в более крупный общий продукт, такой как устройство бытовой электроники или часть оборудования. Модульная архитектура ядра Linux® наряду с поддержкой широкого спектра микропроцессоров и других типов оборудования сделала систему популярной в области вычислений. Но в некоторых сценариях Linux® может страдать от снижения производительности, поскольку ей требуется дополнительное программное обеспечение для работы в качестве операционной системы реального времени (RTOS), что является требованием для некоторых встроенных систем.
Несмотря на это, для встроенных систем используется множество пользовательских дистрибутивов Linux® – от мобильных телефонов до оборудования для тестирования авионики.

Встроенный компьютер отличается от персонального компьютера (ПК) тем, что встроенная система спроектирована или сконструирована для одной или нескольких конкретных целей, в то время как ПК предназначены для широкого спектра функций. Встроенный компьютер может быть спроектирован с минимальной производительностью, необходимой для достижения его конкретных целей, что обеспечивает лёгкую и высокоэффективную компьютерную платформу. Категория охватывает широкий спектр вычислительных устройств, от бытовой электроники до оборудования авионики, роверов и космических кораблей, которые исследуют солнечную систему. Но, как и любой компьютер, аппаратное обеспечение встроенной системы бесполезно без программной платформы, и во многих случаях выбранная программная платформа представляет собой некий вид встроенной Linux®.

Linux® доказала свою популярность во многих областях встраиваемых вычислений благодаря высокому уровню настройки и гибкости, а также разнообразной аппаратной поддержке. Ядро Linux® имеет модульную архитектуру, что означает, что разработчик или инженер может выбирать драйверы и программное обеспечение высокого уровня, необходимое для конкретной системы. Поддержка множества различных микропроцессорных архитектур также является важным преимуществом, предлагаемой встроенной Linux®, поскольку во встроенных системах может использоваться микропроцессор, который сильно отличается от тех, которые имеются в ПК. Как проект программного обеспечения с открытым исходным кодом, Linux® также может использоваться без ограничений и лицензионных отчислений, которые могут присутствовать в коммерческих предложениях.

Встраиваемые системы часто требуют операционной системы реального времени – операционной системы, способной реагировать на события в течение очень короткого периода времени. Поскольку ядро ​​Linux® не было разработано с учётом производительности в режиме реального времени, для обеспечения этой функциональности, поверх ядра необходимо запустить дополнительное программное обеспечение. Это является потенциальным недостатком использования встроенной Linux®, поскольку это дополнительное программное обеспечение потребляет больше ресурсов.

Некоторые версии встроенной Linux® могут быть построены практически с нуля, в то время как другие являются слегка изменёнными версиями существующих дистрибутивов. Как коммерческие, так и некоммерческие организации предлагают свои собственные готовые дистрибутивы, предназначенные для производителей и дизайнерских фирм. Например, мобильные телефоны и медиаплееры обычно используют готовые варианты встроенной Linux®. Компьютерные системы или сетевые устройства могут использовать только слегка изменённую версию дистрибутива Linux® для настольных компьютеров.

В областях с высокими требованиями в режиме реального времени или требованиями к производительности конечный пользователь часто активно участвует в разработке системы. Например, Национальное управление по аэронавтике и исследованию космического пространства (НАСА) получает программное обеспечение Linux® от сторонних поставщиков, но устанавливает руководящие указания для поставщиков. Другие организации, такие как компании, производящие оборудование для тестирования авионики, могут разработать собственный вариант встроенной Linux®.

Источник

Embeddedsoft.ru

Плюсы и минусы операционной системы

(Linux Embedded)

Что дает операционная система?

Большую часть (в разумных пределах) задач встраиваемых систем можно решить без операционной системы (обычная «железяка» cortex M4 или ARM7 могут работать с сетью по каналу ethernet, иметь свой веб-сервер на борту, флеш-память, графический дисплей). Операционная система позволяет создавать сложные системы сбора данных, использовать множество утилит и программ, написанных для данной системы (flash-player, анимация, сетевые утилиты ftp, ssh и прочие).
Архитектура программного обеспечения в операционных системах обычно сильно отличается от архитектуры встраиваемой системы с единым standalone-приложением, включающим в себя работу с драйверами и алгоритмы работы системы в целом. Операционная система подразумевает многопоточность и многозадачность, возможность запуска нескольких отдельных программ одновременно.

Стоит учесть, что если в операционной системе нет каких-то драйверов и BSP не полная, то задача работы с железом усложняется в разы, т.к. разработчик должен понимать и основы работы ОС, драйверов, в то же время обладать опытом работы с железом на низком уровне.

С другой стороны, надо понимать что создавая встраиваемую систему задача не сделать полнофункциональный настольный компьютер, а лишь «промежуточное звено», которое даже может не иметь дисплея вовсе. Применение операционной системы не будет разумным в случае, если необходимо просто «помигать светодиодом» или даже просто выводить на экран статическое изображение согласно данным, приходящим по единственному интерфейсу rs-232.

Чаще всего используют linux, хотя в зависимости от задачи возможно использование и других ОС (для задач реального времени и низкопроизводительных микроконтроллеров используют FreeRTOS, QNX, Windows CE).

Почему именно Linux?

На данный момент Linux хорошо поддерживает различные архитектуры. Linux бесплатный, что важно когда создаются серийные устройства. У Linux большинство исходных кодов бесплатны, что не так важно для обычного настольного ПК, но становится часто важным для разработчиков встраиваемых систем, т.к. исходные коды позволяют собрать программное обеспечение под свою платформу. Не у всех есть понимание того факта, что программы собранные под настольный компьютер (архитектура x86) не будут запускаться на другой архитектуре (ARM, AVR32).

На каком «железе» стоит создавать встраиваемую систему?

Сейчас чаще всего используют ARM (cortex, tdmi), также популярные MIPS, AVR32 и прочие. ARM имеет хорошую поддержку в плане готового программного обеспечения и дистрибутивов, имеет хороший показатель производительности/энергопотребления. Многие программы портированы на ARM-архитектуру.

Как прошивать получившиеся блоки?

Многие разработчики standalone-приложений привыкли создавать один проект в какой-нибудь среде разработки (IAR, Keil, ImageCraft и прочие), настраивать проект под определенный «камень» и прошивать при помощи JTAG или UART. Со встраиваемыми системами конечно намного больше возни для разработчика. Многие ОС загружаются при помощи загрузчика, который стоит и прошивать как обычное приложение. Дальше (как правило при помощи ethernet, реже RS-232) при помощи загрузчика из консоли загружается сама операционная система. Процесс загрузки Linux, к примеру, описан на многих интернет-ресурсах. Стоит отметить, что когда система готова и отлажена, возможно считать образ получившейся системы (фактически всю флеш-память ОС) и на производстве прошивать целиком всю флеш-память.

Источник

Создание специальных дистрибутивов Linux для встраиваемых систем с помощью Yocto Project

Профессиональные Open Source-инструменты для разработки Linux для встраиваемых систем

Краткий обзор

Yocto Project – это совместный Open Source-проект разработки шаблонов, инструментов и методов для создания специальных дистрибутивов Linux для встраиваемых систем на базе различных аппаратных архитектур (yocto означает наименьшую единицу измерения в системе СИ, равную 10^-24).

В этой статье даются пошаговые инструкции для начала работы с инструментами Yocto Project, соответствующими промышленным стандартам и позволяющими создавать собственные дистрибутивы Linux для встроенных устройств и запустить операционную систему на виртуальной машине при помощи QEMU. Проект Yocto Project поддерживается организацией Linux Foundation и финансируется многими известными компаниями-производителями оборудования и программного обеспечения; этот проект развивает инструменты, методы и метаданные для создания Linux-систем, соответствующие промышленным стандартам.

В связке с проектом OpenEmbedded поддерживаются два основных компонента проекта Yocto: система сборки BitBake и ядро OpenEmbedded-Core, состоящее из наборов команд («рецептов»), необходимых в процессе сборки. Все компоненты проекта описываются в следующем разделе.

Знакомство с Yocto Project

Будучи проектом совместного сотрудничества (иногда такие проекты называются «зонтичными»), Yocto Project охватывает различные составляющие процесса разработки. Эти составляющие именуются проектамив рамках общего проекта Yocto Project и включают в себя инструменты для сборки, метаданные инструкций по сборке (называемые рецептами), библиотеки, утилиты и графические интерфейсы.

Poky – это эталонная система сборки в рамках проекта Yocto Project. Она включает в себя BitBake, OpenEmbedded-Core, пакет поддержки платформы (Board Support Package, BSP), а также прочие пакеты и компоненты, объединенные в единую сборку. Название Poky также относится к эталонному дистрибутиву Linux, который создается этой системой сборки и может быть чрезвычайно минималистичным (core-image-minimal) или же представлять собой полноценную систему Linux с графической оболочкой (core-image-sato).

Систему сборки Poky можно рассматривать как эталонную систему для всего проекта – рабочий пример реального процесса. При загрузке Yocto Project фактически вы получаете экземпляр этих инструментов, утилит, библиотек, вспомогательных средств и метаданных, которые можно использовать для создания системы по умолчанию, как это описывается в нашей статье. Как эталонная система, так и эталонный дистрибутив, который она создает, называются Poky. Вы можете использовать Poky как начальную точку для создания ваших собственных дистрибутивов, которые, конечно же, могут называться как угодно.

Для всех систем сборки требуется наличие инструментария toolchain, состоящего из компилятора, ассемблера, линковщика и прочих двоичных утилит, необходимых для создания исполняемых файлов для той или иной архитектуры. Poky использует набор GNU Compiler Collection (GCC), но вы можете указать и другие наборы компиляторов. В Poky используется механизм кросс-компиляции: использование набора компиляторов одной архитектуры для создания исполняемых файлов другой архитектуры (например, сборка ARM-дистрибутива, выполняемая на компьютере с x86-архитектурой). Разработчики часто используют кросс-компиляцию при разработке встраиваемых систем, поскольку их рабочие компьютеры намного мощнее, чем типичная встраиваемая система.

Набор метаданных

Набор метаданных разделен на слои, каждый из которых обладает дополнительной функциональностью по отношению к нижележащим слоям. Базовый слой называется OpenEmbedded-Core (или oe-core ) и содержит общие рецепты, классы и связанные с ними функции, необходимые для любой сборки. Эти сборки впоследствии можно настраивать под собственные нужды, добавляя новые слои поверх слоя oe-core .

OpenEmbedded-Core совместно поддерживается проектами Yocto Project и OpenEmbedded. Слой, отделяющий проект Yocto Project от проекта OpenEmbedded, называется meta-yocto и содержит конфигурацию дистрибутива Poky, а также базовый набор эталонных BSP-пакетов.

Сам по себе проект OpenEmbedded является отдельным Open Source-проектом, обладающим собственными схожими рецептами и задачами, но со своей отдельной командой руководителей и областью применения.

Пакеты поддержки платформы (BSP)

Пакет поддержки платформы содержит пакеты и драйверы, необходимые для создания Linux-дистрибутива для определенной платформы или архитектуры. Эти пакеты часто поддерживаются производителями компьютерного оборудования. BSP-пакеты являются интерфейсом между операционной системой Linux и аппаратной частью, на которой она запускается. Заметим, что можно также создавать BSP для виртуальных машин.

BitBake

BitBake – это система сборки. Она считывает рецепты (определенные наборы инструкций) и следует им – скачивает необходимые пакеты, компилирует их и создает результирующие загрузочные образы. BitBake совместно поддерживается проектами Yocto Project и OpenEmbedded.

Для упрощения процесса разработки Linux для встраиваемых устройств в проекте Yocto Project было реализовано несколько различных методов, позволяющих работать с графической средой. Относительно новым дополнением к проекту является Hob. Это дополнение предоставляет в распоряжение разработчиков графический пользовательский интерфейс для BitBake, т. е. для процесса сборки. Оба этих компонента постоянно развиваются с учетом отзывов пользователей.

Соответствие условиям лицензирования Open Source

Соответствие лицензиям Open Source является чрезвычайно важной частью любой разработки Linux. Одна из целей проекта Yocto Project заключается в том, чтобы максимально упростить это соответствие. С помощью Yocto Project можно довольно просто создавать манифесты и даже целые репозитории исходных кодов, а также исключать в процессе создания дистрибутивов те пакеты, которые требуют использования отдельных лицензий. Проект работает с организацией Linux Foundation по ее программе Open Compliance Program в соответствии со спецификацией Software Package Data Exchange® (SPDX™).

EGLIBC

Embedded GLIBC (EGLIBC) – это вариант библиотеки GNU C Library (GLIBC), который был разработан для использования во встраиваемых системах. Особенностями EGLIBC являются меньший объем, настраиваемые компоненты и улучшенная поддержка кросс-компиляции и кросс-тестирования. EGLIBC входит в состав Yocto Project, но поддерживается своей собственной руководящей командой.

Инструментарий для разработки приложений

Инструментарий для разработки приложений (Application Development Toolkit, ADT) позволяет разработчикам систем включать наборы SDK в создаваемые ими дистрибутивы с помощью инструментов Yocto Project. Впоследствии эти наборы SDK могут использовать сторонние разработчики для создания приложений для этих дистрибутивов. В состав ADT входят инструменты кросс-компиляции, утилиты для отладки и анализа производительности, а также сценарии эмуляции и поддержки QEMU. Кроме того в ADT включен подключаемый модуль Eclipse, который могут использовать те, кто предпочитает работать в интегрированной среде разработки (IDE).

Другие утилиты из состава проекта Yocto Project

В состав Yocto Project также входят следующие инструменты:

  • Autobuilder: предназначен для автоматизации тестов и оценки качества продуктов, развиваемых на базе Yocto Project.
  • Cross-Prelink: предназначен для предварительной компоновки в средах, использующих кросс-компиляцию, что позволяет повысить производительность программ.
  • Pseudo: эмулирует доступ от имени пользователя root, что необходимо при создании конечного загрузочного образа.
  • Swabber: определяет, не содержит ли сборка, выполненная с использованием кросс-компиляции, компоненты хостовой системы.
  • Build Appliance: это виртуальная машина, в которой запущен Hob; позволяет получить представление о Yocto Project из первых рук тем, кто создает сборки на компьютерах под управлением операционной системы, отличной от Linux (Примечание: на сегодняшний день инструменты сборки Yocto Project можно использовать только в ОС Linux).

Руководство и сообщество проекта

Одним из жизненно важных составляющих любого Open Source-проекта является сообщество пользователей, которое разрабатывает и поддерживает этот проект. Сообщество Yocto Project состоит из организаций, включая производителей оборудования и операционных систем, а также разработчиков электроники (это означает, что в проекте задействованы все разработчики встраиваемых систем), и из отдельных людей, в том числе, сотрудников этих организаций.

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

Создание дистрибутива Linux

В этом разделе рассказывается, как создать базовый дистрибутив встраиваемой Linux-системы (эталонную сборку системы) с помощью Poky. Будут рассмотрены создание эталонного дистрибутива, а также все необходимые для этого инструменты. Если вы не хотите самостоятельно выполнять компиляцию, то загрузите предварительно собранные двоичные файлы. Детальную информацию вы найдете в руководстве Yocto Project Quick Start Guide (см. раздел Ресурсы).

Сами инструменты доступны только для платформы Linux, в частности, для Ubuntu, Fedora, CentOS и openSUSE. Заметим, что официальная поддержка инструментов в некоторых из этих дистрибутивов еще не заявлена, хотя обычно все хорошо работает, причем не только в этих дистрибутивах.

Если на вашем компьютере не установлена ОС Linux или если вы просто хотите попробовать поработать с Yocto Project, ничего не устанавливая, то загрузите виртуальную машину Yocto Project Build Appliance. Эта виртуальная машина содержит готовую к работе последнюю официальную версию Yocto Project и может запускаться в среде VMWare Player или VirtualBox; при загрузке образа вы сразу получите доступ к графическому интерфейсу HOB. При использовании Build Appliance большинство описываемых здесь действий выполнять не требуется, и можно сразу перейти к разделу Приступаем к работе с Hob. Однако я рекомендую прочесть предыдущие разделы, чтобы лучше разобраться, как работает Hob. Документацию по Hob вы также можете найти на Web-сайте Yocto Project (см. раздел Ресурсы).

Загрузка инструментов Yocto Project

Загрузить инструменты Yocto Project можно одним из следующих способов. Убедитесь, что на жестком диске вашего компьютера свободно, как минимум, 50 Гбайт (рекомендуется 100 Гбайт).

    Можно загрузить tar файл с последней протестированной версией Yocto Project со страницы загрузки проекта. Загрузите tar файл и распакуйте его в отдельную директорию, как показано в листинге 1.

Листинг 1. Загрузка poky
Листинг 2. Загрузка poky при помощи git

Заметим, что в этом случае поддиректория называется просто poky и не содержит номера версии, поскольку она может быть обновлена с помощью git в любое время.

Инициализация рабочего окружения

Для инициализации рабочего окружения выполните следующие действия:

Сначала инсталлируйте все необходимые пакеты из репозитория программного обеспечения вашего компьютера. Если вы уже занимались разработкой программного обеспечения, то основная часть требуемых пакетов может быть уже инсталлирована. В листингах 3-6 показано, как инсталлировать требуемые пакеты в различных дистрибутивах.

Листинг 3. Установка зависимостей в Ubuntu
Листинг 4. Установка зависимостей в Fedora
Листинг 5. Установка зависимостей в CentOS
Листинг 6. Установка зависимостей в openSUSE

Задайте значения переменных окружения командной оболочки с помощью входящего в состав поставки сценария. После выполнения этого сценария вашей рабочей директорией будет поддиректория build , из которой вы сможете запускать вашу сборку.

Проверьте главный конфигурационный файл (conf/local.conf). По умолчанию этот конфигурационный файл создает образ для qemux86 , т. е. экземпляр QEMU с эмуляцией 32-разрядного процессора x86. Если у вас многопроцессорный компьютер, то я настоятельно рекомендую раскомментировать следующие параметры, связанные с параллельной обработкой, для ускорения процесса сборки. На этом шаге задайте значения этих параметров, равными двукратному числу ядер процессора (например, 8 для 4-ядерного процессора).

Создание начального образа

Для создания инструментария кросс-компиляции и других необходимых инструментов при создании начального образа задействуется компилятор хостовой системы. Кроме того, BitBake выполнит загрузку всех необходимых пакетов, что также займет какое-то время. По завершении готовые образы будут помещены в поддиректорию tmp/deploy/images.

Листинг 7. Начальные образы

Посмотрите также файл tmp/deploy/IMAGE/license.manifest. Этот файл содержит полный список всех лицензий, использованных при создании образа.

Загрузка созданного образа

После того, как образ создан, его можно загрузить его в эмуляторе QEMU в виде 32-разрядной виртуальной машины с архитектурой x86. Для этого просто выполните следующую команду:

Вы можете войти в систему на виртуальной машине под учетной записью пользователя root с пустым паролем. Поздравляю! Вы только что создали образ встраиваемой Linux-системы.

Вы можете вносить различные изменения в исходный образ и в пакеты, которые включены в него, а также в сам процесс. Система сборки написана на языке Python и хорошо документирована.

Приступаем к работе с Hob

Hob – это графическая оболочка, которая помогает автоматизировать некоторые процессы, описанные ранее. Задача Hob заключается в обеспечении наглядности работы при создании образа, а также в упрощении понимания этого процесса. Фактически Hob является пользовательским интерфейсом BitBake, поэтому все, что можно сделать в Hob, можно также сделать при помощи командной строки и сценариев. Тем не менее, Hob позволяет наглядно увидеть, какие именно пакеты будут включены в финальный образ. Другие возможности Hob – изменение существующих образов, сохранение настроенных образов в качестве шаблонов, запуск образов с помощью QEMU и развертывание образов на USB-носители для последующей загрузки с них конечных устройств. Сейчас для Hob разрабатывается ряд новых возможностей, которые улучшат функциональность и удобство работы.

Для запуска Hob просто наберите hob из рабочей директории, и откроется главный экран приложения. Начнем с выбора архитектуры (в нашем случае это архитектура qemux86 ). После этого Hob выполнит разбор доступных инструкций («рецептов»), как показано на рисунке 1.

Рисунок 1. Конфигурирование образа в Hob

После этого можно выбрать базовый образ (в нашем предыдущем примере это была сборка core-image-minimal , поэтому ее двоичные файлы уже существуют). Выберите minimal и щелкните View recipes или View packages. В последнем случае вы увидите список, изображенный на рисунке 2. Здесь вы можете установить или снять флажки для включения (или, соответственно, удаления) в сборку тех или иных пакетов. Для сортировки по определенному столбцу щелкните на его заголовок.

Рисунок 2. Список пакетов в Hob

Обратите внимание на то, что на вкладке Packages пакет Python не включен в минимальную сборку. Вы можете добавить его, просто установив флажок напротив пакета python-2.7.2-r2.14 , как показано на рисунке 3. При этом автоматически будут выбраны все его зависимости и дочерние пакеты.

Рисунок 3. Добавление пакетов в Hob

Щелкните Build image и наблюдайте за процессом создания нового образа с выбранными параметрами. В процессе создания образа вы можете следить за сообщениями о работе, а сообщения об ошибках выводятся на вкладке Issues.

Когда ваш образ будет готов, можно запустить его в эмуляторе QEMU, просто щелкнув Run Image, как показано на рисунке 4.

Рисунок 4. Информация об образе в Hob

Сейчас можно проверить, действительно ли пакет Python был включен в сборку (рис. 5).

Рисунок 5. Проверка добавленного пакета

Дополнительную информацию, руководства и видеоматериалы вы можете найти на Web-сайте Yocto Project (см. раздел Ресурсы).

Заключение

Для освоения инструментов Yocto Project потребуется некоторое время, но оно не будет потрачено зря! Гибкость работы, переносимые конфигурации и мощные опции настройки инструментов позволяют настраивать каждый этап процесса сборки. Проект Yocto Project является коммерческим – он разработан и используется профессиональными разработчиками встраиваемых систем. На момент написания этой статьи некоторые производители утилит для операционных систем уже начали ориентировать свои продукты на работу с Yocto Project. Вы можете попробовать использовать инструменты из этого проекта, и если они вам понравится, то присоединяйтесь к сообществу.

Ресурсы для скачивания

Похожие темы

  • Оригинал статьи: Build custom embedded Linux distributions with the Yocto Project (EN).
  • На Web-сайте Yocto Project (EN) вы найдете официальную документацию, описание, видеоматериалы, слайды видеоконференций и доклады, посвященные Yocto Project, а также информацию о руководстве проекта.
  • Подробное пошаговое руководство The Yocto Project Quick Start (EN) поможет вам начать работу с Yocto Project.
  • Виртуальная машина Yocto Project Build Appliance (EN) поможет вам испытать Yocto Project в действии без необходимости установки какого-либо программного обеспечения.
  • Рабочая группа Linux Foundation SPDX (EN) входит в состав проекта Open Compliance Program, задачей которого является предоставить компаниям и проектам возможность простого обмена информацией о лицензиях и компонентах, что позволит соблюдать все условия лицензионных соглашений.
  • Библиотека EGLIBC (EN) – это версия библиотеки GLIBC (GNU C library), разработанная для использования во встраиваемых системах. Библиотека EGLIBC является частью проекта Yocto Project.

Комментарии

Войдите или зарегистрируйтесь для того чтобы оставлять комментарии или подписаться на них.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Keepass for mac os x
  • Kde mac os style
  • Kaspersky для mac os
  • Kaspersky mac os free
  • Karaoke на mac os