ИТ-индустрия представляет собой сложную экосистему, ключевую роль в развитии которой играют производители аппаратного и программного обеспечения. Благодаря их достижениям даже искушенные пользователи не перестают удивлятся новинкам в области цифровых технологий. И локомотивом в этой сфере, безусловно, можно считать производителей аппаратных решений: как бы ни были хороши средства разработки и операционные системы, в результате мы всегда будем ограничены возможностями аппаратной части. С другой стороны, могут возразить разработчики программного обеспечения и операционных систем, какой бы высокотехнологичной, инновационной и производительной ни была платформа, без хорошей оправы в виде надежного и эффективного программного обеспечения она будет бесполезна. Таким образом, успех развития цифровых технологий определяется качеством каждой из перечисленных составляющих.
Если говорить о разработке мобильных и встраиваемых устройств, а именно о них пойдет речь в данной статье, то эта область отличается, пожалуй, самой высокой динамичностью, что обусловлено достаточно коротким жизненным циклом продуктов, в особенности это касается потребительского рынка. В таких, можно сказать, жестких, с точки зрения времени от начала разработки до выхода продукта на рынок, условиях важно иметь надежный базис в виде операционной системы, максимально отвечающей специфичным для устройств требованиям. А именно операционная система должна быть мультиплатформенной, поскольку, как отмечалось выше, динамика появления новых, интересных с технологической точки зрения платформ высока, и переход на них должен быть как можно более спокойным. Безусловно, операционная система должна поддерживать максимум современных технологий для интеграции в существующие инфраструктуры и успешного взаимодействия с другими устройствами, возможно, от других производителей. И наконец, ключевой и определяющий показатель эффективности процесса создания устройств — это инструментарий разработчика.
. Производительность процессоров ARM уже достигла таких величин, что при впечатляюще малом уровне потребления электроэнергии данные процессоры вполне способны работать под управлением настольных систем Windows. И даже когда в обозримом будущем состоится выход настольной системы с поддержкой ARM, операционные системы Windows Embedded Compact все равно будут оставаться востребованными, как минимум в системах, от которых требуется работа в режиме реального времени. Итак, давайте познакомимся с возможностями, которые предоставляет новая операционная система разработчикам устройств.
Ключевые особенности
Windows Embedded Compact 7 является новой версией компактной 32-разрядной многозадачной встраиваемой операционной системы с поддержкой ключевых процессорных архитектур, предназначенной для построения широкого спектра устройств, начиная от мультимедийных решений и заканчивая системами реального времени. Компактность достигается за счет усовершенствованной компонентной архитектуры, и если говорить о конкретных цифрах, то, например, минимальный образ системы, содержащий только ядро, будет иметь размер порядка нескольких сотен килобайтов. При работе с памятью реализована архитектура виртуальной памяти, что для 32-разрядной системы означает адресное пространство в 4 Гбайт, при этом по сравнению с предыдущей версией CE 6.0, была значительно расширена поддержка физической памяти: теперь в распоряжении системы может находиться до 3 Гбайт, в отличие от прежних 512 Мбайт. Мультиплатформенность системы выражается в поддержке ключевых, в том числе самых современных процессорных архитектур: x86, ARM, MIPS. Причем для ARM-архитектуры реализована поддержка для ядер ARM v5, v6 и новейших v7, включая расширение NEON. Значительно отличаясь в архитектурном плане от настольной системы, в WEC 7 доступно подавляющее большинство технологий, используемых при разработке приложений для настольной системы: Win32, MFC, ATL, WTL,. NET Compact Framework и даже Silverlight.
Средства разработки
Высокая эффективность процесса разработки устройств на базе WEC 7 достигается благодаря использованию популярных и хорошо знакомых разработчикам инструментов Microsoft Visual Studio 2008 и Microsoft Expression Blend 3. Для разработки устройств на базе WEC 7, помимо самой Visual Studio, необходимо установить дополнение, подключаемый модуль Platform Builder. Кроме того, для используемой аппаратной платформы должен быть установлен пакет аппаратной поддержки BSP. В комплекте поставки средств разработки идут примеры BSP для каждой поддерживаемой архитектуры: x86, ARM и MIPS. При отсутствии устройства может использоваться эмулятор, в роли которого выступает Microsoft Windows Virtual PC (только для Windows 7 соответствующей редакции) или Microsoft Virtual PC 2007. Эмулятор ARM из поставки Visual Studio 2008 для разработки на базе WEC 7 не поддерживается. В общем случае этапы разработки образа состоят из создания дизайна операционной системы, выбора необходимых компонентов, сборки образа, его отладки и тестирования на устройстве. Практически все указанные этапы выполняются в интегрированной среде Microsoft Visual Studio. Для создания дизайна операционной системы служит специальный мастер, с помощью которого выполняется выбор аппаратной платформы, причем их может быть несколько (экран 1), шаблона устройства (экран 2) и компонентов (экран 3). После создания дизайна у разработчика есть возможность добавить/удалить компоненты при помощи каталога (экран 4). На следующем этапе выполняется сборка образа системы для конкретной аппаратной платформы. Результатом сборки является файл образа для загрузки на устройство или эмулятор. Для того чтобы выполнять отладку непосредственно из Visual Studio, доступно два варианта: программная отладка при помощи протокола Kernel Independent Protocol (KITL) и аппаратная отладка через интерфейс eXDI/eXDI2. KITL позволяет выполнить отладку доступными средствами, для подключения может использоваться USB, Ethernet или последовательный порт, но при этом в BSP должна быть реализована его поддержка по одному из перечисленных вариантов подключения. В результате для отладки устройства доступны как стандартные средства Visual Studio (точки останова, стек вызовов и пр.), так и широкий спектр инструментов из арсенала Platform Builder, наиболее мощными из которых являются утилиты удаленной работы Remote Tools. Программы для удаленной работы позволяют просматривать и изменять содержимое файловой системы (экран 5), реестра (экран 6), делать снимки экрана, получать системную информацию (экран 7) и анализировать производительность системы. Для тестирования устройств применяется отдельный пакет тестирования — Compact Test Kit (CTK). Данный пакет не интегрирован в Visual Studio и представляет собой отдельную программу для централированного запуска различных тестов на устройствах (экран 8), сбора и анализа полученных результатов (экран 9).
Экран 1. Выбор аппаратной платформы |
Экран 2. Выбор шаблона устройства |
Экран 3. Выбор компонентов |
Экран 4. Добавление или удаление компонентов через каталог |
Экран 5. Удаленный доступ к файловой системе устройства |
Экран 6. Удаленный доступ к реестру устройства |
Экран 7. Удаленной получение системной информации |
Экран 8. Использование Compact Test Kit для запуска тестов |
Экран 9. Использование Compact Test Kit для сбора результатов тестов |
Мультимедиа
Мультимедийные возможности новой системы были значительно усовершенствованы. В первую очередь это касается разработки интерфейсов — неотъемлемой части любого устройства, в особенности мультимедийного. Технология Silverlight for Windows Embedded — портированная на Windows Embedded CE версия Silverlight — позволяет быстро создавать графические интерфейсы со сложными эффектами визуализации. Особенностью Silverlight for Windows Embedded является использование C/C++ кода в отличие от управляемого кода, который задействован в Silverlight/WPF для настольных систем и Windows Phone 7. Native-код дает важные приемущества для устройств — это возможность напрямую взаимодействовать с драйверами периферийных устройств и удовлетворять требованиям к работе в режиме реального времени. При отрисовке приложений, разработанных на Silverlight for WE, желательно использовать аппаратное ускорение графики, для этого в системе реализована поддержка основных API, например DirectDraw и OpenGL ES. Средство для разработки интерфейсов, Microsoft Expression Blend 3, после установки дополнения содержит специальный шаблон для создания приложений Silverlight for Windows Embedded (экран 10). Разработка кода таких приложений ведется в Microsoft Visual Studio, причем не с нуля, как это было в CE 6.0, а на основе сгенерированного проекта. В качестве примеров в поставке средств разработки WEC 7 идет оболочка (экран 11), вариант Internet Explorer (экран 12) и мультимедийные плееры (экран 13), интерфейс которых разработан с использованием Silverlight for WE.
Экран 10. Шаблон для приложений Silverlight |
Экран 11. Пример оболочки для приложения |
Экран 12. Пример приложения в виде Internet Explorer |
Экран 13. Пример мультимедиаплеера |
Для того чтобы интерфейс не только отлично выглядел, но был удобен и интуитивно понятен, в дополнение к технологии Silverlight for WE реализована поддержка сенсорных экранов с распознаванием множественных касаний, Multi Touch. Как и Silverlight for WE, технология Multi Touch является тем полезным дополнением, которое делает работу с устройством более комфортной и эффективной. Очевидно, что одних только технологий для разработки интерфейсов было бы недостаточно для создания современных мультимедийных устройств и устройств, активно использующих коммуникации. Непосредственно для мультимедийных решений в поставке идет набор аудио/видеокодеков с поддержкой DirectShow, веб-браузер Internet Explorer 7 c поддержкой Adobe Flash 10 и средства для просмотра документов. В плане коммуникационных возможностей в арсенале разработчика есть большой набор компонентов для использования в устройствах таких технологий, как Wi-Fi, Bluetooth 2.1, DLNA 1.5, GSM/CDMA/3G/EDGE. При этом у разработчика всегда есть возможность задействовать менеджер соединений Connection Manager, который абстрагирует приложения от нюансов подключения к локальной сети или Интернету.
Возможности для систем реального времени
Если вернуться немного назад, то предшественник WEC 7, операционная система Windows Embedded CE, уже начиная с версии CE 3.0 стала относиться к системам реального времени, что было подтверждено в ходе независимых испытаний (http://es2.dedicated-systems.info/). Благодаря поддержке многоядерных процессоров, возможности построения систем реального времени на базе WEC 7 расширяются. В случае одного вычислительного ядра в любой многозадачной операционной системе, в том числе Windows Embedded Compact, параллельность исполнения нескольких потоков достигается за счет быстрого переключения контекста исполнения между потоками. При этом получается, что в каждый момент времени исполняется только один поток. Некоторую аналогию в данном случае можно провести с процессом воспроизведения видео — в каждый момент времени на экране отображается отдельный кадр, но за счет быстрой смены кадров и свойств человеческого глаза движения воспринимаются непрывными, как в реальной жизни. Чтобы разобраться с проблемами исполнения нескольких потоков на одном вычислительном ядре, достаточно рассмотреть гипотетический случай, когда в системе запущено два потока (в действительности в любой современной операционной системе параллельно исполняются десятки или даже сотни потоков). Для систем без требований к работе в режиме реального времени достаточно просто исполнять эти потоки по очереди без особых предпочтений в пользу одного из них. Уточним условия для системы реального времени, в которой один поток соответствует задаче реального времени, а второй отвечает за интерфейс пользователя и не требует соблюдения жестких ограничений работы в реальном времени. В такой ситуации для обеспечения требований по реальному времени приходит на помощь система приоритетов. Причем в Windows Embedded CE, в отличие от настольной операционной системы Windows, используется жесткая приоритизация — в каждый момент времени исполняется наиболее высокоприоритетный поток, и только он. Такой подход, с одной стороны, позволит потоку реального времени исполняться ровно столько, скольку ему необходимо, и соответствовать требованиям реального времени, но, с другой стороны, остальные потоки могут получать недостаточно или вовсе не получать процессорного времени, что приведет к замедлению отклика интерфейса пользователя или его полной невосприимчивости к действиям пользователя. В WEC 7 на платформе с несколькими вычислительными ядрами можно настроить систему таким образом, что первому высокоприоритетному потоку будет полностью предоставлено одно ядро процессора, а поток, обеспечивающий работу интерфейса, будет исполняться на другом ядре. В результате будет получена система реального времени с интерактивным интерфейсом.
Платформа для будущего
Windows Embedded Compact 7 является отличной платформой для создания высокотехнологичных устройств, в том числе с поддержкой работы в режиме реального времени. Система поддерживает современные процессорные архитектуры, включая процессоры с несколькими вычислительными ядрами, до 3 Гбайт оперативной памяти, обладает богатыми мультимедийными и коммуникационными возможностями. Высокая эффективность разработки устройств на базе WEC 7 обеспечивается мощным инструментарием в составе Microsoft Visual Studio 2008 с дополнением Platform Builder, Microsoft Expression Blend 3 и пакета для тестирования CTK.
Павел Белевский (pavelb@quarta.ru) — системный инженер по встраиваемым решениям компании «Кварта Технологии». Авторизированный тренер по Windows Embedded CE и Windows XP Embedded, имеет звание Microsoft MVP в области Windows Embedded. Ведет русскоязычный форум по встраиваемым операционным системам Microsoft (http://forum.quarta.ru)