Freigeben über


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.

CE-App-Containerarchitektur

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:

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:

  1. Erstellen eines Betriebssystemdesignprojekts mit Dem Plattform-Generator

  2. Auswählen des Platform Builder Board Support Package (BSP)

  3. Auswählen der geeigneten Entwurfsvorlage

  4. Konfigurieren der von der Entwurfsvorlage bereitgestellten Optionen

  5. Hinzufügen von Unterprojekten zum Entwurfsprojekt optional

  6. 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.

Auswählen des CE-App-Container-BSP

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:

  1. Erstellen eines Arbeitsbereichs

  2. Importieren des entsprechenden IoT Core Board Support Package (BSP)

  3. Importieren des CE-App-Containers, den Sie zuvor erstellt haben

  4. Erstellen der Produktdefinition

  5. Hinzufügen von Features und Anwendungen zu Ihrem Produkt

  6. Erstellen Des vollständigen Flash-Updates (Full Flash Update, FFU)

  7. Bereitstellen der FFU auf dem Gerät und Testen

  8. Abschließen und Signieren Ihres Einzelhandels-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 :

  1. ROMIMAGE erstellt ein Verzeichnis namens CEPAL\_PKG "Flat Release Directory (FRD)", das eine installierte Verzeichnisstruktur für Windows CE für CEPAL phasent.

  2. ROMIMAGE inventarisiert alle CE-Dateien, die auf CE BIB-Dateien basieren CEPAL\_PKG .

  3. 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.

  4. 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.jsonkonfiguriert 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.jsonangegeben. 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.

References