Начало работы с контейнером приложений Windows CE
Контейнер приложений Windows CE — это технология, которая позволяет большинству приложений CE работать поверх Windows 10 IoT Базовая.
Решение состоит из двух этапов. На первом этапе создается образ Windows CE 2013 с помощью BSP для архитектуры x86 или ARM32. Затем на втором этапе этот образ включается в образ Windows 10 IoT Базовая, который использует BSP x64 или ARM32 для конкретного оборудования устройства, где будет установлено решение.
Дополнительные сведения об этой архитектуре см. в этом видео: модернизация устройств Windows CE.
Необходимые компоненты
Для контейнер приложений Windows CE программного обеспечения требуется обновленная версия Windows Compact 2013 (номер сборки 6294 с июня 2020 г. или более поздней версии) вместе с обновленными пакетами Windows 10 IoT Базовая для x64 и ARM32 (обновление или более поздней версии) за август 2020 г. Чтобы получить последние пакеты для Windows 10 IoT Базовая, обратитесь к распространителю Майкрософт.
Примечание.
Для распространения устройства, использующее технологию контейнера приложений CE, необходимо иметь действительную подписку на службы IoT Core Services .
Кроме того, вам потребуется следующее:
Microsoft Visual Studio 2013 профессиональный или Visual Studio 2015 профессиональный. Эти версии необходимы как для средств построителя приложений, так и для построителя платформ.
Построитель платформ для Windows Compact 2013
Рабочий BSP Для Интернета вещей
Средства, на которые ссылается руководство по производству Windows IoT
Не забудьте установить обновленные компоненты вместо указанных в этом руководстве (надстройки Windows 10 ADK и Windows 10 ADK PE, надстройки IoT Core ADK, панель мониторинга Windows 10 IoT Базовая)
Настройка, сборка и упаковка CE для контейнер приложений Windows CE
Процесс создания образа Windows Embedded Compact 2013 не был значительно обновлен. Общий процесс создания образа:
Создание проекта конструктора ОС с помощью построителя платформ
Выберите пакет поддержки платы построителя платформ (BSP)
Выбор соответствующего шаблона конструктора
Настройка параметров, предоставляемых шаблоном конструктора
При необходимости добавьте вложенные проекты в проект разработки
Создание образа
Основное изменение состоит в выборе правильного BSP и дополнительных рекомендаций для образа CE. В этом руководстве предполагается, что вы уже знакомы с процессом создания образа системы Windows CE, но стоит более глубоко взглянуть на измененный раздел.
Шаг 2 является единственной частью предыдущего процесса проекта разработки ОС, который изменяется при использовании контейнера приложений CE, см. ниже дополнительные сведения.
Шаг 2. Выбор BSP построителя платформ
Для поддержки контейнер приложений Windows CE в построителе платформ добавлен новый 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".
После этого вы сможете настроить параметры и вложенные проекты, как правило, для образа Windows Embedded Compact. Эти конфигурации будут встроены в контейнер CE, который будет развернут в образе Windows 10 IoT Базовая.
Создание образа Windows 10 IoT Базовая
Примечание.
Этот процесс подробно рассматривается в лабораториях, которые являются частью руководства по производству Windows 10 IoT Базовая. В приведенном ниже разделе приведены только дополнительные действия, выполняемые на определенных этапах процесса сборки образов IoT Core. Перед продолжением настоятельно рекомендуется ознакомиться с руководством по производству Windows 10 IoT Базовая.
Обзор процесса
В отличие от процесса создания образа Windows Embedded Compact, Windows 10 IoT Базовая не интегрирует создание встроенного ПО, пакетов поддержки доски, определение образа и включение приложений. Используя различные технологии для этих частей, вы можете разделить работу, которую необходимо выполнить между различными командами или отдельными лицами в вашей организации.
Ниже приведены основные действия по созданию образа:
Импортируйте соответствующий пакет поддержки доски IoT Core (BSP)
Импорт контейнера приложений CE, созданного ранее
Подробные руководства по каждому из этих шагов приведены в рамках руководства по производству Windows 10 IoT Базовая. Хотя некоторые из этих шагов похожи на процесс использования построителя платформ (PB) для создания образа устройства, стоит более глубоко изучить некоторые области.
Шаг 1. Создание рабочей области
Ознакомьтесь с документацией по созданию базового образа в руководстве по производству IoT Core, чтобы узнать, как создать рабочую область.
Шаг 2. Импорт соответствующего пакета поддержки Core Board IoT (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 (интерфейсные драйверы приложений UWP для Windows CE и драйверов поддержки) в определение продукта и включает контейнер приложений CE в группу приложений по умолчанию. Мы обсудим конфигурацию запуска в следующем разделе.
Шаг 6. Создание CAB-файлов
Это важный шаг во время создания FFU и должен выполняться всякий раз при изменении конфигурации, добавлении или изменении приложения или драйверов. Вы будете использовать New-IoTCabPackage с параметром All. Вы также можете создавать отдельные функции по мере необходимости, но в целом необходимо перестроить все пакеты перед этапом создания 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 Базовая эта функция отображается как разница между подписными и розничными сборками со знаком. Никогда не следует публично развертывать тестовый подписанный образ. Тестовые подписанные образы должны использоваться только для отладки, и перед созданием окончательного образа с подписью розничной торговли следует исправить ошибки или изменения конфигурации.
Примечание.
Помимо средств разработки и развертывания, установленных на компьютере, вам также потребуется следующее, чтобы включить подпись розничной торговли:
- Сертификат подписывания кода розничной торговли
- Сертификат перекрестной подписи
Правильное подписание и включение приложений
Если у вас есть одно или несколько пользовательских приложений, которые вы хотите включить в образ Windows 10 IoT Базовая розничной торговли, необходимо убедиться, что эти приложения подписаны правильно при их включении в образ розничной торговли.
Дополнительная информация
Добавление новых приложений в существующий образ
Чтобы добавить новое приложение в существующий дизайн ОС, можно добавить проект в качестве подпроекта в проект разработки ОС или создать обычные пакеты CAB развертывания для развертывания на устройстве в рамках начальной настройки устройства.
Рекомендации по упаковке
Всегда следует стремиться убедиться, что пакеты максимально детализируются, чтобы сократить время обновления.
Так как пакет является наименьшей единицей обновления, убедитесь, что каждый пакет максимально мал. При создании в Platform Builder созданные пакеты разделяются в соответствии с разделом памяти и типом модуля или файла в соответствии с файлом bib автоматически.
Для пользовательских ресурсов, встроенных в построителе платформ и упакованных с помощью OSDesign.bib, рассмотрите возможность добавления пользовательских ресурсов в отдельный раздел памяти в BIB (не в NK), чтобы обновления пользовательского кода могли отправляться отдельно от обновлений в ОС CE.
Для пользовательских ресурсов, добавленных с помощью команд упаковки IoT ADK: убедитесь, что созданные пакеты максимально малы.
Добавление других элементов в пакет построителя платформ
Как правило, рекомендация не изменяет полученный пакет, созданный конструктором платформ, чтобы включить дополнительные компоненты в системный образ. Вместо этого следуйте руководству по производству Windows 10 IoT Базовая. Однако если файлы необходимо добавить в пакет, созданный конструктором платформ, следуйте существующему процессу. При добавлении содержимого в пакет, созданный PB, следует учитывать следующее:
Максимальный размер пакетов (около 400 МБ) и превышение этого размера будет препятствовать обновлению.
Обновления происходит при детализации пакета. Если необходимо обновить один ресурс в пакете, все ресурсы этого пакета будут обновляться одновременно. Чтобы уменьшить размер обновлений, изолируйте содержимое в отдельных пакетах, чтобы свести к минимуму общий размер обновления.
Добавление дополнительных файлов с помощью построителя платформ
Процесс упаковки, описанный выше, определяется теми же входными данными, которые отправляются в создание ФАЙЛА CE BIN. Таким образом, если файлы ссылаются в OSDesign.bib и записи реестра добавляются в OSDesign.reg, MAKEIMG
процесс будет включать эти файлы в результирующий CAB-файл. В ходе этого процесса MAKEIMG
теперь будет выполняться следующее:
ROMIMAGE
создадит каталог с именемCEPAL\_PKG
в каталоге неструктурированных выпусков (FRD), который выполняет установленную структуру каталогов для Windows CE для CE для CEPAL.ROMIMAGE
инвентаризация всех ФАЙЛОВ CE, которые были помещеныCEPAL\_PKG
в зависимости от файлов CE BIB.ROMIMAGE
будет создавать несколько WM.XML файлов для каждого раздела памяти. Это делается так, чтобы обновления можно было отправлять в более детализированном режиме, так как минимальный модуль обновления — это пакет.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-разрядные преобразования RGB выполняются GWES с предположением, что 16-разрядные данные пикселей RGB находятся в формате RGB555. Если ресурсы растрового изображения находятся в 16-разрядной версии 565, а преобразование в RGB555 этих ресурсов невозможно, поведение преобразования по умолчанию GWES можно изменить с помощью раздела реестра. Создайте следующий раздел реестра:
HKEY\_LOCAL\_MACHINE\SYSTEM\GDI\16bpp565RGBPalette.
Конфигурация на основе реестра в узле (IoT Core)
Настройка последовательных портов для контейнер приложений 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
Ключ. | Description |
---|---|
Графический пользовательский интерфейс | Запуск контейнера приложения CE с пользовательским интерфейсом (по умолчанию true) |
Width | Ширина отображения контейнера приложения CE (по умолчанию 1024) |
Height | Высота отображения контейнера приложений 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”
}
Параметры:
Ключ. | Description |
---|---|
FactoryReset | Используется приложением конфигурации для передачи сохраняемого состояния контейнера приложений CE. |
PlatformBuilderDebugMode | Используется для загрузки контейнера приложений CE с поддержкой KITL для отладки с помощью построителя платформ. |
NetInterface | Выберите сетевой интерфейс для CE на основе имени профиля. |