Les Systèmes d’Exploitation Embarqués Microsoft

(synthèse oct 2013)

Windows CE, Windows Embedded, Windows Embedded Server, Windows Embedded Compact, Windows Mobile, Windows Thin Client, … Que de systèmes d’exploitations embarqués disponibles chez Microsoft. En effet, entre les versions successives, les appellations commerciales et les changements de noms, de nombreux utilisateurs, chefs de projet, intégrateurs ou développeurs, et mêmes spécialistes, peuvent avoir du mal à s’y retrouver lorsqu’il s’agit par exemple d’intégrer un tel système à une architecture applicative existante. En ce premier semestre 2013 qui voit la sortie de nouvelles versions qui vont encore chambouler le champ d’application de ces systèmes, il est temps de faire une petite synthèse sur les systèmes embarqués et mobiles de la firme de Redmond, ce que nous allons tenter de faire dans cet article.
Nous n’aborderons pas les systèmes classiques pour stations de travail (de Windows 95 à 2008) ni les plateformes serveur (de NT à 2008 Server). Nous verrons cependant que certains des systèmes embarqués Microsoft y sont fortement liés.
Nous allons distinguer et classer les systèmes Embedded Microsoft en 4 familles puis nous traiterons quelques cas particuliers.

 1. La famille Windows Embedded Standard

Cette famille regroupe les systèmes embarqués issus des systèmes classiques de Microsoft pour station de travail que sont Windows XP, Seven et récemment 2008. Il s’agit en fait de versions allégées de ces systèmes basées sur le même noyau (XP, Seven ou 2008), livrées sous forme de modules binaires qu’il est nécessaire de sélectionner et d’assembler pour générer une image fonctionnelle adaptée à ses besoins. Pour réaliser un tel système, Microsoft fournit les logiciels nécessaires (XPe Studio pour Xp, Image Assistant Build Wizard ou Image Configuration Editor pour Seven). Ne perdons pas de vue qu’il s’agit d’assembler un système à partir de modules binaires compilés. Cela nécessite d’avoir un ensemble de composants binaires, d’exécutables, de dll, de clés de registres avec dépendances, sans parler des applications, ensemble qui doit être parfaitement bien organisé pour assurer la stabilité du système. Pour exemple, Windows XP Embedded consiste en 12000 composants répartis en 400 fichiers exe, 1600 dll, 300 sys … avec 176 801 clés et 346 847 valeurs de registre, le Plug & Play, des composants COM, etc …
La taille de l’image système est de 40 Mo au minimum pour un système limité en fonctionnalités et peut aller jusqu’à quelques Go. Le prix des licences est inférieur à 90$, sans activation. Au niveau caractéristiques, ces systèmes gardent celles de leur noyau respectif d’origine (XP ou Seven) donc on parle bien de systèmes multitâches préemptifs pour processeurs x86 ou x64. Ils ne peuvent donc pas prétendre aux contraintes temps réel et ils présentent la fiabilité de leur système d’origine.
Microsoft a tendance à classer ses systèmes Embedded en fonction de la source d’énergie. Les Windows Embedded Standard sont destinés aux périphériques utilisant une autre source d’énergie que les batteries. On les trouve par exemple sur des contrôles industriels, des terminaux et kiosques multimédias, des « Point Of Service » (kiosques et bornes automatisées, caisses enregistreuses, pompes à essence, guichets automatiques bancaires), en domotique, sur des systèmes de surveillance, des imprimantes multifonctions ou en clients légers sur des stations de travail.
Les applicatifs et les drivers sont 100% Windows compatibles, ce qui inclut les logiciels et applicatifs métiers développés pour une infrastructure Windows (attention cependant à ce que tous les composants logiciels interdépendants nécessaires et externes à votre applicatif soient présents sur le système).
Le développement d’applicatifs se fait classiquement comme sur un Windows normal avec les mêmes outils et les mêmes technologies. On peut donc envisager de développer directement avec l’API Win32 (pour par exemple de l’exécution native et une taille optimisée), en MFC, ou bien sûr avec le Framework .Net (C#, VB.Net, WPF ou Silverlight) à partir de Visual Studio. Tous les outils de développement compatibles Windows hors Microsoft peuvent bien sûr être utilisés.

Les principales versions des Windows Embedded Standard sont :

  • Windows XP Embedded (ou XPe), Windows Standard 2009 : Windows XP modulaire (IE 7, Windows Media Player 11, .NET Framework 3.0)
  • Windows Embedded Standard 7 (ou 2011) : la version la plus récente basée sur Windows 7 (x86 & x64, applications et pilotes Windows 7 compatibles, IE 8, .Net Framework 3.5 SP1, WMP 12, Silverlight 5, Direct X, Open GL, SQL-Server, RDP7, Aero et Windows Touch, WPF, API de gestion de l'alimentation, sorties de veille multiples, démarrage USB, AD, IPv6, …)
  • Windows Embedded PoSReady (anciennement WEPOS) : c’est une version de Windows Embedded Standard spécialisée pour les POS (Points Of Services), respectueuse des normes définies par les consortiums du marché en accord avec les constructeurs (comme UPOS, EPCGlobal, ARTS…), avec de nombreux outils supplémentaires pour POS (double écran, bureau à distance, protection des HD et des applications, outils pour connecter un terminal de paiement par CB, API POS, …) et une image minimale de 4,5 Mo.

sem wes

2. La Famille Windows Embedded CE ou Compact

Cette famille regroupe les différentes évolutions et versions de Windows CE (nommé aussi Windows Embedded CE puis Windows Embedded Compact 7), véritable système d'exploitation embarqué et modulaire, multi-architecture, compact et léger. Malgré ce que vous pourrez lire sur quelques forums ou sites mal informés, ce n’est absolument pas une version allégée de Windows NT, XP ou Seven ou autres, mais bien un système d’exploitation à part entière avec ses propres caractéristiques et son propre code source. Il n’y a aucune relation d’héritage entre un Windows Embedded CE et un Windows classique ou un Windows Embedded Standard, même si ces systèmes présentent des similitudes techniques ou visuelles comme l’interface. Pour exemple, les APIs ne sont pas exactement les mêmes, les binaires et drivers ne sont pas compatibles, et cela est vrai depuis les premières versions de Windows CE. D’un point de vue caractéristiques, Windows Embedded CE est un système d'exploitation embarqué pouvant être utilisé en temps réel, avec noyau unifié natif 32 bits, sans système 16 bits, Unicode, supportant de multiples architectures processeurs (x86, ARM dont le dernier ARMv7 pour WEC7, MIPS32 ou SH4), multitâche préemptif à priorités fixes, avec ordonnanceur temps réels, et utilisable sur multiprocesseur symétrique (jusqu’à 8 coeurs pour WEC7). C’est un système léger qui peut tenir sous 500 Ko de ROM (sans interface graphique) et jusqu’à quelques dizaines de Mo, et qui peut s’installer sans disque dur (résidant en ROM ou RAM). Notons que ce système implémente de nombreuses options système, de communication et de réseaux (WiFi, Bluetooth, réseaux téléphoniques GSM/GPRS, IPv6, SD, USB, …). De nombreuses applications sont disponibles comme IE7 avec Flash 10, des visionneuses Office et PDF, l’accès compte de messagerie/agenda/carnet d'adresses, l’accès au réseau, des plugins multimédia, WMP, de nombreux Codecs, …
S’il est possible d’implémenter autant d’architecture et de fonctionnalités, c’est tout simplement que ce système nous est livré sous forme de module (plus de 700 composants) à assembler et à compiler en fonction des cibles désirées (processeurs et périphériques). Vous ne trouverez donc pas de CD pour installer Windows Embedded CE directement (par exemple sur un PC) car il n’existe pas de Windows Embedded CE générique prêt à installer. Le système entièrement modulable se construit par compilation à partir d’une sélection de modules divisés en composants sélectionnables individuellement. Donc pour simplifier, Windows Embedded CE est un package logiciel livré avec des
codes source à partir duquel il faut créer et compiler l’image du système. Lorsque l’on génère une image optimisée de Windows Embedded CE, on parle souvent de plateforme CE ou plateforme mobile.
Pour générer son système, les outils nécessaires sont Visual Studio 8 et le logiciel Microsoft Platform Builder qui s’installe comme plugin du premier. Le package Windows Embedded Compact 7 installe le plugin et les bibliothèques de sources et de drivers nécessaires (prévoir 10Go rien que pour les sources pour processeur x86). Notez que Visual Studio 2010 ne permet pas de travailler pour Windows Embedded CE, le monde de l’Embedded n’évolue pas aussi vite que les autres produits.
D’un point de vue développement, deux types de production sont possibles, toujours sous Visual Studio 2008. Si l’on souhaite produire des applicatifs natifs et peu encombrant, on utilise le langage C avec l’API natif (très proche de l’API Win 32 et entièrement Unicode) voie du C++ avec la librairie MFC. Cette approche nécessite cependant un peu plus de code mais est sans doute mieux adaptée aux applicatifs embarqués ou temps réel. Pour les applications plus graphiques et plus fonctionnelles, le programmeur s’oriente plus sur du développement .Net grâce au « .Net Compact Framework ». Il s’agit d’une version allégée du.Net Framework spécialement conçu pour les systèmes Windows Embedded CE. Elle permet la programmation en C#, VB.Net ou avec Silverlight Embedded sous Visual Studio 2008. Elle est très complète et présente un certain nombre de classes et API classiques (comme les Winforms, une couche ADO.Net, …) et des classes spécifiques dédiées (base de données Sql-Server Compact, outils de synchronisation, …).

Les différentes versions des Windows Embedded CE sont :

  • Windows CE 1 à 3.0: historiquement les premières versions
  • Windows CE .Net 4.x : les versions suivantes, implémentant les premières fonctionnalités .Net
  • Windows Embedded CE 5.x : les versions à la base des dernières plateformes Windows Mobile
  • Windows Embedded 6.0 à 6.0R3 : les versions implémentant 32ko de processus et 4 Go de mémoire virtuelle
  • Windows Embbeded Compact 7 : la dernière version disponible (ARMv7, IE7, …)

D’autres versions spécialisées existent :

  • Windows Embedded Automotive 7 : version plateforme industrielle de Windows Embedded Compact 7 adaptée aux équipements automobile (tableau de bord), connectés et orientés services, qui inclut les Moteurs Vocaux Microsoft (Microsoft Tellme Speech Technology), les contrôles de téléphone mains libres et la prise en charge d'appareils multimédias
  • Windows Embedded NavReady 2009 : version OEM à base de Windows Embedded CE 5 adaptée aux équipements de navigation portables intelligents (GPS)
  • Windows Mobile : la plateforme Microsoft pour PDA et Smartphone précédent Windows Phone 7 et réalisée à partir de Windows Embedded CE. Nous allons la détailler plus loin dans cet article.
  • Windows Embedded Handheld 6.5 : version de Windows Mobile 6.5 spécifique aux terminaux durcis (scanneur de code barre, RFID, …) configurée pour répondre aux contraintes métiers (2,3 Millions d’unités vendues en 2009)

sem wce

Un système Windows Embedded CE sur une carte Toradex Orchid.

wemb tor

3. Les Windows Mobile et Windows Embedded Handheld :

Windows Mobile est la famille des plateformes pour PDA et Smartphone distribuée par Microsoft avant l’arrivée de Windows Phone 7. Ce n’est pas un système à part entière car il s’agit de plateformes issues de compilations basées sur Windows Embedded CE que nous venons de voir ci-dessus. Par contre de par sa large diffusion et ses multiples versions, il représente réellement une famille à part. Avant Windows Phone 7, Microsoft a donc utilisé une plateforme issue de Windows CE puis Windows Embedded CE pour réaliser et distribuer des systèmes sur le marché de la téléphonie mobile. Adaptable à une large gamme d'équipements (Toshiba, Dell, HP iPAQ, HTC, …), le système était complet avec tous les services nécessaires (communication, réseau, périphériques, …) et une gamme de logiciels importantes (Office, IE, Outlook, Media Player, …). Bien implanté sur le marché de la téléphonie au milieu des années 2000, sa commercialisation sur ce marché va très vite s’effondrer, pour disparaître en 2011. Dépendant d’un noyau embarqué généraliste, il n’était pas assez spécialisé pour supporter la révolution des Smartphones évolués initiée par Apple et l’iPhone en 2007.
Pourtant Windows Mobile n’est pas mort, car sous le nom de Windows Embedded Handheld une utilisation moins populaire mais somme toute importante réside dans les « PDA industriels » comme les terminaux durcis et industriel. En 2008, il se serait vendu plus de 20 millions de licences Windows Mobile. La toute dernière version basée sur Windows Mobile 6.5 s’intitule d’ailleurs Windows Embedded Handheld 6.5.

Les caractéristiques de Windows Mobile ou Windows Embedded Handheld sont celles de son système d’origine à savoir la version du Windows Embedded CE qui a servi à sa compilation. Ainsi Windows Mobile 6,5 possède celles de Windows Embedded CE 5.2.
Les technologies de développement sont donc les mêmes que celles de Windows Embedded CE. Toujours à partir de Visual Studio 2008, le développement peut être effectué en C en utilisant les appels à l’API système, en C++ avec la librairie MFC, ou autour des langages du .Net Compact Framework. Des SDK spécifiques aux multiples versions de Windows Mobile sont disponibles gratuitement et donnent accès à des émulateurs très pratiques qui sont de véritables images virtuelles que l’on peut modifier et adapter à tous nos besoins (résolution graphique, accès réseau, mappage de port entre poste de développement et émulateurs, …).
Notons que WindevMobile permet depuis très longtemps le développement sur Windows Mobile. Cela permet entre autre d’intégrer aux infrastructures applicatives de type logistiques des terminaux durcis sur Windows CE comme les lecteurs de code-barres.
Les versions successives majeures ont été PocketPC 2002 et Smartphone 2002 basés sur Windows CE 3.0, Windows Mobile 2003 basé sur Windows CE .Net 4.20, Windows Mobile 5 et 6 basés sur Windows Embedded CE 5, Windows Mobile 6.5 basé sur Windows Embedded CE 5.2, et enfin Windows Embedded Handheld 6.5 basé sur Windows Mobile 6.5.

Historique des versions de Windows Embedded CE et des plateformes mobiles associées

sem winmob

Windows mobile sur 2 types de Pocket PC (Asus et HP iPaq), Windows Embedded CE 6.0 sur tablette Toshiba Journ.E Touch

sem ppc

Notons bien que jusqu’à maintenant Windows Embedded Handheld basée sur Windows Mobile était orienté métier et industriel et s’adresse aux professionnels, alors que Windows Phone qui a remplacé Windows Mobile a été conçu pour les Smartphones et le grand public. Mais attention la version 2013 va changer la donne.

4. La famille Windows Embedded Server :

Il s’agit en fait de versions de Server 2008 ou 2003, x64, mis à disposition des fabricants ou intégrateurs d’équipements serveurs embarqués dédiés aux télécommunications (serveur PABX, serveur de centre d'appels, visioconférence et serveur vocal interactif), aux serveurs de médias, à l’imagerie médicale, ou aux automates industriels. Les versions disponibles sont Windows Server 2003R2 for Embedded Systems (ou 2003) et Windows Server 2008R2 for Embedded Systems (ou 2008).

5. Quelques cas particuliers :

- Le .Net Micro Framework : le .Net Micro Framework (version actuelle 4.5) est un sous ensemble du .NET Framework destiné aux systèmes embarqués ultra légers dont les processeurs ne disposent pas de MMU et qui ne requiert pas d’OS pour fonctionner. On peut le voir comme un environnement d'exécution bootable dont le but est de faire fonctionner un unique programme (non temps réel). Il démarre et s'exécute en mémoire flash sur des coeurs Arm7, 11 et CortexM3, nécessite 256 Ko de RAM et 512 ko de Flash. Il n’y a plus de 1,5 million d'équipements divers utilisant le micro-Framework (télécommandes, capteurs et tensiomètres, robots, périphériques audio / vidéo, …). Il est maintenant disponible en licence Open Source Apache 2 depuis 2009
Le développement d’application s’effectue en C# avec Visual Studio 2010 et un SDK dédié fournit gratuitement par Microsoft (version 4.2 depuis 2012) ou par l’éditeur du matériel. A noter que le développement reste très particulier car le .Net Micro Framework ne fournit que quelques classes principales du Framework .Net (70 au lieu de 1400). Par exemple aucune police de caractère n’est implémentée et il convient au développeur de charger sa propre police dans son programme.

- Windows Home Server : Il s’agit d’un serveur numérique permettant la centralisation, la sauvegarde, et la diffusion des contenus multimédias au domicile des particuliers. Il s’agit en fait d’une version de Windows Server 2008 allégée qui implémente un réseau domestique, l’accès à distance et le partage de fichiers multimédias. Il permet de diffuser films, photos et musiques stockés en un seul endroit sur PC, Xbox et support Media Center. Il permet aussi d’accéder à ses photos et ses musiques en dehors du domicile et de sauvegarder / restaurer les données de PC sous Windows. La dernière version nommée Windows Home Server 2011 et basée sur un noyau Windows Server 2008 x64 est disponible depuis l’été 2011. Ce n’est spécifiquement pas une plateforme pour développer mais l’ensemble des technologies de développement disponibles sous Windows 2008 Server devrait rester compatible.

- Windows Embedded Thin Client : Il s’agit en fait d’une appellation commerciale regroupant des versions OEM de clients légers Windows Embedded Standard et Windows Embedded Compact pour station de travail exécutant un bureau à distance. Deux plateformes sont disponibles dans cette gamme : Windows Embedded Standard 7 et Windows Embedded Compact 7 en 2 versions (C7P version ultra légère occupant peu de place en mémoire et C7T version légère administrables à distance et connectables à un domaine).
Windows Phone : Juste un mot sur Windows Phone qui est régulièrement abordé dans les actualités. Il s’agit maintenant du système Microsoft dédié aux Smartphone et accessible depuis 2010 (WP7 en 2010 et WP7.5 en 2011, WP8 en 2012). Ce n’est pas un système embarqué et ni une plateforme Windows Embedded, même si pour le développer, Microsoft serait parti à l’origine du code source du noyau Windows Embedded CE 6 R3 mais profondément modifié. Microsoft a changé de stratégie pour la téléphonie mobile en abandonnant la notion de plateforme ouverte, adaptable et modifiable pour un système indépendant qui évoluera à part, privilégiant ainsi une seule solution technique pour une plus grande fiabilité, une plus grande réactivité vis-à-vis du marché et un développement simplifié des applications. Une fusion avec Windows 8 n’est pas à exclure mais cela est une autre histoire.

- Windows Embedded Entreprise : Cette catégorie désigne une gamme commerciale de versions OEM des systèmes d'exploitation Microsoft pour poste (Vista, XP ou Seven, et bientôt 2008). Ces versions sont livrées et adaptées pour fonctionner sur un système embarqué composé d'applications et de matériels spécifiques pour un éditeur particulier.

6. Les Versions 2013 :

En novembre 2011, Microsoft avait annoncé de prochaines versions de Windows Embedded Compact, Standard et Enterprise (qui portaient les noms de code v.Next). L’arrivée de Windows 8 (qui est compatible ARM) a bien sûr modifié toute la gamme des Embedded. Ainsi Windows Embedded 8 Standard qui sera publié en version finale en mars 2013 est la suite logique Windows Embedded Standard 7. Il consiste en un Windows 8 modulaire et adaptable à ses propres besoins avec son panel de déclinaisons comme Windows Embedded 8 Industrie disponible en Preview (qui a pour objectif de remplacer Windows Embedded POSReady), Windows Embedded 8 Pro, ou Windows Embedded Automotive 8.
La petite révolution consiste dans le fait que Windows 8 Embedded Handheld (actuellement en Preview) est par contre basé sur un système Windows Phone 8 et non plus sur un noyau Windows CE. Quant à l’avenir du noyau Windows CE il faut attendre Windows Embedded Compact 2013 (publication annoncé au 2° semestre 2013) pour savoir si celui continuera à utiliser son propre noyau ou basculera sur une technologie Windows Phone voire Windows 2008.
Enfin, concernant le développement, tout est maintenant prévu pour être centré autour de Visual Studio 2012. Celui-ci va désormais intégrer tous les modules nécessaires de la compilation des systèmes au développement d’applicatifs, comme par exemple Platform Builder qui n’était actuellement disponible que sous Visual Studio 2008 (Module permettant de compiler les images des systèmes Windows Embedded Compact).

7. Récapitulatif :

Voici un tableau récapitulatif des principales solutions et variantes abordées.

wemb tab

Le choix d’une solution sera bien sûr déterminé par les contraintes matérielles et le contexte d’utilisation.
Quelques mots enfin concernant l’apprentissage : si la génération d’un Windows Embedded Standard peut s’apprendre en une journée, la génération d’un Windows Embedded Compact avec Platform Builder nécessite une bonne connaissance système et demande un apprentissage assez long.
Conclusion :
Nous venons de parcourir l’ensemble des produits « embarqués » de Microsoft. Force est de constater qu’il n’est pas facile pour un non initié de se repérer entre la multitude de solutions.
Si la tendance du marché des architectures applicatives pousse les entreprises à uniformiser leur solution, les différents marchés de l’embarqué et leur niches spécifiques assez nombreuses sont encore très loin de ce type de considération.

 

Benjamin CHERVY

Responsable Développement et Ressources Technologiques à l’école d’ingénieurs informatiques 3iL

(oct 2013)


Pour en savoir plus :
http://www.microsoft.com/windowsembedded/fr-fr/windows-embedded.aspx
http://www.microsoft.com/windowsembedded/en-us/windows-embedded.aspx
http://msdn.microsoft.com/fr-fr/windowsmobile/default.aspx
http://msdn.microsoft.com/fr-fr/windowsembedded/
http://windows.microsoft.com/fr-FR/windows/products/windows-home-server