Bien démarrer avec le conteneur d’applications Windows CE
Le conteneur d’applications Windows CE est une technologie qui permet à la plupart des applications CE de s’exécuter sur Windows 10 IoT Standard.
La solution est générée en deux étapes. La première étape crée une image Windows CE 2013 à l’aide d’un BSP pour l’architecture x86 ou ARM32. Ensuite, dans la deuxième étape, cette image est incluse dans une image Windows 10 IoT Standard qui utilise le BSP x64 ou ARM32 pour le matériel d’appareil spécifique sur lequel la solution sera installée.
Pour plus d’informations sur cette architecture, consultez cette vidéo : Modernisation des appareils Windows CE.
Prérequis
Le logiciel conteneur d’applications Windows CE nécessite une version mise à jour de Windows Compact 2013 (numéro de build 6294 à partir de juin 2020 ou version ultérieure) ainsi que des packages de Windows 10 IoT Standard mis à jour pour x64 et ARM32 (mise à jour d’août 2020 ou ultérieure) . Pour obtenir les derniers packages pour Windows 10 IoT Standard, contactez votre serveur de distribution Microsoft.
Remarque
Vous devez disposer d’un abonnement IoT Core Services valide pour distribuer un appareil qui utilise la technologie CE App Container.
En outre, vous aurez besoin des éléments suivants :
Microsoft Visual Studio 2013 Professionnel ou Visual Studio 2015 Professionnel. Ces versions sont requises pour les outils Application Builder et Platform Builder.
Générateur d’applications pour Windows Embedded Compact 2013
Platform Builder pour Windows Compact 2013
Un BSP IoT Core fonctionnel
Les outils référencés dans le Guide de fabrication Windows IoT
N’oubliez pas d’installer les composants mis à jour à la place des composants référencés dans ce guide (Modules complémentaires Windows 10 ADK et Windows 10 ADK PE, modules complémentaires ADK IoT Core, Tableau de bord Windows 10 IoT Standard)
Configuration, génération et empaquetage CE pour le conteneur d’applications Windows CE
Le processus de création d’une image Windows Embedded Compact 2013 n’a pas été mis à jour de manière significative. Le processus général de création d’une image est le suivant :
Créer un projet de conception de système d’exploitation avec Platform Builder
Sélectionnez le package de prise en charge de Platform Builder Board (BSP)
Choisir le modèle de conception approprié
Configurer les options fournies par le modèle de conception
Ajouter éventuellement des sous-projets au projet de conception
Créer l’image
La modification principale se trouve dans la sélection du BSP approprié et des considérations supplémentaires relatives à l’image CE. Ce guide suppose que vous êtes déjà familiarisé avec le processus de génération d’une image système Windows CE, mais il vaut la peine d’examiner plus en détail la section modifiée.
L’étape 2 est la seule partie du processus de projet de conception de système d’exploitation précédent qui est modifié lors de l’utilisation du conteneur d’application CE, voir ci-dessous pour plus d’informations.
Étape 2 - Sélection BSP du Générateur de plateformes
Pour prendre en charge le conteneur d’applications Windows CE, un nouveau BSP qui cible les architectures x86 et ARM a été ajouté au Générateur de plateforme.
Lors de la création d’une conception de système d’exploitation pour le conteneur d’applications CE, sélectionnez « Conteneur d’applications Windows CE : x86 » ou « Conteneur d’applications Windows CE : ARMv7 » (ARM32) en fonction du matériel sous-jacent de votre appareil IoT Core.
Par exemple, si votre appareil IoT Core cible utilise du matériel Intel, vous sélectionnez l’option « Conteneur d’applications Windows CE : x86 ». Vous pouvez également sélectionner l’option « Conteneur d’applications Windows CE : ARMv7 » si votre matériel IoT Core utilise NXP i.MX6.
Après cela, vous aurez la possibilité de configurer les options et les sous-projets comme vous le feriez normalement pour une image Windows Embedded Compact. Ces configurations seront intégrées au conteneur CE que vous allez déployer dans votre image Windows 10 IoT Standard.
Création de l’image Windows 10 IoT Standard
Remarque
Ce processus est abordé plus en détail dans les laboratoires qui font partie du Guide de fabrication Windows 10 IoT Standard. La section ci-dessous fournit uniquement des actions supplémentaires pour s’exécuter à certaines étapes du processus de génération d’images IoT Core. Il est vivement recommandé de vous familiariser avec le guide de fabrication Windows 10 IoT Standard avant de continuer.
Vue d’ensemble du processus
Contrairement au processus de création d’une image Windows Embedded Compact, Windows 10 IoT Standard dissocie encore la création de microprogrammes, de packages de prise en charge de carte, de définition d’image et d’inclusion d’application. En utilisant différentes technologies pour ces éléments, vous pouvez séparer le travail que vous devez faire entre différentes équipes ou personnes de votre organisation.
Les étapes de base de la création d’une image sont les suivantes :
Importer le package de support ioT Core Board approprié (BSP)
Importer le conteneur d’application CE que vous avez créé précédemment
Ajouter des fonctionnalités et des applications à votre produit
Il existe des guides détaillés pour chacune de ces étapes dans le cadre du Guide de fabrication Windows 10 IoT Standard. Bien que certaines de ces étapes soient similaires au processus d’utilisation du Générateur de plateforme (PB) pour créer une image d’appareil, il vaut la peine d’explorer certaines zones plus profondément.
Étape 1 : Créer un espace de travail
Consultez la documentation, Créer une image de base, dans le Guide de fabrication IoT Core pour savoir comment créer un espace de travail.
Étape 2 : Importer le package de support de carte IoT Core approprié (BSP)
Consultez la documentation, Créer une image de base, dans le Guide de fabrication IoT Core pour la prise en charge de votre carte.
Étape 3 : importation du conteneur d’applications Windows CE
Le conteneur d’applications Windows CE est créé à l’aide du PB, comme indiqué ci-dessus et importé dans votre espace de travail IoT Core à l’aide de la commande Import-IoTCEPAL . Cette commande copie le contenu requis à partir du répertoire de mise en production plat CE dans l’espace de travail IoT ADK. Si elle est appelée plusieurs fois, l’état précédent est sauvegardé sous le Source-\$Arch\CEPAL.OLD
répertoire de l’espace de travail.
Étape 4 : Créer votre définition de produit
Consultez la documentation, Créer une image de base, dans le Guide de fabrication IoT Core pour créer votre définition de produit.
Étape 5 : ajout d’un conteneur d’applications CE à un produit
Une fois que vous avez importé votre définition de conteneur d’application CE dans votre espace de travail, vous devez vous assurer d’exécuter la commande Add-IoTCEPAL , qui ajoute une référence aux packages CE App Container aux fichiers de produits OEMInput.xml appropriés (Test et Vente au détail).
L’étape suivante consiste à utiliser la commande Add-IoTProductFeature pour ajouter la fonctionnalité IOT_CEPAL au OEMInput.xml. Cela ajoute la prise en charge de l’hôte Windows POUR le conteneur d’applications Windows CE (application UWP frontale Windows CE + pilotes de support) à notre définition de produit et inclut le conteneur d’applications CE dans le groupe Applications par défaut. Nous aborderons la configuration de démarrage dans une section ultérieure.
Étape 6 : Générer vos fichiers CAB
Il s’agit d’une étape importante lors de la création de votre FFU et doit être effectuée chaque fois que vous modifiez une configuration, ajoutez/modifiez une application ou des pilotes. Vous allez utiliser le New-IoTCabPackage avec l’option « All ». Vous pouvez également créer des fonctionnalités uniques en fonction des besoins, mais en général, vous devez reconstruire tous les packages avant l’étape de création de votre FFU comme meilleure pratique.
Étape 7 : Déploiement de votre FFU sur votre appareil
Une fois l’image générée, vous pouvez la déployer sur un appareil. Cela peut être effectué à partir de la ligne de commande à l’aide de DISM, via votre processus de déploiement spécifique à l’appareil ou à l’aide du Tableau de bord Windows 10 IoT Standard. Vous trouverez plus de détails dans le cadre du Guide de fabrication Windows 10 IoT Standard.
Déploiement du conteneur d’applications Windows CE sur un appareil lors de l’utilisation d’un FFU existant
Les caBs CE sont des packages déployables sur IoT Core. S’il existe une image IoT Core existante, ces bases de certification peuvent être déployées sur l’appareil à l’aide de la APPLYUPDATE
commande. Commencez par copier les bases de certification sur l’appareil, puis mettez en scène et validez les bases de certification avec APPLYUPDATE
. Notez que la mise à jour de cette façon respecte le contrôle de version des packages. Par conséquent, si les versions mises à jour des packages doivent être déployées sur l’appareil, elles doivent avoir un numéro de version supérieur. (Consultez la commande Set-IoTCabVersion dans l’environnement IoT ADK). Pour plus d’informations sur ce problème, consultez Créer et installer des packages
Étape 8 : Création d’une image de vente au détail
La sécurisation et la mise à jour d’une image correctement signée constituent une partie importante de la sécurisation et de la mise à jour d’un appareil. Pour Windows 10 IoT Standard, cela apparaît comme la différence entre les builds signées Test et Retail signées. Vous ne devez jamais déployer publiquement une image signée de test. Les images signées de test doivent être utilisées uniquement à des fins de débogage et vous devez corriger les erreurs ou modifications de configuration avant de créer votre image signée au détail finale.
Remarque
Outre les outils de développement et de déploiement installés sur votre ordinateur, vous aurez également besoin des éléments suivants pour activer la signature commerciale :
- Certificat de signature de code de vente au détail
- Un certificat de signature croisée
Signature correcte et inclusion de vos applications
Si vous avez une ou plusieurs applications personnalisées que vous souhaitez inclure dans votre image de vente au détail Windows 10 IoT Standard, vous devez vérifier que ces applications sont signées correctement lorsque vous les incluez dans votre image de vente au détail.
Informations supplémentaires
Ajout de nouvelles applications à une image existante
Pour ajouter une nouvelle application à une conception de système d’exploitation existante, vous pouvez ajouter le projet en tant que sous-projet au projet de conception du système d’exploitation ou créer des packages CAB de déploiement normaux pour les déployer sur l’appareil dans le cadre de la configuration initiale de l’appareil.
Meilleures pratiques d’empaquetage
Vous devez toujours vous assurer que les packages sont aussi granulaires que possible pour réduire le temps de mise à jour.
Étant donné qu’un package est la plus petite unité de mise à jour, assurez-vous que chaque package est aussi petit que possible. Lors de la génération dans Platform Builder, les packages générés sont séparés en fonction de la section mémoire et du type de module/fichier en fonction du fichier bib automatiquement.
Pour les ressources personnalisées intégrées à Platform Builder et empaquetées via OSDesign.bib, envisagez d’ajouter des ressources personnalisées dans une section de mémoire distincte de la bibliothèque BIB (pas en NK), afin que les mises à jour du code personnalisé puissent être fournies séparément des mises à jour du système d’exploitation CE.
Pour les ressources personnalisées ajoutées via les commandes d’empaquetage IoT ADK : assurez-vous que les packages créés sont aussi petits que possible.
Ajout d’autres éléments au package Platform Builder
En règle générale, la recommandation ne consiste pas à modifier le package résultant produit par Platform Builder pour inclure des composants supplémentaires dans l’image système. Au lieu de cela, suivez le guide de fabrication Windows 10 IoT Standard. Toutefois, si des fichiers doivent être ajoutés au package créé par Platform Builder, suivez votre processus existant. Lorsque vous ajoutez du contenu au package généré par PB, tenez compte des éléments suivants :
Il existe une taille maximale pour les packages (environ 400 Mo) et le dépassement de cette taille empêche la mise à jour.
Mises à jour se produisent sur la granularité du package. Si une ressource unique dans le package doit être mise à jour, toutes les ressources de ce package seront mises à jour en même temps. Pour réduire la taille des mises à jour, isolez le contenu en packages distincts pour réduire la taille globale des mises à jour.
Ajout de fichiers supplémentaires via Platform Builder
Le processus d’empaquetage décrit ci-dessus est piloté par les mêmes entrées que celles qui entrent dans la création d’un fichier CE BIN. Par conséquent, si les fichiers sont référencés dans OSDesign.bib et que les entrées de Registre sont ajoutées à OSDesign.reg, le MAKEIMG
processus inclut ces fichiers dans le fichier CAB résultant. Pendant ce processus MAKEIMG
, vous allez maintenant :
ROMIMAGE
crée un répertoire nomméCEPAL\_PKG
dans le répertoire FRD (Flat Release Directory) qui met à l’étape une structure de répertoires installée pour Windows CE pour CEPAL.ROMIMAGE
répertorie tous les fichiers CE qui ont été placés surCEPAL\_PKG
la base des fichiers CE BIB.ROMIMAGE
crée plusieurs fichiers WM.XML pour chaque section mémoire. Pour ce faire, les mises à jour peuvent être envoyées (push) de manière plus granulaire, car l’unité minimale de mise à jour est un package.ROMIMAGE
créera ces références à tous les packages créés.
Tous les packages créés seront nommés avec un préfixe fixe , “%OEM\_NAME%.WindowsCE.\*”
où %OEM\_NAME%
est rempli pendant le processus de création IoT Core lors de l’appel de New-IoTCabPackage. Le nom du package dans l’espace de noms est dérivé de la section mémoire du fichier BIB (par exemple, NK) suivi de modules/fichiers (également déterminé par le fichier BIB).
Communication entre les applications Windows Embedded Compact 2013 et Windows 10 IoT Standard
L’approche recommandée pour communiquer entre les applications s’exécutant dans le conteneur CE consiste à utiliser le bouclage local. Vous pouvez en savoir plus sur le bouclage local dans ce document.
Démarrage automatique de l’application conteneur d’applications CE
Pour démarrer automatiquement l’application conteneur CE, vous pouvez créer un package d’approvisionnement qui définit l’application de démarrage sur « Microsoft.Windows.IoT.CEPAL.DkMonUWP_cw5n1h2txyewy ! » Application » et inclus ce package d’approvisionnement dans l’image. Vous devez également supprimer l’application de démarrage par défaut à l’aide de la commande Remove-IoTProductFeature et supprimer l’ID de fonctionnalité IOT_BERTHA de la définition de produit IoT Core.
Paramètres de configuration disponibles pour le conteneur d’applications Windows CE
Configuration basée sur le Registre dans CE
Pile non exécutable par défaut
Le conteneur d’applications Windows CE a désactivé les pages de pile exécutables par défaut pour améliorer la sécurité. Toutefois, certaines applications héritées peuvent s’appuyer sur ce comportement pour s’exécuter correctement. Pour activer une pile exécutable, définissez la valeur de Registre suivante dans l’image CE (il est recommandé d’entrer dans OSDesign.reg dans Platform Builder)
KeyPath = HKEY\_LOCAL\_MACHINE\CEPAL
ValueName = MemoryOptions Type = REG\_DWORD
Value = 1
Remplacement 565 16 bits pour GWES
Si le conteneur d’applications Windows CE est configuré avec un affichage 32 bits, les conversions RVB 16 bits à 32 bits sont effectuées par GWES avec l’hypothèse que les données de pixel RVB 16 bits sont au format RVB555. Si les ressources bitmap sont en 16 bits 565 et que la conversion en RVB555 de ces ressources n’est pas possible, le comportement de conversion par défaut de GWES peut être modifié via une clé de Registre. Créez la clé de Registre suivante :
HKEY\_LOCAL\_MACHINE\SYSTEM\GDI\16bpp565RGBPalette.
Configuration basée sur le Registre dans l’hôte (IoT Core)
Configuration des ports série pour le conteneur d’applications Windows CE
Les ports série de l’hôte doivent être mappés dans l’environnement CE. Ce mappage existe dans le Registre dans IoT Core et doit être configuré par le créateur d’images.
Sous HKEY\_CURRENT\_USER\Software\Microsoft\Windows NT\CurrentVersion\CEPAL\Devices\Serial
, les entrées de configuration existent pour mapper les ports COM invités aux ports COM hôtes à l’aide du schéma suivant.
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
Si le chemin d’accès au Registre ci-dessus n’existe pas lorsque ce est démarré, une configuration par défaut est écrite en fonction des appareils série détectés sur le système.
Configuration basée sur des fichiers dans l’hôte
Le conteneur CE peut être configuré à l’aide d’un fichier local sur l’hôte C:\WindowsCE\CEEnvConfig.json
. Voici un exemple de ce fichier de configuration :
{
"OEMOptions" :
{
"GUI" : true,
"Width" : 1024,
"Height" : 768, "FillScreen" : true, "ColorDepth" : 32,
"RefreshRate" : 30, "noAslrSupport" : true, "OemConfigApp" : "",
"OemConfigFile" : ""
},
"CEPALDevOptions" :
{
"VsDebugMode" : true, "FastDebugBoot" : false
}
}
OEMOptions
Clé | Description |
---|---|
Interface graphique utilisateur | Lancez le conteneur d’application CE avec l’interface utilisateur (true par défaut) |
Width | Largeur de l’affichage du conteneur d’application CE (par défaut 1024) |
Height | Hauteur du conteneur d’application CE (par défaut 768) |
FillScreen | |
ColorDepth | Définit les bits par défaut par pixel (par défaut 32) |
RefreshRate | Combien de fois l’affichage est redessiné par seconde |
noAslrSupport | Désactive la randomisation de la disposition de l’espace d’adressage dans le conteneur d’application CE (true par défaut) |
OEMConfigApp | Nom de famille de package d’une application fournie par OEM qui doit être lancée pour la configuration. |
OEMConfigFile | Chemin d’accès à un fichier qui contient des options de configuration supplémentaires partagées entre OEMConfigApp et le conteneur d’application CE |
Le conteneur d’application CE ne rend disponible qu’une seule interface réseau à utiliser. Si plusieurs cartes réseau sont présentes dans le système hôte, une interface doit être sélectionnée dans le Registre d’hôtes pour vous assurer que la carte réseau sélectionnée est déterministe.
OEMConfigFile
OemConfigFile est spécifié dans C:\WindowsCE\CEEnvConfig.json
. Vérifiez que ce fichier peut être lu par une application UWP. Voici un exemple :
{
“FactoryReset”: false, “PlatformBuilderDebugMode”: false,
“NetInterface”: “Some Network Profile Id”
}
Options :
Clé | Description |
---|---|
FactoryReset | Utilisé par l’application de configuration pour signaler au conteneur d’application CE l’état persistant. |
PlatformBuilderDebugMode | Utilisé pour démarrer le conteneur d’applications CE avec prise en charge KITL pour le débogage avec Platform Builder. |
NetInterface | Sélectionnez une interface réseau pour CE en fonction du nom du profil. |