Разработка встраиваемых систем
Встраиваемая система - система специального назначения, в которой компьютер полностью инкапсулирован в основное устройство. В отличие от компьютера общего назначения (например, персонального компьютера), встраиваемая система предназначена для решения одной или нескольких заранее определенных задач в конкретной предметной области. Так как система создается для решения конкретных задач, оптимизацию можно проводить уже на этапе проектирования, уменьшая таким образом физические размеры системы и снижая ее стоимость. Производство встраиваемых систем может быть как серийным, так и штучным.
Наладонные компьютеры (PDA) также обычно относят к встраиваемым устройствам ввиду аппаратных особенностей, хотя они могут решать довольно широкий круг задач. Граница встраиваемых решений становится все более неопределенной по мере появления новых типов устройств.
Физически, к встраиваемым системам относится масса устройств - от MP3-плееров до больших стационарных систем, таких как "умные" светофоры или интеллектуальные датчики на электростанциях.
Встраиваемая операционная система - это операционная система для встраиваемых систем. При создании таких систем особое внимание уделяют компактности и эффективности работы, отказываясь от большинства функций, предоставляемых операционными системами для обычных компьютеров. Такие действия оправданны, поскольку встраиваемые устройства решают одну или несколько конкретных задач и большая часть функциональности обычных ОС им просто не понадобится. Существует несколько десятков встраиваемых операционных систем, наиболее известными из которых являются:
-
NetBSD,
-
Windows CE,
-
Windows XP Embedded,
-
Symbian OS.
Реальное время
Вычисления в реальном времени (Real-Time Computing - RTC) - это вычисления, удовлетворяющие ограничениям реального времени (Real-Time Constraint); то есть интервал времени между событием и реакцией системы не превышает некоторого порогового значения. Соответственно системы, не относящиеся к системам реального времени (non-real-time system), не имеют ограничений на время отклика, даже если к ним предъявляются требования высокой производительности и быстрого отклика.
Программное обеспечение реального времени обычно разрабатывается на основе операционных систем реального времени (real-time operating systems) с использованием синхронных языков программирования (synchronous programming languages).
К системам реального времени часто относят системы, приложения которых считаются критически важными (mission critical). Пример компьютерной системы реального времени - противоблокировочная тормозная система автомобиля. В данном случае, ограничением реального времени является интервал, во время которого необходимо отпустить тормоза для предотвращения блокировки колес. Вычисления реального времени считаются выполненными неуспешно, если они не завершились в заданный интервал времени. Временной интервал определяется условиями конкретной задачи. Система должна завершать вычисления реального времени в течение заданного интервала вне зависимости от своей загруженности другими задачами.
Жесткое и "мягкое" реальное время
Систему считают системой реального времени, если корректность выполнения операции зависит не только от логической корректности операции, но и от времени ее выполнения. Считается, что в случае систем жесткого реального времени ( hard или immediate real-time system) завершение операции по истечении заданного интервала времени (наступления "дедлайна") является бесполезным и в конечном счете может привести к критическому сбою всей системы. Системы мягкого реального времени ( soft real-time system) допускают задержки и предпринимают различные меры для реакции в заданный интервал, например, снижая качество возвращаемого ответа (пропуск кадров в видео).
Как правило, системы жесткого реального времени взаимодействуют с оборудованием на низком уровне. Например, система управления двигателем автомобиля является системой жесткого реального времени, так как задержка реакции может привести к сбою в работе двигателя и его повреждению. Другими примерами встраиваемых систем жесткого реального времени являются различные медицинские системы (такие как электронный стимулятор сердца), системы управления подушками безопасности, промышленные роботы, системы управления атомными электростанциями.
Системы жесткого реального времени используются, когда необходимо реагировать на события в течение строго заданного интервала времени. Обычно такие строгие требования предъявляются к системам, которые в случае задержки реакции могут привести к значительным потерям в том или ином виде, например к физическому повреждению окружения, угрозе жизни человека.
Как происходит распределение системного времени в случае систем, предназначенных для решения более одной задачи? Как правило, время распределяется на основании приоритетов задач. Кроме того, существуют алгоритмы, отдающие предпочтение задачам, которым осталось меньше всего времени на выполнение (Earliest Deadline First). Такие алгоритмы подходят для систем, загруженных менее чем на 100%.
К системам мягкого реального времени обычно относят те, что используются для решения задач совместного доступа и обеспечения множества связных систем актуальной информацией об изменениях. Примером системы мягкого реального времени может служить программное обеспечение, управляющее расписанием полетов коммерческих авиалиний. Такая система может работать при задержках в несколько секунд. Было бы невозможно обеспечить коммерческие авиаперевозки, если бы вычисления в системе управления расписанием не выполнялись в режиме реального времени. Аудио-или видеосистемы реального времени также, как правило, являются системами мягкого реального времени. Нарушение ограничений реального времени выражается в потере качества, а система продолжает работать.
Важно отметить, что разница между системами жесткого и мягкого реального времени не обязательно связана с количеством времени, доступным для решения задачи. Компьютер может перегреться, если процессор не начнет охлаждаться в течение 15 минут (жесткое реальное время). С другой стороны, сетевая карта может потерять данные в буфере, если их не прочтут в течение доли секунд, но эти данные можно переслать повторно, не затрагивая какую-либо критическую операцию. Скорее всего, пользователь вообще не заметит такой задержки.
Windows Embedded
Семейство встраиваемых Windows включают следующие операционные системы: Windows CE, Windows XP Embedded и Windows Embedded forPoint of Service.
Windows XP Embedded
Windows XP Embedded (Xpe) - компонентная версия Microsoft Windows XP Professional. В основе ХРе - те же двоичные коды, что и у XP Pro, но XPe ориентирован на разработчиков для OEM, ISV и IHV, которым требуется полноценная поддержка Win32 API, но не нужны некоторые компоненты Professional. XPe запускает существующие Windows-приложения и драйверы устройств на устройствах с 32MB памяти Compact Flash, 32MB RAM и микропроцессором P-200.
XPe не имеет отношения к Wndows CE. Они ориентированы на различные устройства и оба имеют свои преимущества и недостатки. Например, XPe не сможет работать на некоторых достаточно малых объемах памяти, на которых работает CE. Однако CE не поддерживает полноценное Win32 API, которое поддерживает XPe (в CE есть аналог Win32 API). CE не сможет исполнять сотни уже разработанных драйверов и тысячи существующих приложений.
К устройствам, на которые ориентирована XPe, можно отнести торговые и игровые автоматы, кассовые аппараты, промышленных роботов, тонких клиентов, компьютерные приставки, сетевые устройства хранения данных, таймеры, устройства навигации и т. д. Различные версии XPe могут быть развернуты на самых разных устройствах, за исключением полноценного ПК. XPe поддерживает все оборудование, поддерживаемое XP Pro. Его нельзя установить на обычный ПК ввиду лицензионных ограничений.
Windows CE
Windows CE (WinCE) - версия операционной системы Microsoft Wndows для сильно ограниченных по сравнению с обычными ПК компьютеров и встраиваемых систем. Ядро Wndows значительно отличается от ядра Wndows для обычного ПК и не является урезанной версией. Ядро Win CE поддерживает архитектуры, совместимые с Intel x86, MIPS, ARM и Hitachi SuperH.
Windows CE специально оптимизирована для устройств, имеющих мало памяти - ядро Wndows CE требует для исполнения менее мегабайта памяти. Устройства часто конфигурируются без привлечения внешнего дискового устройства. Более того, можно настроить конфигурацию устройства так, чтобы получить изолированную от внешних пользователей систему (конечный пользователь не сможет расширять систему). Это можно сделать, записав образ ОС в ROM.
Windows CE соответствует определению системы реального времени (в отличие от XPe) с детерминированной задержкой обработки прерываний. Win CE поддерживает 256 уровней приоритета и поддерживает наследование приоритетов. Основной единицей исполнения является поток. Это позволяет упростить решение вопросов наследования и улучшить время исполнения.
На основе Win CE было разработано множество платформ (наиболее распространенные на сегодняшний день - Mobile 2003, Mobile 5.0, Smartphone 2003) и множество промышленных устройств и встраиваемых систем.
Значительная часть Windows CE поставляется с открытыми исходными кодами. В частности, Platform Builder (интегрированная среда создания образа ОС на основе Wndows CE) предлагает несколько компонент в форме исходных кодов.
Для персональных компьютеров разработано огромное число информационных систем. Прочие устройства до сих пор испытывают недостаток различных программных средств. Разработка решений для встраиваемых систем или мобильных устройств требует учета ограниченности их возможностей по сравнению с персональными компьютерами. В то же время такие устройства представляют платформы для создания совершенно новых приложений и сервисов.
Появление таких операционных систем, как Wndows CE и Wndows XP Embedded, существенно упрощает разработку встраиваемых систем. А возможность использования .NET Compact Framework упрощает создание прикладных программ и различных сервисов для устройств.