Создание встраиваемого приложения для специализированных устройств
В современных информационных инфраструктурных решениях все чаще начинают использоваться специализированные устройства. Это автоматизированные рабочие станции, размещаемые в общественных местах информационные киоски, предоставляющие клиентам банков различные терминалы, сервисы и т. д. При разработке подобных систем одной из основных задач является снижение совокупной стоимости владения, которая, как известно, включает в себя как стоимость разработки продукта, так и стоимость его поддержки в течение жизненного цикла. Для реализации подобных решений было бы целесообразно использовать существующую информационную и сервисную инфраструктуру, а также знания разработчиков. Такую возможность нам предоставляет встраиваемая операционная система от компании Microsoft — Windows XP Embedded со знакомым разработчикам API. Встраиваемая версия Windows базируется на хорошо зарекомендовавшей себя операционной системе Windows XP Professional, оснащенной разнообразным и доступным инструментарием. Но помимо этого, разработчику встраиваемого решения предоставляется возможность выбирать и добавлять в конечный образ создаваемой им операционной системы только те функции, которые необходимы для конкретного решения. Это достигается путем разбиения операционной системы XP Embedded на компоненты, содержащие сведения о зависимостях от других компонентов, что позволяет разрешать зависимости и добавлять в образ необходимые компоненты в автоматическом режиме.
Кроме того, учитывая тот факт, что встраиваемая версия предназначена для формирования встраиваемых решений, была добавлена уникальная функциональность, изначально отсутствовавшая в базовой версии: поддержка загрузки и работы с носителей только для чтения (CD-ROM); загрузки по сети; поддержка автономных устройств; поддержка режима HORM (Hibernate Once Resume Many), когда состояние системы многократно восстанавливается из первоначально созданного файла hiberfil.sys; технологии EFW (Enhanced Write Filter), обеспечивающей защиту носителей от записи и загрузку с носителей только для чтения; функции обновления устройства с Web-сайта, общей сетевой или локальной папки DUA (Device Update Agent).
Таким образом, можно считать, что Microsoft Windows XP Embedded представляет собой компонентную версию Windows XP Professional с дополнительными возможностями для встраивания. Пробная версия Microsoft Windows XP Embedded c SP2 доступна для загрузки на сайте Microsoft.
Разработка образа
Создание образа встраиваемой системы начинается с использования Microsoft Windows Embedded Studio, удобного инструмента для разработки встраиваемых решений на основе Windows XP Embedded, который включает в себя следующие модули: Target Analyzer, Component Designer, Component Database Manager, Target Designer.
Target Analyzer состоит из двух утилит — 16-разрядной ta.exe и 32-разрядной tap.exe. Он предназначен для определения состава выбранной аппаратной платформы. Component Designer — утилита для разработки собственных компонентов для XPe. Component Database Manager — инструмент управления базой компонентов (импорт, удаление и т. д.), а Target Designer отвечает за создание образов операционной системы для встраиваемого решения.
Разработка образа встраиваемой операционной системы включает следующие этапы:
- Определение состава аппаратной платформы, для чего используется Target Analyzer.
- Создание компонента, представляющего аппаратную часть конфигурации: результат работы Target Analyzer на шаге 1 импортируется в Component Designer.
- Определение отсутствующих, необходимых для решения компонентов (драйверов и/или приложений) путем анализа файла журнала импорта на шаге 2 и требований к встраиваемому решению.
- Разработка дополнительных приложений, если необходимо, в Microsoft Visual Studio .NET или с помощью любого другого привычного инструмента.
- Создание компонентов необходимых драйверов и/или приложений, для чего используется уже Component Designer.
- Разработка стратегии развертывания и обновления решения.
- Создание образа системы с использованием Target Designer.
- Прохождение созданным образом операционной системы процедуры First Boot Agent (FBA) на целевом устройстве — финальной процедуры подготовки образа, которая выполняется при первой загрузке собранного в Target Designer образа. FBA играет роль программы установки: устанавливает PnP устройства, регистрирует COM библиотеки и т. д.
- Тестирование встраиваемого решения.
Создаем информационный киоск
Возможность вовремя получать нужную информацию просто необходима в современной жизни. Интерактивные автоматизированные справочные киоски окружают нас повсюду: автоматическая справка по расписанию и стоимости билетов на железнодорожном вокзале, справочные терминалы в метро, расписание рейсов и другая полезная информация в аэропорту, терминал для доступа к сервисам банка рядом с банкоматом и т. д. Все это разновидности информационных киосков.
Рассмотрим последовательно этапы создания информационного киоска на основе Microsoft Windows XP Embedded c SP2. Первый этап — постановка задачи: необходимо разработать информационный киоск, который будет обеспечивать доступ пользователей к оперативным услугам банка. Услуги банка реализуются через стандартное Web-приложение, что обусловливает использование в качестве оболочки операционной системы приложения Internet Explorer в режиме киоска; наш киоск будет получать доступ к серверам банка через Internet. Чтобы максимально защитить наш образ от модификаций, в качестве носителя образа и источника загрузки будем использовать компакт-диск: простая перезагрузка системы возвращает ее в исходное состояние, вне зависимости от того, какие изменения выполнял пользователь. Обновление системы происходит путем замены компакт-диска в приводе CD-ROM. Будем считать, что наш предполагаемый заказчик уже выбрал целевую аппаратную платформу, и вся разработка будет вестись именно для нее. При этом BIOS целевой платформы должен поддерживать загрузку с привода CD-ROM.
Знакомимся с «железом»
Подключим жесткий диск на нашей целевой аппаратной платформе к первичному каналу IDE в качестве главного, на нем образ будет проходить FBA, а привод CD-ROM подключим ко вторичному каналу IDE, также в качестве главного. Для удобства разработки и тестирования подключим нашу платформу к сети c DHCP-сервером.
В поставке XPe на первом компакт-диске находится среда WinPE — Windows Pre-installation Environment — ее можно загрузить с компакт-диска и выполнить различные служебные операции (подготовку диска к загрузке операционной системы, копирование образа с целевой платформы и т .д.). Для определения состава аппаратной платформы и развертывания образа операционной системы также будет использоваться система WinPE. Определение аппаратного состава целевой платформы включает следующие действия:
- Установка диска c WinPE в привод компакт-дисков.
- Загрузка системы с привода CD-ROM в WinPE и получение IP-адреса от сервера DHCP.
- Подсоединение сетевого диска, на котором будет храниться результат работы Target Analyzer: net use z: серверсетевая_папка.
- Запуск утилиты Target Analyzer: tap /o z:kiosk.pmq (см. экран 1).
- Импорт результатов работы утилиты — файл kiosk.pmq — в Component Designer.
- Установка в свойствах компонента в качестве прототипа свойства Selector Prototype Component, позволяющего выбирать или отменять включение одной или нескольких составляющих компонента в образ в программе Target Designer.
- Присвоение компоненту имени Kiosk — Hardware Config.
- Установка состояния компонента в режим готовности «Release» и его сохранение.
- Импорт в базу компонентов с использованием Component Database Manager.
Экран 1. Запуск утилиты Target Analyzer в WinPE |
Теперь компонент Kiosk — Hardware Config доступен в Target Designer (см. экран 2).
Экран 2. Компонент Kiosk — Hardware Config в программе Component Desigener |
Создание конфигурации
Формирование конфигурации операционной системы с названием InfoKiosk начинается в программе Target Designer: в ней добавляем в конфигурацию созданный ранее компонент Kiosk — Hardware Config, а также компонент поддержки загрузки с компакт-диска — El Torito CD Support. Запускаем проверку зависимостей. Далее создаем компонент оболочки операционной системы, как было указано ранее, это будет Internet Explorer в режиме киоска, открывающийся на главной странице соответствующего сайта. Компонент будет называться Internet Explorer Custom Shell (вопрос создания этого компонента выходит за рамки статьи, но вы можете сами создать компонент-оболочку, используя статью «How to...» из документации Windows Embedded Studio). Следующий шаг — выбор компонентов операционной системы. После окончания проверки зависимостей остается три неразрешенных зависимости: поддерживаемые системой языки (выбираем English и Russian Language Support); Session Manager (выбираем Windows Logon); поддерживаемые файловые системы (выбираем FAT). Опять запускаем проверку зависимостей и выбираем компоненты операционной системы. После окончания проверки останется одна неразрешенная зависимость: используемая оболочка операционной системы (выбираем Internet Explorer Custom Shell; см. экран 3).
Экран 3. Выбор оболочки операционной системы в программе Target Designer |
Приступим к настройке компонента Enhanced Write Filter. EWF поддерживает два типа работы с оверлеем: на носителе и в памяти (EWF RAM). В свою очередь, EWF RAM может работать, храня конфигурацию на специальном служебном разделе или только в реестре (EWF RAM (Reg)). Ввиду того что компонент поддержки загрузки с компакт-диска, в нашем случае El Torito, поддерживает только режим EWF RAM (Reg), в настройках компонента Enhanced Write Filter необходимо отменить режим Start EWF Enabled. Запускаем проверку зависимостей и добавляем дополнительные компоненты.
После завершения предыдущего этапа можно строить и разворачивать образ операционной системы, однако, чтобы выполнить окончательную настройку образа, понадобится редактор реестра и интерпретатор командной строки, запускающийся при загрузке системы. Добавим перечисленные компоненты в образ. Запустим проверку зависимостей и приступим к настройке образа.
Для обеспечения запуска CMD.exe при каждом старте системы добавим в свойство Extra Resources конфигурации соответствующий параметр RunOnce Request. Также укажем предполагаемый размер раздела, на котором будет развернута система. В настройках образа в разделе настроек целевого устройства (Target Device Settings) необходимо выставить значение параметра для размера загрузочного раздела Boot partition size (Mb) в 300. Запускаем проверку зависимостей — и можно приступать к построению образа (см. экран 4).
Экран 4. Построение образа операционной системы в программе Designer |
Подготовка и прохождение FBA
Подготовка к FBA предполагает выполнение двух задач: подготовка носителя на целевой платформе для прохождения FBA и создание El Torito CD-ROM, который должен находиться в приводе CD-ROM в процессе прохождения FBA. El Torito представляет собой устройство plug-and-play, поэтому при инициализации PnP-устройств и установке драйверов в процессе FBA требуется присутствие El Torito-устройства.
Решение первой из обозначенных задач предполагает:
- Загрузку в MS-DOS с помощью загрузочной дискеты.
- Разметку жесткого диска утилитой fdisk: cоздаем раздел размером 300 Мбайт.
- Установку созданного раздела как активного.
- Форматирование жесткого диска утилитой format в файловую систему FAT.
- Подготовку носителя к загрузке XP Embedded при помощи утилиты BOOTPREP (записывает необходимую информацию в загрузочный сектор (утилиту BOOTPREP следует использовать только после форматирования носителя в MS-DOS или Windows 3.11/95/98/ME).
- Загрузку в WinPE.
- Подсоединение сетевого диска с образом XP Embedded и копирование его на подготовленный раздел.
Для решения второй из поставленных задач:
- Загружаемся в WinPE.
- Присоединяем сетевой диск.
- Запускаем утилиту hd2iso.exe и, используя подготовленный ранее раздел как источник, готовим образ El Torito СD-ROM; в выходном каталоге используем присоединенный сетевой диск.
- Записываем полученный образ на болванку, используя подходящее программное обеспечение.
El Torito СD-ROM для прохождения FBA готов. Далее вставляем подготовленный El Torito СD-ROM в привод компакт-дисков целевой платформы и проверяем, настроен ли BIOS на загрузку с жесткого диска. Затем перегружаем целевую платформу, и запускается процесс FBA.
После FBA
После прохождения FBA необходимо проверить правильность установки и подготовить образ к загрузке с CD-ROM. Для решения этих задач используем интерпретатор командной строки, стартующий при каждом запуске, и редактор реестра.
Первая из указанных задач предполагает проверку настроек EWF. Запускаем из командной строки ewfmgr. Отобразится текущий статус EWF:
Ewf Volume Configuration
Volume Size 681574400
Segments 8192
Segment Size 249856
Free segments 8192
Max Levels 1
Max Protected Volumes 1
Protected Volumes 1
Overlay volume percent full 0.00
Protected volumes
Arc Path «DeviceHarddiskVolume1»
Проверяем, правильно ли настроен EWF: верно ли отображается путь к защищенному тому, нет ли ошибок. Набираем в командной строке
ewfmgr c
Отобразится текущий статус EWF, относящийся к диску C:
Protected Volume Configuration
Type RAM
State DISABLED
Boot Command NO_CMD
Param1 0
Param2 0
Persistent Data «»
Volume ID D2 02 96 49 00 0E 59 96 02 00 00 00 00 00 00 00
Device Name «DeviceHarddiskVolume1»
Max Levels 1
Clump Size 512
Current Level 1
Disk space used for data 0 bytes
Disk space used for mapping 0 bytes
Memory used for mapping 0 bytes
Экран 5. Установка PnP-устройств при прохождении FBA |
Проверяем, правильно ли настроен EWF: верно ли отображается путь к защищенному тому, нет ли ошибок и находится ли он в выключенном состоянии (State: DISABLED). После проверки можно провести дополнительную настройку образа и/или установить необходимые программы. Для решения второй из обозначенных выше задач следует удалить из раздела автозапуска интерпретатор командой строки, используя редактор реестра, и запустить утилиту etprep c ключом /all, завершая подготовку образа к загрузке с CD-ROM:
etprep /all
В результате выполнения этой команды система перезагрузится.
После выполнения данной операции не следует загружать систему: исполнение команды Etprep поменяло местами букву привода CD-ROM и диска C: в настройках системы.
Последний шаг
Процесс создания образа компакт-диска аналогичен данному этапу при подготовке диска El Torito для прохождения FBA. Полученный образ компакт-диска записываем на подходящий носитель. Создав загрузочный компакт-диск, необходимо проверить его функциональность. Для этого:
- Отключаем жесткий диск от первичного канала IDE и подключаем на его место привод CD-ROM.
- Вставляем в привод компакт-дисков записанную болванку.
- Настраиваем BIOS на загрузку с CD-ROM.
- Проверяем, успешно ли загружается целевая платформа с компакт-диска с разработанным нами образом.
На экране 6 представлен вид загруженной системы, где в качестве стартовой страницы выбрана страница http://www.microsoft.com/rus/.
Заключение
Экран 6. Внешний вид экрана устройства после загрузки |
Поддерживая современные технологии и предоставляя мощный инструментарий, платформа Windows Embedded позволяет создавать специализированные встраиваемые решения широкого профиля. Знакомая архитектура и бесшовная интеграция в информационную инфраструктуру минимизируют затраты разработчика, позволяя ему сосредоточиться на создании системы и не расходовать лишних ресурсов.
Системный аналитик в компании «Кварта Технологии», дистрибьюторе встраиваемых систем Microsoft. Имеет сертификат тренера по Windows CE и Windows XP Embedded