Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les appareils Arm gagnent en popularité grâce à leur faible consommation d'énergie, leur autonomie prolongée et leur puissance de traitement impressionnante. De plus, Windows on Arm offre un excellent support pour les unités de traitement neuronales (NPU), largement pris en charge pour les charges de travail en intelligence artificielle et apprentissage automatique, qui deviennent de plus en plus courantes.
Ce guide décrit les étapes d’ajout de la prise en charge à votre ou vos applications Windows pour les appareils alimentés par des processeurs Arm64. Les conseils couvrent également les moyens de résoudre tous les problèmes ou blocages potentiels (tels que les dépendances tierces ou les plug-ins) susceptibles d’interférer avec la création d’une version Arm64 de votre application.
Émulation sur les appareils Arm pour les applications Windows x86 ou x64
Les versions Arm de Windows 10 incluent la technologie d’émulation qui permet aux applications x86 non modifiées existantes de s’exécuter sur des appareils Arm. Windows 11 étend cette émulation pour exécuter des applications Windows x64 non modifiées sur des appareils Arm.
Bien que la possibilité d’émuler les architectures x64 et x86 sur des appareils Arm soit une étape importante, ce guide vous aidera à ajouter la prise en charge native d'Arm afin que votre application puisse tirer parti des gains de performances natifs et des qualités uniques des appareils Arm64, notamment :
- Optimisation de la consommation d’énergie de votre application pour prolonger la durée de vie de la batterie de l’appareil.
- Optimisation des performances pour le processeur, le GPU et les processeurs neuronaux pour accélérer les flux de travail, notamment en travaillant avec l’IA.
En outre, les pilotes du noyau doivent être compilés comme natifs Arm64. Il n’y a pas d’émulation présente dans le noyau. Cela a principalement un impact sur les scénarios de virtualisation. Pour les applications qui utilisent des pilotes de périphérique nécessitant un accès direct aux éléments internes du système d’exploitation ou du matériel s’exécutant en mode noyau, plutôt qu’en mode utilisateur, et qui n’ont pas encore été mises à jour pour prendre en charge les processeurs Arm64, consultez Building Arm64 Drivers with the WDK.
Remarque
Les applications web progressives (PWA) s’exécutent déjà avec des performances Arm64 natives.
Conditions préalables
Si vous mettez à jour votre application à l’aide d’un appareil arm (compilation native : génération du code pour la même plateforme sur laquelle vous exécutez), vous pouvez utiliser :
Présentation de Visual Studio 17.10 – Préversion 1 (février 2024)
Visual Studio 2022 v17.4 ou version ultérieure. Il s’agit de la première version en disponibilité générale de Visual Studio qui prend en charge la création et le débogage d’applications Arm64 sur des processeurs Arm. Visual Studio 2022 17.4 et microsoft Visual C++ (MSVC) natifs Arm64 offrent des performances nettement meilleures par rapport aux versions émulées précédentes.
(Facultatif) LLVM (Clang) v12+ ou version ultérieure. LLVM 12 ajoute une version binaire officielle hébergée sur Windows sur Arm64, notamment un compilateur Clang, LLD Linker et des bibliothèques runtime de compilateur-rt.
Si vous mettez à jour votre application Windows pour prendre en charge Arm à l’aide d’un appareil intel x64 ou x86 (compilation croisée), vous pouvez utiliser :
- Visual Studio 2022 v17.10 (recommandé)
- Visual Studio 2019 v16.x
- Visual Studio 2017 v15.9 et versions ultérieures (UWP, Pont de bureau, win32 C++)
- LLVM (Clang) v12+
Il existe plusieurs facteurs à prendre en compte lors du choix entre la compilation croisée ou la compilation native, comme le matériel disponible et la simplicité d’exécution des tests.
Remarque
Le support de GCC, la GNU Compiler Collection est prévu pour un avenir proche.
Étapes pour ajouter la prise en charge native d’Arm64
Pour mettre à jour votre application pour qu’elle s’exécute en mode natif sur Arm64 :
- Ajouter une configuration Arm64 à votre projet dans Visual Studio
- Tester et déboguer l’application Arm64 nouvellement créée
- Générer et tester votre application sur les appareils Arm
Une fois que vous avez confirmé que votre application a été optimisée pour les appareils Arm :
- mettre à jour votre programme d’installation et publier votre application mise à jour
- Planifier les mises à jour en cours
Étape 1 : ajouter une configuration Arm64 à votre projet dans Visual Studio
Pour ajouter une nouvelle plateforme de solution ARM64 avec des cibles de débogage et de mise en production à votre projet d’application x64 ou x86 existant :
- Ouvrez votre solution (code de projet) dans Visual Studio (consultez prérequis pour les versions prises en charge).
- Dans le menu déroulant « Plateformes de solutions » dans la barre d’outils Standard (ou dans le menu « Générer »), sélectionnez Configuration Manager...
- Ouvrez le menu déroulant « Plateforme de solution active » et sélectionnez <Nouveau...>.
- Dans le menu déroulant « Tapez ou sélectionnez la nouvelle plateforme », sélectionnez ARM64 et vérifiez que la valeur « Copier les paramètres à partir de » est définie sur x64 avec la case à cocher « Créer de nouvelles plateformes de projet », puis sélectionnez OK.
Félicitations! Vous avez commencé à ajouter la prise en charge ARM à votre application. Ensuite, vérifiez si votre solution Arm64 se compile avec succès.
Si votre solution ne se compile pas avec succès, vous devez résoudre les problèmes qui entraînent cet échec de compilation. La raison la plus probable est qu’une dépendance n’est pas disponible pour ARM64, qui est couverte dans résolution des problèmes ci-dessous.
(facultatif): si vous souhaitez vérifier que votre fichier binaire d’application est désormais généré pour Arm64, vous pouvez ouvrir votre répertoire de projet dans PowerShell (cliquez avec le bouton droit sur votre projet d’application dans l’Explorateur de solutions Visual Studio et sélectionnez Ouvrir dans terminal). Modifiez les répertoires afin que le nouveau répertoire bin\ARM64\Debug
ou Release de votre projet soit sélectionné. Entrez la commande : dumpbin /headers .\<appname>.exe
(en remplaçant <appname>
par le nom de votre application). Faites défiler vers le haut dans les résultats de sortie de votre terminal pour rechercher la section FILE HEADER VALUES
et confirmer que la première ligne est AA64 machine (ARM64)
.
Étape 2 : tester et déboguer l’application Arm64 nouvellement créée
Pour vérifier si votre solution Arm64 se compile avec succès après avoir ajouté la plateforme Arm64 à votre projet dans Visual Studio :
- Fermez la fenêtre « Plateforme de solution active ».
- Modifiez le paramètre de génération de de débogage en Release.
- Dans le menu déroulant « Générer », sélectionnez Reconstruire la solution et attendez que le projet se reconstruise.
- Vous recevrez une sortie « La reconstruction complète a réussi ». Si ce n’est pas le cas, consultez la section Résolution des problèmes ci-dessous.
Une fois que les fichiers binaires sont créés pour que votre application prend en charge Arm64, vous souhaiterez les tester. Cela nécessite l’utilisation d’un appareil ou d’une machine virtuelle exécutant Windows sur Arm.
Si vous développez sur un appareil équipé de Windows sur Arm, vous bénéficiez d'une configuration simple avec le débogage local de Visual Studio. Si vous effectuez une compilation croisée (en utilisant un appareil qui n’exécute pas un processeur Arm), vous devez utiliser le débogage à distance sur un appareil Windows avec un processeur Arm ou une machine virtuelle pour faciliter votre expérience de développement dans Visual Studio lors de l’exécution de l’application Arm64 sur un autre appareil.
Windows sur le matériel Arm ou les machines virtuelles disponibles à des fins de test
Si vous recherchez du matériel à utiliser pour l’intégration continue (CI) et les tests, voici quelques-uns des appareils Windows avec un processeur Arm64 :
Pour obtenir de l’aide sur la configuration d’une machine virtuelle exécutant Windows sur Arm pour prendre en charge l’intégration et le test, consultez Démarrage rapide : Créer une machine virtuelle Windows sur Arm dans le portail Azure.
Lisez l’annonce du blog Azure sur la disponibilité générale des machines virtuelles Azure avec des processeurs Ampere Altra Arm avec la possibilité d’exécuter des versions Arm64 de Windows 11 Professionnel et Entreprise.
En savoir plus sur Windows 11 sur Arm Insider Preview (VHDX) pour créer une machine virtuelle Windows locale sur Arm à l’aide de Hyper-V et du VHDX Windows Insider. *Les machines virtuelles Arm64 ne sont prises en charge que sur les appareils qui répondent aux conditions préalables. La création de machines virtuelles Arm64 n’est pas prise en charge sur le matériel x64. Vous devez héberger la machine virtuelle dans le cloud, consultez le lien de démarrage rapide ci-dessus.
Consultez la vidéo « Demander à l’expert : Créer des applications avec des machines virtuelles Azure basées sur Ampere ».
Étape 3 : Générer et tester votre application sur des appareils Arm
L’ajout d’une passe d’automatisation des tests est un élément important à prendre en compte pour votre stratégie d’intégration continue et de livraison continue (CI/CD). Pour les solutions Arm64 s’exécutant sur Windows, il est important d’exécuter votre suite de tests sur l’architecture Arm64 : il peut s’agir de Windows sur le matériel Arm, à l’aide de l’un des appareils Arm répertoriés ci-dessus ou d’une machine virtuelle, à partir des machines virtuelles répertoriées ci-dessus.
La compilation de l’application est plus pratique quand elle est effectuée sur le même ordinateur que les tests, mais dans de nombreux cas, elle n’est pas nécessaire. Au lieu de cela, vous pouvez envisager d’étendre l’infrastructure de build existante pour produire une sortie compilée croisée pour Arm64.
Étape 4 : Mettre à jour votre programme d’installation et publier votre application mise à jour
Si vous publiez sur le Microsoft Store, une fois que vous avez créé une version Arm64 de votre application en suivant les étapes ci-dessus, vous pouvez mettre à jour votre package d’application existant dans le Microsoft Store en visitant votre tableau de bord de l’Espace partenaires et en ajoutant les fichiers binaires ARM64 nouvellement créés à la soumission.
Si votre application n’est pas déjà publiée dans le Microsoft Store, vous pouvez suivre les instructions pour créer une soumission d’application en fonction de votre choix de soumettre une extension MSI, un EXE, un package MSIX, une PWA ou un module complémentaire d’application.
Si vous générez votre propre programme d’installation, vous devez vous assurer qu’il est en mesure d’installer correctement votre nouvelle version d’Arm64. La plupart des frameworks d’installation, tels que WiX, Squirrel, InnoSetup, InstallAware, et d’autres prennent en charge Windows sur Arm sans problème.
Si vous proposez le programme d’installation de votre application à partir d’une page web, vous pouvez utiliser User-Agent indicateurs de client pour détecter quand votre client visite à partir d’un appareil Windows sur Arm et lui offrir la version arm native mise à jour de votre application. Contrairement à la chaîne de l’agent utilisateur, User-Agent indicateurs client vous permet de différencier les clients sur Arm des clients sur des appareils x86.
Étape 5 - Planifier les mises à jour en cours
Maintenant que vous disposez d’une version Arm64 de votre application publiée, vous devez vous assurer qu’elle reste mise à jour de la même façon que les autres versions de votre application. Il est préférable de maintenir les versions et les fonctionnalités alignées sur les architectures pour éviter toute confusion des clients à l’avenir.
Résolution des problèmes
Les problèmes courants susceptibles d’interférer ou de vous empêcher d’ajouter une version Arm64 de votre application Windows x64 ou x86 existante sont les suivants :
- Une dépendance non compilée pour ARM64 vous empêche d’une build réussie.
- Code est écrit pour une architecture spécifique autre que Arm64.
- Votre application s’appuie sur un pilote de noyau.
- Vous êtes bloqué et avez besoin d’aide.
Une dépendance non compilée pour ARM64 vous empêche d’une build réussie
Si vous ne pouvez pas générer en raison d’une dépendance, qu’elle soit interne, d’un tiers ou d’une bibliothèque open source, vous devez trouver un moyen de mettre à jour cette dépendance pour prendre en charge l’architecture ARM64 ou la supprimer.
Pour les dépendances internes, nous vous recommandons de reconstruire les dépendances pour assurer la prise en charge d’ARM64.
Pour les dépendances tierces, nous vous recommandons de déposer une demande auprès du responsable de la maintenance pour une reconstruction avec la compatibilité ARM64.
Pour les dépendances open source, envisagez de vérifier vcpkg pour voir si une version plus récente de la dépendance qui inclut la prise en charge d’ARM64 existe que vous pouvez mettre à jour. Si aucune mise à jour n’existe, envisagez de contribuer à l’ajout de la prise en charge ARM64 au package vous-même. De nombreux responsables open source seraient reconnaissants de la contribution.
L’organisation Linaro travaille également avec les entreprises et les communautés open source pour développer des logiciels sur la technologie arm. Vous pouvez déposer une demande auprès de Linaro Service Desk pour aider à mettre à jour la prise en charge des packages pour toutes les dépendances manquantes liées à Windows sur Arm.
Envisagez d’utiliser Arm64EC. Les versions arm64EC des dépendances peuvent être utilisées pour reconstruire une application tout en utilisant toujours les versions x64 des dépendances. Tout code x64, y compris le code des dépendances, dans un processus Arm64EC s’exécute sous émulation dans votre application. (Les versions Arm64 des dépendances ne seront pas utilisables dans ce cas.)
Le dernier choix serait de supprimer et/ou de remplacer la dépendance de votre projet d’application.
Le code est écrit pour une architecture spécifique autre que Arm64
- Les appels d'assembleur spécifique au CPU ou de fonctions intrinsèques inline devront être adaptés pour correspondre aux instructions et fonctions disponibles sur le CPU Arm. Pour obtenir des conseils, consultez : Utilisation de l’assembly et des intrinsèques en C ou C++ Code.
Votre application s’appuie sur un pilote de noyau
pilotes de noyau doivent être générés en tant qu’Arm64 natif. Il n’y a pas d’émulation présente dans le noyau. Cela a principalement un impact sur les scénarios de virtualisation. Pour les applications qui utilisent des pilotes de périphérique nécessitant un accès direct aux éléments internes du système d’exploitation ou du matériel s’exécutant en mode noyau, plutôt qu’en mode utilisateur, et qui n’ont pas encore été mises à jour pour prendre en charge les processeurs Arm64, consultez Building Arm64 Drivers with the WDK.
En outre, les pilotes sur Windows doivent être générés en tant qu’Arm64 et ne peuvent pas être émulés. Pour les applications qui s’appuient sur des pilotes logiciels qui n’ont pas encore été mis à jour pour prendre en charge les processeurs Arm64, consultez Building Arm64 Drivers with the WDK.
Chaîne d’outils pour Windows sur Arm
Outre la prise en charge de Visual Studio et LLVM (CLANG) comme partagé dans la section Prérequis de ce guide, les outils et infrastructures suivants sont également pris en charge pour Arm64 :
- .NET 7
-
.NET 6 (LTS) - .NET 5.0.8+
- .NET Framework 4.8.1
- clang-cl compile le code C++ pour Windows et peut servir de remplacement direct pour le compilateur et le linker MSVC. Il utilise toujours les en-têtes et les bibliothèques de MSVC, et il reste compatible ABI avec MSVC.
Ainsi que les cadres tiers, notamment :
- Qt pour Windows, Boost C++ Library, Bazel, un outil de génération open source et de test.
- La prise en charge de GCC et Mingw / GNU Toolchain pour Windows sur Arm est en cours chez Linaro .
- Pour obtenir une liste plus complète, consultez Windows On Arm (WOA) - Confluence (atlassian.net).
Vous avez besoin d’aide ? Tirer parti de notre service App Assure
App Assure Arm Advisory Service est disponible pour aider les développeurs à créer des applications optimisées par Arm. Ce service s’ajoute à notre promesse existante : vos applications s’exécuteront sur Windows sur Arm et, si vous rencontrez des problèmes, Microsoft vous aidera à les corriger. En savoir plus.