Erste Schritte mit Windows CE-App-Container
Die Windows CE-App-Container ist eine Technologie, mit der die meisten CE-Anwendungen auf Windows 10 IoT Core ausgeführt werden können.
Die Lösung ist in zwei Phasen integriert. In der ersten Phase wird ein Windows CE 2013-Image mit einem BSP für x86- oder ARM32-Architektur erstellt. In der zweiten Phase ist dieses Image in einem Windows 10 IoT Core-Image enthalten, das den x64- oder ARM32-BSP für die spezifische Gerätehardware verwendet, auf der die Lösung installiert wird.
Weitere Informationen zu dieser Architektur finden Sie in diesem Video: Modernisieren von Windows CE-Geräten.
Voraussetzungen
Für die Windows CE-App-Container-Software ist eine aktualisierte Version von Windows Compact 2013 (Buildnummer 6294 ab Juni 2020 oder höher) zusammen mit aktualisierten Windows 10 IoT Core-Paketen für x64 und ARM32 (Update vom August 2020 oder höher) erforderlich. Wenden Sie sich an Ihren Microsoft-Distributor, um die neuesten Pakete für Windows 10 IoT Core zu erhalten.
Hinweis
Sie müssen über ein gültiges IoT Core Services-Abonnement verfügen, um ein Gerät zu verteilen, das die CE App Container-Technologie verwendet.
Darüber hinaus benötigen Sie Folgendes:
Microsoft Visual Studio 2013 Professional oder Visual Studio 2015 Professional. Diese Versionen sind für die Tools Application Builder und Platform Builder erforderlich.
Plattform-Generator für Windows Compact 2013
A Working IoT Core BSP
Die Tools, auf die im Windows IoT Manufacturing Guide verwiesen wird
Denken Sie daran, die aktualisierten Komponenten anstelle der in diesem Handbuch referenzierten Komponenten zu installieren (Windows 10 ADK und Windows 10 ADK PE-Add-On, IoT Core ADK-Add-Ons, Windows 10 IoT Core-Dashboard)
Konfigurieren, Erstellen und Verpacken von CE für die Windows CE-App-Container
Der Prozess zum Erstellen eines Windows Embedded Compact 2013-Images wurde nicht erheblich aktualisiert. Der allgemeine Prozess zum Erstellen eines Bilds lautet:
Erstellen eines Betriebssystemdesignprojekts mit Dem Plattform-Generator
Auswählen des Platform Builder Board Support Package (BSP)
Auswählen der geeigneten Entwurfsvorlage
Konfigurieren der von der Entwurfsvorlage bereitgestellten Optionen
Hinzufügen von Unterprojekten zum Entwurfsprojekt optional
Erstellen des Image
Die primäre Änderung liegt in der Auswahl des richtigen BSP und zusätzliche Überlegungen für das CE-Image. In diesem Leitfaden wird davon ausgegangen, dass Sie bereits mit dem Prozess zum Erstellen eines Windows CE-Systemimages vertraut sind, aber es lohnt sich, den geänderten Abschnitt genauer zu betrachten.
Schritt 2 ist der einzige Teil des vorherigen Os Design-Projektprozesses, der bei Verwendung des CE App-Containers geändert wird. Weitere Details finden Sie unten.
Schritt 2 – Plattform-Generator BSP-Auswahl
Um die Windows CE-App-Container zu unterstützen, wurde dem Platform Builder ein neuer BSP hinzugefügt, der auf x86- und ARM-Architekturen abzielt.
Wählen Sie beim Erstellen eines Betriebssystemdesigns für den CE-App-Container abhängig von der zugrunde liegenden Hardware für Ihr IoT Core-Gerät entweder die Option "Windows CE-App-Container: x86" oder "Windows CE-App-Container: ARMv7" (ARM32) aus.
Wenn Ihr IoT Core-Zielgerät beispielsweise Intel-Hardware verwendet, wählen Sie die Option "Windows CE-App-Container: x86" aus. Wenn Ihre IoT Core-Hardware NXP i.MX6 verwendet, wählen Sie alternativ die Option "Windows CE-App-Container: ARMv7" aus.
Danach haben Sie die Möglichkeit, die Optionen und Unterprojekte so zu konfigurieren, wie Sie es normalerweise für ein Windows Embedded Compact-Image tun würden. Diese Konfigurationen werden in den CE-Container integriert, den Sie in Ihrem Windows 10 IoT Core-Image bereitstellen.
Erstellen des Windows 10 IoT Core-Images
Hinweis
Dieser Prozess wird ausführlicher in den Laboren behandelt, die Teil des Windows 10 IoT Core Manufacturing Guide sind. Im folgenden Abschnitt werden nur zusätzliche Aktionen bereitgestellt, die in bestimmten Phasen des IoT Core-Imageerstellungsprozesses ausgeführt werden können. Es wird dringend empfohlen, sich mit dem Windows 10 IoT Core Manufacturing Guide vertraut zu machen, bevor Sie fortfahren.
Übersicht über den Prozess
Im Gegensatz zum Erstellen eines Windows Embedded Compact-Images entkoppelt Windows 10 IoT Core die Erstellung von Firmware, Boardunterstützungspaketen, Imagedefinitionen und Anwendungseinschluss. Durch die Verwendung verschiedener Technologien für diese Teile können Sie die Arbeit trennen, die Sie für verschiedene Teams oder Einzelpersonen in Ihrer Organisation benötigen.
Die grundlegenden Schritte beim Erstellen eines Bilds sind:
Importieren des entsprechenden IoT Core Board Support Package (BSP)
Importieren des CE-App-Containers, den Sie zuvor erstellt haben
Erstellen Des vollständigen Flash-Updates (Full Flash Update, FFU)
Im Rahmen des Windows 10 IoT Core Manufacturing Guide finden Sie detaillierte Anleitungen für jeden dieser Schritte. Während einige dieser Schritte wie der Prozess der Verwendung von Platform Builder (PB) zum Erstellen eines Geräteimages sind, lohnt es sich, einige Bereiche genauer zu untersuchen.
Schritt 1 : Erstellen eines Arbeitsbereichs
Lesen Sie die Dokumentation , Erstellen eines Standardimages im IoT Core Manufacturing Guide, um zu erfahren, wie Sie einen Arbeitsbereich erstellen.
Schritt 2 : Importieren des entsprechenden IoT Core Board Support Package (BSP)
Lesen Sie die Dokumentation zum Erstellen eines Standardimages im IoT Core Manufacturing Guide zur Unterstützung für Ihr Board.
Schritt 3 : Importieren der Windows CE-App-Container
Die Windows CE-App-Container wird mithilfe der oben beschriebenen PB erstellt und in Ihren IoT Core-Arbeitsbereich importiert, indem sie den Befehl "Importieren-IoTCEPAL" verwenden. Mit diesem Befehl werden die erforderlichen Inhalte aus dem Ce Flat Release-Verzeichnis in den IoT ADK-Arbeitsbereich kopiert. Wenn mehrfach aufgerufen wird, wird der vorherige Zustand unter dem Source-\$Arch\CEPAL.OLD
Verzeichnis im Arbeitsbereich gesichert.
Schritt 4 – Erstellen der Produktdefinition
Lesen Sie die Dokumentation, Erstellen eines Standardimages im IoT Core Manufacturing Guide, um Ihre Produktdefinition zu erstellen.
Schritt 5: Hinzufügen eines CE-App-Containers zu einem Produkt
Nachdem Sie Ihre CE App Container-Definition in Ihren Arbeitsbereich importiert haben, müssen Sie sicherstellen, dass Sie den Befehl "Add-IoTCEPAL " ausführen, der einen Verweis auf CE App Container-Pakete zu den relevanten Produkt-OEMInput.xml-Dateien (Test und Einzelhandel) hinzufüge.
Der nächste Schritt besteht darin, den Befehl "Add-IoTProductFeature " zu verwenden, um dem OEMInput.xml das feature IOT_CEPAL hinzuzufügen. Dadurch wird der Windows Host-Unterstützung für die Windows CE-App-Container (Windows CE-Front-End-UWP-App + Supporttreiber) zu unserer Produktdefinition hinzugefügt und der CE-App-Container in der Standardgruppe "Apps" enthalten. Wir besprechen die Startkonfiguration in einem späteren Abschnitt.
Schritt 6 : Erstellen Ihrer CAB-Dateien
Dies ist ein wichtiger Schritt bei der Erstellung Ihrer FFU und sollte ausgeführt werden, wenn Sie eine Konfiguration ändern, eine Anwendung oder Treiber hinzufügen/ändern. Sie verwenden das New-IoTCabPackage mit der Option "Alle". Sie können auch einzelne Features nach Bedarf erstellen, aber im Allgemeinen sollten Sie alle Pakete vor dem Schritt der Erstellung Ihrer FFU als bewährte Methode neu erstellen.
Schritt 7 : Bereitstellen Ihrer FFU auf Ihrem Gerät
Nachdem das Image erstellt wurde, können Sie es auf einem Gerät bereitstellen. Dies kann über die Befehlszeile mithilfe von DISM, über ihren gerätespezifischen Bereitstellungsprozess oder mithilfe der Windows 10 IoT Core-Dashboard erfolgen. Weitere Details sind im Rahmen des Windows 10 IoT Core Manufacturing Guide verfügbar.
Bereitstellen des Windows CE-App-Container auf einem Gerät bei Verwendung einer vorhandenen FFU
Die CE-Zertifizierungsstellen sind bereitstellungsfähige Pakete auf IoT Core. Wenn ein IoT Core-Image vorhanden ist, können diese Zertifizierungsstellen mithilfe des APPLYUPDATE
Befehls auf dem Gerät bereitgestellt werden. Kopieren Sie zuerst die Zertifizierungsstellen auf das Gerät, stellen Sie dann die Zertifizierungsstellen bereit, und übernehmen Sie die Zertifizierungsstellen mit APPLYUPDATE
. Beachten Sie, dass die Aktualisierung auf diese Weise die Paketversionsverwaltung berücksichtigt. Wenn also aktualisierte Versionen von Paketen auf dem Gerät bereitgestellt werden sollen, müssen sie eine höhere Versionsnummer haben. (Siehe den Befehl "Set-IoTCabVersion" in der IoT ADK-Umgebung). Weitere Informationen hierzu finden Sie unter "Erstellen und Installieren von Paketen".
Schritt 8 – Erstellen eines Einzelhandelsimages
Das Erstellen eines ordnungsgemäß signierten Images ist ein wichtiger Bestandteil der Sicherung und Aktualisierung eines Geräts. Bei Windows 10 IoT Core wird dies als Unterschied zwischen signierten Test- und Retail-Builds angezeigt. Sie sollten niemals öffentlich ein signiertes Testimage bereitstellen. Testsignierte Bilder sollten nur zu Debugzwecken verwendet werden, und Sie sollten alle Fehler oder Konfigurationsänderungen korrigieren, bevor Sie Ihr endgültiges signiertes Verkaufsabbild erstellen.
Hinweis
Zusätzlich zu den auf Ihrem Computer installierten Entwicklungs- und Bereitstellungstools benötigen Sie auch Folgendes, um die Einzelhandelssignierung zu aktivieren:
- Ein Retail-Codesignaturzertifikat
- Ein Cross-Signaturzertifikat
Ordnungsgemäßes Signieren und Einbinden Ihrer Anwendungen
Wenn Sie über eine oder mehrere benutzerdefinierte Anwendungen verfügen, die Sie in Ihr Windows 10 IoT Core-Verkaufsimage aufnehmen möchten, müssen Sie überprüfen, ob diese Anwendungen ordnungsgemäß signiert sind, wenn sie in Ihr Einzelhandelsimage eingeschlossen werden.
Zusätzliche Informationen
Hinzufügen neuer Anwendungen zu einem vorhandenen Image
Wenn Sie einem vorhandenen Betriebssystemdesign eine neue Anwendung hinzufügen möchten, können Sie das Projekt entweder als Unterprojekt zum Betriebssystementwurfsprojekt hinzufügen, oder Sie können normale BEREITSTELLUNGs-CAB-Pakete erstellen, um diese im Rahmen der ersteinrichtung des Geräts auf dem Gerät bereitzustellen.
Bewährte Methoden für das Verpacken
Sie sollten stets sicherstellen, dass Pakete so präzise wie möglich sind, um die Aktualisierungszeit zu reduzieren.
Da ein Paket die kleinste Aktualisierungseinheit ist, stellen Sie sicher, dass jedes Paket so klein wie möglich ist. Beim Erstellen im Plattform-Generator werden die generierten Pakete gemäß Speicherabschnitt und Modul-/Dateityp entsprechend der Bib-Datei automatisch getrennt.
Bei benutzerdefinierten Ressourcen, die in Platform Builder integriert und über OSDesign.bib gepackt werden, sollten Sie benutzerdefinierte Ressourcen in einem separaten Speicherabschnitt in der BIB (nicht in NK) hinzufügen, damit Updates für benutzerdefinierten Code getrennt von Updates an das CE-Betriebssystem ausgeliefert werden können.
Für benutzerdefinierte Ressourcen, die über die IoT ADK-Verpackungsbefehle hinzugefügt werden: Stellen Sie sicher, dass die erstellten Pakete so klein wie möglich sind.
Hinzufügen weiterer Elemente zum Plattform-Generator-Paket
Im Allgemeinen wird empfohlen, das resultierende Paket, das vom Platform Builder erzeugt wird, nicht zu ändern, um zusätzliche Komponenten in das Systemimage aufzunehmen. Folgen Sie stattdessen dem Windows 10 IoT Core-Fertigungshandbuch. Wenn dateien jedoch dem Paket hinzugefügt werden müssen, das vom Plattform-Generator erstellt wird, folgen Sie Ihrem vorhandenen Prozess. Berücksichtigen Sie beim Hinzufügen von Inhalten zum paket, das von PB generiert wird, Folgendes:
Es gibt eine maximale Größe für Pakete (ca. 400 MB), und eine Überschreitung dieser Größe verhindert die Aktualisierung.
Aktualisierungen erfolgen bei der Paket granularität. Wenn ein einzelnes Objekt im Paket aktualisiert werden muss, werden alle Ressourcen dieses Pakets gleichzeitig aktualisiert. Um die Größe von Updates zu verringern, isolieren Sie Inhalte in separate Pakete, um die Gesamtgröße des Updates zu minimieren.
Hinzufügen zusätzlicher Dateien über den Plattform-Generator
Der oben beschriebene Verpackungsprozess wird durch die gleichen Eingaben gesteuert, die in die Erstellung einer CE BIN-Datei gehen. Wenn also auf die Dateien in OSDesign.bib verwiesen wird und Registrierungseinträge zu OSDesign.reg hinzugefügt werden, enthält der MAKEIMG
Prozess diese Dateien in die resultierende CAB-Datei. Während dieses Vorgangs wird jetzt Folgendes ausgeführt MAKEIMG
:
ROMIMAGE
erstellt ein Verzeichnis namensCEPAL\_PKG
"Flat Release Directory (FRD)", das eine installierte Verzeichnisstruktur für Windows CE für CEPAL phasent.ROMIMAGE
inventarisiert alle CE-Dateien, die auf CE BIB-Dateien basierenCEPAL\_PKG
.ROMIMAGE
erstellt für jeden Speicherabschnitt mehrere WM.XML Dateien. Dies geschieht, damit Updates präziser übertragen werden können, da die Mindestaktualisierungseinheit ein Paket ist.ROMIMAGE
erstellt, die auf alle erstellten Pakete verweist.
Alle erstellten Pakete werden mit einem festen Präfix benannt “%OEM\_NAME%.WindowsCE.\*”
, bei dem %OEM\_NAME%
beim Aufrufen von New-IoTCabPackage während des IoT Core-Erstellungsprozesses aufgefüllt wird. Der Paketname innerhalb des Namensbereichs wird vom Speicherabschnitt in der BIB-Datei (z. B. NK) gefolgt von Modulen/Dateien abgeleitet (auch durch die BIB-Datei bestimmt).
Kommunikation zwischen Windows Embedded Compact 2013- und Windows 10 IoT Core-Anwendungen
Der empfohlene Ansatz für die Kommunikation zwischen Anwendungen, die im CE-Container ausgeführt werden, ist die Verwendung des lokalen Loopbacks. Weitere Informationen zu "Local Loopback" finden Sie in diesem Dokument.
Automatisches Starten der CE-App-Containeranwendung
Um die CE-Containeranwendung automatisch zu starten, können Sie ein Bereitstellungspaket erstellen, das die Startanwendung auf "Microsoft.Windows.IoT.CEPAL.DkMonUWP_cw5n1h2txyewy! App" und dieses Bereitstellungspaket im Image enthalten. Außerdem müssen Sie die Standardstartanwendung mithilfe des Befehls "Remove-IoTProductFeature" entfernen und die IOT_BERTHA Feature-ID aus der IoT Core-Produktdefinition entfernen.
Verfügbare Konfigurationseinstellungen für die Windows CE-App-Container
Registrierungsbasierte Konfiguration in CE
Nicht ausführbarer Stapel standardmäßig
Die Windows CE-App-Container hat standardmäßig ausführbare Stapelseiten deaktiviert, um die Sicherheit zu verbessern. Einige Legacyanwendungen können sich jedoch auf dieses Verhalten verlassen, um ordnungsgemäß ausgeführt zu werden. Um einen ausführbaren Stapel zu aktivieren, legen Sie den folgenden Registrierungswert im CE-Image fest (Es wird empfohlen, dass dies in OSDesign.reg im Plattform-Generator erfolgt)
KeyPath = HKEY\_LOCAL\_MACHINE\CEPAL
ValueName = MemoryOptions Type = REG\_DWORD
Value = 1
16-Bit-565-Außerkraftsetzung für GWES
Wenn die Windows CE-App-Container mit einer 32-Bit-Anzeige konfiguriert ist, werden 16-Bit- zu 32-Bit-RGB-Konvertierungen von GWES mit der Annahme durchgeführt, dass 16-Bit-RGB-Pixeldaten im RGB555-Format vorliegen. Wenn Bitmapressourcen in 16-Bit-565 vorliegen und eine Konvertierung in eine RGB555 dieser Ressourcen nicht möglich ist, kann das Standardkonvertierungsverhalten von GWES über einen Registrierungsschlüssel geändert werden. Erstellen Sie den folgenden Registrierungsschlüssel:
HKEY\_LOCAL\_MACHINE\SYSTEM\GDI\16bpp565RGBPalette.
Registrierungsbasierte Konfiguration in Host (IoT Core)
Konfigurieren von seriellen Ports für die Windows CE-App-Container
Serielle Hostports müssen der CE-Umgebung zugeordnet werden. Diese Zuordnung ist in der Registrierung in IoT Core vorhanden und muss vom Ersteller des Images konfiguriert werden.
Unter HKEY\_CURRENT\_USER\Software\Microsoft\Windows NT\CurrentVersion\CEPAL\Devices\Serial
" sind Konfigurationseinträge vorhanden, um Gast-COM-Ports mithilfe des folgenden Schemas hosten com-Ports zuzuordnen.
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
Wenn der oben genannte Registrierungspfad beim Starten von CE nicht vorhanden ist, wird eine Standardkonfiguration basierend auf ermittelten seriellen Geräten auf dem System geschrieben.
Dateibasierte Konfiguration in Host
Der CE-Container kann mithilfe einer lokalen Datei auf dem Host C:\WindowsCE\CEEnvConfig.json
konfiguriert werden. Hier ist ein Beispiel für diese Konfigurationsdatei:
{
"OEMOptions" :
{
"GUI" : true,
"Width" : 1024,
"Height" : 768, "FillScreen" : true, "ColorDepth" : 32,
"RefreshRate" : 30, "noAslrSupport" : true, "OemConfigApp" : "",
"OemConfigFile" : ""
},
"CEPALDevOptions" :
{
"VsDebugMode" : true, "FastDebugBoot" : false
}
}
OEMOptions
Schlüssel | Beschreibung |
---|---|
GUI | Starten des CE-App-Containers mit UI (Standard true) |
Breite | Breite der CE-App-Containeranzeige (Standard 1024) |
Höhe | Höhe der CE-App-Containeranzeige (Standard 768) |
FillScreen | |
ColorDepth | Legt Standardbits pro Pixel fest (Standard 32) |
RefreshRate | Wie oft wird die Anzeige pro Sekunde neu gezeichnet |
noAslrSupport | Deaktiviert die Zufälligisierung des Adressraumlayouts im CE-App-Container (Standard true) |
OEMConfigApp | Paketfamilienname einer oem bereitgestellten App, die für die Konfiguration gestartet werden soll. |
OEMConfigFile | Pfad zu einer Datei, die zusätzliche Konfigurationsoptionen enthält, die zwischen OEMConfigApp und dem CE-App-Container gemeinsam genutzt werden |
Der CE-App-Container stellt nur eine Netzwerkschnittstelle zur Verwendung zur Verfügung. Wenn mehrere NICs im Hostsystem vorhanden sind, muss eine Schnittstelle in der Hostregistrierung ausgewählt werden, um sicherzustellen, dass die ausgewählte NIC deterministisch ist.
OEMConfigFile
Die OEMConfigFile-Datei wird in C:\WindowsCE\CEEnvConfig.json
angegeben. Stellen Sie sicher, dass diese Datei von einer UWP-Anwendung gelesen werden kann. Beispiel:
{
“FactoryReset”: false, “PlatformBuilderDebugMode”: false,
“NetInterface”: “Some Network Profile Id”
}
Optionen:
Schlüssel | Beschreibung |
---|---|
FactoryReset | Wird von der Konfigurations-App verwendet, um den CE-App-Container zu signalisieren, um den beständigen Zustand abzubilden. |
PlatformBuilderDebugMode | Wird verwendet, um den CE-App-Container mit KITL-Unterstützung für das Debuggen mit Platform Builder zu starten. |
NetInterface | Wählen Sie eine Netzwerkschnittstelle für CE basierend auf dem Profilnamen aus. |