Начало работы с контейнером приложений Windows CE

Контейнер приложений Windows CE — это технология, которая позволяет большинству приложений CE выполняться поверх Windows 10 IoT Базовая.

Решение строится в два этапа. На первом этапе создается образ Windows CE 2013 с помощью BSP для архитектуры x86 или ARM32. Затем на втором этапе этот образ включается в Windows 10 IoT Базовая образ, который использует X64 или ARM32 BSP для конкретного оборудования устройства, на котором будет установлено решение.

Архитектура контейнера приложений CE

Дополнительные сведения об этой архитектуре см. в этом видео: Модернизация устройств Windows CE.

Предварительные требования

Для контейнер приложений Windows CE программного обеспечения требуется обновленная версия Windows Compact 2013 (номер сборки 6294 от июня 2020 г. или более поздней версии) вместе с обновленными пакетами Windows 10 IoT Базовая для 64-разрядных систем и ARM32 (обновление за август 2020 г. или более поздней версии). Чтобы получить последние пакеты для Windows 10 IoT Базовая, обратитесь к распространителю Майкрософт.

Примечание

Для распространения устройства, использующее технологию CE App Container, необходимо иметь действительную подписку на основные службы Интернета вещей.

Кроме того, вам потребуется следующее:

Настройка, сборка и упаковка CE для контейнер приложений Windows CE

Процесс создания образа Windows Embedded Compact 2013 не был значительно обновлен. Общий процесс создания образа:

  1. Создание проекта разработки ОС с помощью построителя платформ

  2. Выбор пакета поддержки платформостроителя платформ (BSP)

  3. Выбор соответствующего шаблона макета

  4. Настройка параметров, предоставляемых шаблоном конструктора

  5. При необходимости добавьте вложенные проекты в проект разработки

  6. Создание образа

Основное изменение заключается в выборе правильного BSP и дополнительных рекомендаций для образа CE. В этом руководстве предполагается, что вы уже знакомы с процессом создания образа системы Windows CE, но стоит более подробно ознакомиться с измененным разделом.

Шаг 2 — это единственная часть предыдущего процесса проекта разработки ОС, которая была изменена при использовании контейнера приложений CE. Дополнительные сведения см. ниже.

Шаг 2. Выбор BSP построителя платформ

Для поддержки контейнер приложений Windows CE в Platform Builder добавлен новый BSP, предназначенный для архитектур x86 и ARM.

При создании конструктора ОС для контейнера приложений CE выберите "контейнер приложений Windows CE: x86" или "контейнер приложений Windows CE: ARMv7" (ARM32) в зависимости от базового оборудования для устройства на основе IoT Core.

Например, если целевое устройство IoT Core использует оборудование Intel, выберите параметр "контейнер приложений Windows CE: x86". Кроме того, если оборудование IoT Core использует NXP i.MX6, выберите параметр "контейнер приложений Windows CE: ARMv7".

Выбор BSP контейнера приложений CE

После этого вы сможете настроить параметры и вложенные проекты так же, как это обычно делается для образа Windows Embedded Compact. Эти конфигурации будут встроены в контейнер CE, который будет развернут в образе Windows 10 IoT Базовая.

Создание образа Windows 10 IoT Базовая

Примечание

Этот процесс более подробно рассматривается в лабораториях, которые являются частью руководства по производству Windows 10 IoT Базовая. В разделе ниже приведены только дополнительные действия, выполняемые на определенных этапах процесса создания образа IoT Core. Настоятельно рекомендуется ознакомиться с руководством по производству Windows 10 IoT Базовая, прежде чем продолжить.

Общие сведения о процессе

В отличие от процесса создания образа Windows Embedded Compact, Windows 10 IoT Базовая все еще объединяет создание встроенного ПО, пакеты поддержки платы, определение образа и включение приложений. Используя различные технологии для этих компонентов, вы можете разделить работу, которую необходимо выполнить между различными командами или отдельными лицами в вашей организации.

Ниже приведены основные шаги по созданию образа.

  1. Создание рабочей области

  2. Импорт соответствующего пакета поддержки основных плат Интернета вещей (BSP)

  3. Импорт созданного ранее контейнера приложений CE

  4. Создание определения продукта

  5. Добавление функций и приложений в продукт

  6. Создание полного флэш-обновления (FFU)

  7. Развертывание FFU на устройстве и тестирование

  8. Завершение и подписание розничной торговли ФФУ

В руководстве по производству Windows 10 IoT Базовая приведены подробные руководства по каждому из этих шагов. Хотя некоторые из этих шагов похожи на процесс создания образа устройства с помощью построителя платформ (PB), стоит изучить некоторые области более глубоко.

Шаг 1. Создание рабочей области

Ознакомьтесь с документацией Создание базового образа в руководстве по производству IoT Core, чтобы узнать, как создать рабочую область.

Шаг 2. Импорт соответствующего пакета поддержки основной платы Интернета вещей (BSP)

Ознакомьтесь с документацией Создание базового образа в руководстве по производству IoT Core для получения поддержки для вашей платы.

Шаг 3. Импорт контейнер приложений Windows CE

Контейнер приложений Windows CE создается с помощью PB, как описано выше, и импортируется в рабочую область IoT Core с помощью команды Import-IoTCEPAL. Эта команда скопирует необходимое содержимое из неструктурированного каталога выпуска CE в рабочую область IoT ADK. При многократном вызове предыдущего состояния создается резервная копия в каталоге Source-\$Arch\CEPAL.OLD в рабочей области.

Шаг 4. Создание определения продукта

Чтобы создать определение продукта, ознакомьтесь с документацией Создание базового образа в руководстве по производству IoT Core.

Шаг 5. Добавление контейнера приложений CE в продукт

После импорта определения контейнера приложений CE в рабочую область необходимо выполнить команду Add-IoTCEPAL , которая добавит ссылку на пакеты контейнеров приложений CE в соответствующие файлы OEMInput.xml продукта (тестовые и розничные).

Следующим шагом является использование команды Add-IoTProductFeature , чтобы добавить функцию IOT_CEPAL в OEMInput.xml. Это добавляет поддержку узла Windows для контейнер приложений Windows CE (Windows CE интерфейсное приложение UWP + драйверы поддержки) в определение продукта и включает контейнер приложений CE в группу приложений по умолчанию. Мы обсудим конфигурацию запуска в следующем разделе.

Шаг 6. Создание CAB-файлов

Это важный шаг при создании FFU, который следует выполнять при каждом изменении конфигурации, добавлении или изменении приложения или драйверов. Вы будете использовать New-IoTCabPackage с параметром "Все". Вы также можете создавать отдельные функции по мере необходимости, но в целом следует перестроить все пакеты до этапа создания FFU, как рекомендуется.

Шаг 7. Развертывание FFU на устройстве

После сборки образа его можно развернуть на устройстве. Это можно сделать из командной строки с помощью DISM, с помощью процесса развертывания для конкретного устройства или с помощью панель мониторинга Windows 10 IoT Базовая. Дополнительные сведения см. в руководстве по производству Windows 10 IoT Базовая.

Развертывание контейнер приложений Windows CE на устройстве при использовании существующего FFU

ЦС CE являются развертываемыми пакетами в IoT Core. Если существует образ IoT Core, эти ЦС можно развернуть на устройстве с помощью APPLYUPDATE команды . Сначала скопируйте ЦС на устройство, а затем подготовьте и зафиксируйте их с помощью APPLYUPDATE. Обратите внимание, что при таком обновлении учитывается управление версиями пакетов, поэтому если обновленные версии пакетов должны быть развернуты на устройстве, они должны иметь больший номер версии. (См. команду Set-IoTCabVersion в среде IoT ADK. Дополнительные сведения об этом см. в статье Создание и установка пакетов.

Шаг 8. Создание образа розничной торговли

Наличие правильно подписанного образа является важной частью защиты и обновления устройства. Для Windows 10 IoT Базовая это отображается как разница между сборками test signed и Retail signed. Никогда не следует развертывать образ с тестовой подписью. Тестовые подписанные образы следует использовать только в целях отладки, и перед созданием окончательного образа, подписанного в розничной торговле, необходимо исправить все ошибки или изменения конфигурации.

Примечание

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

  • Сертификат для подписи кода в розничной продаже
  • Сертификат перекрестной подписи

Правильное подписывание и включение приложений

Если у вас есть одно или несколько пользовательских приложений, которые вы хотите включить в образ Windows 10 IoT Базовая розничной торговли, необходимо убедиться, что эти приложения подписаны правильно при включении их в образ розничной торговли.

Дополнительные сведения

Добавление новых приложений в существующий образ

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

Рекомендации по упаковке

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

Так как пакет является наименьшей единицей обновления, убедитесь, что каждый пакет как можно меньше. При сборке в построителе платформ созданные пакеты автоматически разделяются в соответствии с разделом памяти и типом модуля или файла в соответствии с файлом BIB.

  • Для пользовательских ресурсов, встроенных в построителе платформ и упакованных с помощью OSDesign.bib, рассмотрите возможность добавления пользовательских ресурсов в отдельный раздел памяти в BIB (не в NK), чтобы обновления пользовательского кода могли отправляться отдельно от обновлений в ОС CE.

  • Для пользовательских ресурсов, добавленных с помощью команд упаковки IoT ADK: убедитесь, что созданные пакеты как можно меньше.

Добавление других элементов в пакет построителя платформ

Как правило, не рекомендуется изменять результирующий пакет, созданный построителем платформ, чтобы включить дополнительные компоненты в образ системы. Вместо этого следуйте руководству по производству Windows 10 IoT Базовая. Однако если необходимо добавить файлы в пакет, созданный построителем платформы, выполните существующий процесс. При добавлении содержимого в пакет, созданный PB, учитывайте следующее:

  • Существует максимальный размер пакетов (около 400 МБ), и превышение этого размера предотвратит обновление.

  • Обновления происходит при степени детализации пакета. Если требуется обновить один ресурс в пакете, то все ресурсы этого пакета будут обновлены одновременно. Чтобы уменьшить размер обновлений, изолируйте содержимое в отдельных пакетах, чтобы свести к минимуму общий размер обновления.

Добавление дополнительных файлов с помощью Platform Builder

Процесс упаковки, описанный выше, определяется теми же входными данными, которые идут при создании ФАЙЛА CE BIN. Таким образом, если на файлы ссылаются в OSDesign.bib, а записи реестра добавляются в OSDesign.reg, MAKEIMG процесс включает эти файлы в итоговый CAB-файл. В ходе этого процесса MAKEIMG будет выполняться следующее:

  1. ROMIMAGEсоздаст каталог с именем CEPAL\_PKG в неструктурированном каталоге выпуска (FRD), который создает структуру установленных каталогов для Windows CE для CEPAL.

  2. ROMIMAGE выполняет инвентаризацию всех ce-файлов, которые были помещены в CEPAL\_PKG на основе файлов CE BIB.

  3. ROMIMAGE создаст несколько файлов WM.XML для каждого раздела памяти. Это делается для более детальной отправки обновлений, так как минимальная единица обновления представляет собой пакет.

  4. ROMIMAGE создаст объект , который ссылается на все созданные пакеты.

Все созданные пакеты будут называться с фиксированным префиксом “%OEM\_NAME%.WindowsCE.\*”, где %OEM\_NAME% заполняется во время процесса создания IoT Core при вызове New-IoTCabPackage. Имя пакета в пространстве имен является производным от раздела памяти в BIB-файле (например, NK), за которым следуют модули и файлы (также определяется BIB-файлом).

Взаимодействие между Windows Embedded Compact 2013 и приложениями Windows 10 IoT Базовая

Рекомендуемый подход к обмену данными между приложениями, работающими в контейнере CE, заключается в использовании локального замыкания на себя. Дополнительные сведения о локальном замыкания на себя см. в этом документе.

Автоматический запуск приложения-контейнера приложений CE

Чтобы автоматически запустить приложение-контейнер CE, можно создать пакет подготовки , который задает для запускаемого приложения значение "Microsoft.Windows.IoT.CEPAL.DkMonUWP_cw5n1h2txyewy! Приложение" и включил этот пакет подготовки в образ. Вам также потребуется удалить приложение запуска по умолчанию с помощью команды Remove-IoTProductFeature и удалить идентификатор компонента IOT_BERTHA из определения продукта IoT Core.

Доступные параметры конфигурации для контейнер приложений Windows CE

Конфигурация на основе реестра в CE

Неисполняемый стек по умолчанию

Для повышения безопасности контейнер приложений Windows CE по умолчанию отключены страницы исполняемого стека. Однако некоторые устаревшие приложения могут использовать это поведение для правильной работы. Чтобы включить исполняемый стек, задайте следующее значение реестра в образе CE (рекомендуется, чтобы оно было включено в OSDesign.reg в построителе платформ)

KeyPath = HKEY\_LOCAL\_MACHINE\CEPAL
ValueName = MemoryOptions Type = REG\_DWORD
Value = 1
Переопределение 16-разрядной версии 565 для GWES

Если контейнер приложений Windows CE настроен с 32-разрядным дисплеем, то 16-разрядные и 32-разрядные преобразования RGB выполняются GWES с предположением, что 16-разрядные данные пикселей RGB имеют формат RGB555. Если ресурсы точечных рисунков находятся в 16-разрядной версии 565 и преобразование в RGB555 этих ресурсов невозможно, поведение преобразования GWES по умолчанию можно изменить с помощью раздела реестра. Создайте следующий раздел реестра:

HKEY\_LOCAL\_MACHINE\SYSTEM\GDI\16bpp565RGBPalette.

Конфигурация на основе реестра в узле (IoT Базовая)

Настройка последовательных портов для контейнер приложений Windows CE

Последовательные порты узла должны быть сопоставлены со средой CE. Это сопоставление существует в реестре в IoT Core и должно быть настроено создателем образа.

В разделе HKEY\_CURRENT\_USER\Software\Microsoft\Windows NT\CurrentVersion\CEPAL\Devices\Serialсуществуют записи конфигурации для сопоставления гостевых COM-портов с COM-портами узла с помощью следующей схемы.

KeyPath = HKEY\_CURRENT\_USER\Software\Microsoft\Windows NT\CurrentVersion\CEPAL\Devices\Serial\0

ValueName = Guest Type = REG\_SZ Value = COM1

ValueName = Host

Type = REG\_SZ

Value = \\?\Some\DeviceInterface\Path

KeyPath= HKEY\_CURRENT\_USER\Software\Microsoft\Windows NT\CurrentVersion\CEPAL\Devices\Serial\1

ValueName = Guest Type = REG\_SZ Value = COM2

ValueName= Host Type = REG\_SZ

Value = \\?\Some\Other\DeviceInterface\Path

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

Конфигурация на основе файлов в узле

Контейнер CE можно настроить с помощью локального файла на узле C:\WindowsCE\CEEnvConfig.json. Ниже приведен пример этого файла конфигурации:

{
 "OEMOptions" :
    {
     "GUI" : true,
     "Width" : 1024,
     "Height" : 768, "FillScreen" : true, "ColorDepth" : 32,
     "RefreshRate" : 30, "noAslrSupport" : true, "OemConfigApp" : "",
     "OemConfigFile" : ""
    },
 "CEPALDevOptions" :
    {
     "VsDebugMode" : true, "FastDebugBoot" : false
    }
 }

OEMOptions

Ключ Описание
Пользовательский интерфейс Запуск контейнера приложений CE с пользовательским интерфейсом (по умолчанию — true)
Ширина Ширина отображения контейнера приложения CE (по умолчанию 1024)
Высота Высота отображения контейнера приложения CE (по умолчанию 768)
FillScreen
ColorDepth Задает биты по умолчанию на пиксель (по умолчанию 32)
RefreshRate Сколько раз экран перерисовывался в секунду
noAslrSupport Отключает случайный выбор макета адресного пространства в контейнере приложения CE (по умолчанию — true)
OEMConfigApp Имя семейства пакетов предоставленного OEM приложения, которое должно быть запущено для настройки.
OEMConfigFile Путь к файлу, который содержит дополнительные параметры конфигурации, совместно используемые OEMConfigApp и контейнером приложения CE

Контейнер приложений CE делает доступным только один сетевой интерфейс. Если в системе узла есть несколько сетевых адаптеров, необходимо выбрать один интерфейс в реестре узлов, чтобы обеспечить детерминированность выбранной сетевой карты.

OEMConfigFile

OEMConfigFile указывается в C:\WindowsCE\CEEnvConfig.json. Убедитесь, что этот файл может быть прочитан приложением UWP. Ниже приведен пример:

{
   “FactoryReset”: false, “PlatformBuilderDebugMode”: false,
   “NetInterface”: “Some Network Profile Id”
}

Параметры:

Ключ Описание
FactoryReset Используется приложением конфигурации, чтобы сигнализировать контейнеру приложения CE о дампе постоянного состояния.
PlatformBuilderDebugMode Используется для загрузки контейнера приложений CE с поддержкой KITL для отладки с помощью построителя платформ.
NetInterface Выберите сетевой интерфейс для CE на основе имени профиля.

Ссылки