Embeddedsoft.ru
Большую часть (в разумных пределах) задач встраиваемых систем можно решить без операционной системы (обычная «железяка» 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, к примеру, описан на многих интернет-ресурсах. Стоит отметить, что когда система готова и отлажена, возможно считать образ получившейся системы (фактически всю флеш-память ОС) и на производстве прошивать целиком всю флеш-память.
электроники на заказ
info@embeddedsoft.ru
Что такое Embedded Linux?
Термин «Embedded – встроенный Linux®» может использоваться для описания любого варианта операционной системы, работающей на встроенной компьютерной системе – специализированного устройства или платформы, интегрированных в более крупный общий продукт, такой как устройство бытовой электроники или часть оборудования. Модульная архитектура ядра Linux® наряду с поддержкой широкого спектра микропроцессоров и других типов оборудования сделала систему популярной в области вычислений. Но в некоторых сценариях Linux® может страдать от снижения производительности, поскольку ей требуется дополнительное программное обеспечение для работы в качестве операционной системы реального времени (RTOS), что является требованием для некоторых встроенных систем.
Несмотря на это, для встроенных систем используется множество пользовательских дистрибутивов Linux® – от мобильных телефонов до оборудования для тестирования авионики.
Встроенный компьютер отличается от персонального компьютера (ПК) тем, что встроенная система спроектирована или сконструирована для одной или нескольких конкретных целей, в то время как ПК предназначены для широкого спектра функций. Встроенный компьютер может быть спроектирован с минимальной производительностью, необходимой для достижения его конкретных целей, что обеспечивает лёгкую и высокоэффективную компьютерную платформу. Категория охватывает широкий спектр вычислительных устройств, от бытовой электроники до оборудования авионики, роверов и космических кораблей, которые исследуют солнечную систему. Но, как и любой компьютер, аппаратное обеспечение встроенной системы бесполезно без программной платформы, и во многих случаях выбранная программная платформа представляет собой некий вид встроенной Linux®.
Linux® доказала свою популярность во многих областях встраиваемых вычислений благодаря высокому уровню настройки и гибкости, а также разнообразной аппаратной поддержке. Ядро Linux® имеет модульную архитектуру, что означает, что разработчик или инженер может выбирать драйверы и программное обеспечение высокого уровня, необходимое для конкретной системы. Поддержка множества различных микропроцессорных архитектур также является важным преимуществом, предлагаемой встроенной Linux®, поскольку во встроенных системах может использоваться микропроцессор, который сильно отличается от тех, которые имеются в ПК. Как проект программного обеспечения с открытым исходным кодом, Linux® также может использоваться без ограничений и лицензионных отчислений, которые могут присутствовать в коммерческих предложениях.
Встраиваемые системы часто требуют операционной системы реального времени – операционной системы, способной реагировать на события в течение очень короткого периода времени. Поскольку ядро Linux® не было разработано с учётом производительности в режиме реального времени, для обеспечения этой функциональности, поверх ядра необходимо запустить дополнительное программное обеспечение. Это является потенциальным недостатком использования встроенной Linux®, поскольку это дополнительное программное обеспечение потребляет больше ресурсов.
Некоторые версии встроенной Linux® могут быть построены практически с нуля, в то время как другие являются слегка изменёнными версиями существующих дистрибутивов. Как коммерческие, так и некоммерческие организации предлагают свои собственные готовые дистрибутивы, предназначенные для производителей и дизайнерских фирм. Например, мобильные телефоны и медиаплееры обычно используют готовые варианты встроенной Linux®. Компьютерные системы или сетевые устройства могут использовать только слегка изменённую версию дистрибутива Linux® для настольных компьютеров.
В областях с высокими требованиями в режиме реального времени или требованиями к производительности конечный пользователь часто активно участвует в разработке системы. Например, Национальное управление по аэронавтике и исследованию космического пространства (НАСА) получает программное обеспечение Linux® от сторонних поставщиков, но устанавливает руководящие указания для поставщиков. Другие организации, такие как компании, производящие оборудование для тестирования авионики, могут разработать собственный вариант встроенной Linux®.