Deux heures…
Voila le temps qu’il m’a fallu entre la fin de téléchargement du kit d’évaluation Windows CE et la premiere exécution de l’émulateur pour un périphérique de test.
Cela faisait un moment que j’avais envie de tester Windows CE (pour les non-informaticiens et/ou les anti-microsoft, Windows CE est l’OS «générique» qui a été dérivé pour produire les PocketPC et autres Smartphone de la gamme Windows Mobile).
Kezako ?
CE est un système destiné à être embarqué, cela à pour principales conséquences de limiter :
- l’espace de stockage utilisable, souvent limité à une mémoire flash de 16 à 64Mo,
- la puissance de traitement de la machine, à quelques exceptions prêt, les processeurs embarqués sont encore très loin des performances de nos processeurs de PC/Mac
Ce bridage, de fait, des ressources interdit l’utilisation d’un OS aussi gourmand que Windows XP, MacOS ou les version récentes de Linux, d’autres solutions ont donc dues être trouvées. La transformation Linux -> EmbeddedLinux (NSLU) qui s’est opéré dans le monde libre se manifeste de façon un peu plus complexe du coté Microsoft. Le géant de Seattle s’est en effet dispersé en deux OS adaptés :
- WindowsCE (le sujet actuel), destiné aux vrais périphériques embarqués, ayant des limitations physiques importantes
- Windows XP Embedded destiné à des systèmes disposant de beaucoup plus de ressources et qui n’est en fait qu’un dérivé de XP.
Pour faire fonctionner un périphérique sous WinCE, le premier travail est donc de préparer une «image» de votre futur système en n’y ajoutant que ce dont vous aurez besoin : pas question de mettre la totalité des fonctionnalités d’un Windows complet et la collection de tous les drivers sur une mémoire flash de 8Mo…
Et donc ?
Revenons au sujet initial et au sujet de mon expérience : essayer de construire un périphérique embarqué simple et lui faire exécuter un logiciel en .net. C’était vraiment «pour faire joujou», mais l’expérience est plutôt intéressante.
Première phase : la découverte de PlateformBuilder.
Premier constat : l’interface de création d’images pour Windows CE est relativement claire, ressemble à s’y méprendre aux anciennes versions de Visual Studio et est assez intuitive. Par contre, on voit tout de suite que ce n’est pas pour les débutants : il y a plein de barbarismes un peu partout, difficile de s’y retrouver quand on a juste téléchargé ce soft «pour voir».

L'interface de PlatformBuilder
Deuxieme phase : mise à jours.
1/4 plus tard, après avoir «tripatouillé» un peu partout pour essayer de comprendre (merci la doc pour les quelques explications qui ont permis de mettre en adéquation les termes utilisé et mes connaissances informatiques), c’est l’heure du deuxieme constat : «eh mais… c’est un vieux .net (compact framework 1.0) là dedans… comment on fait pour mettre le nouveau ?» Eh bien la solution est simple, on passe sur le site de Microsoft et on s’aperçoit qu’il y a deux tonnes et demies de mise à jour à installer. C’est l’occasion de rentabiliser l’accès ADSL…
Troisieme phase : la création d’une image CE «de base»
Bon, ce n’est pas de tout ça : c’est bon mon PB (Platform Builder) est prêt, je me lance !
Après avoir sélectionné les BSP (en simplifiant un peu, une BSP est une architecture processeurs, il y en a quelques unes : x86, ARM, etc) cibles et un modèle de périphérique (j’ai pris «TinyKernel» qui permet d’avoir une configuration minimale), le projet est prêt à être complété.

Mon projet
La méthode n’est pas bien compliqué : il s’agit de sélectionner les fonctions que vous souhaitez ajouter à votre plateforme dans la liste de droite de les glisser vers votre projet. PlateformBuilder se chargeant de vérifier les dépendances. Par exemple, je souhaite que ma plateforme gère les périphériques USB de stockage (clés USB), il me reste donc à localiser le module correspondant, et à l’ajouter.

Mon projet après l'ajout du controleur USB MassStorage
Après avoir fait le tour pendant quelques minutes des différents modules disponibles, mon image est passé de 850Ko à 7800Ko : j’ai ajouté .net, la gestion des périphériques clavier/souris, un serveur web avec support ASP, le shell graphique, etc. J’ai peut-être ajouté des trucs qui ne me serviront pas, mais il sera toujours temps de regarder plus en détail dans un essai ultérieur.
Quatrième phase : la compilation
Bon, eh bien le moment est décisif : je lance la compilation. Comme je n’ai pas besoin de drivers particuliers, ni même de fonctions spécifiques, mon image de CE est «prête» à être testée. La compilation dure un certain temps (presque 1/2h pour compiler les deux configurations/BSP : Emulateur + CEPC en debug), mais c’est bientot le grand moment : celui de l’exécution.

L'émulateur ayant chargé mon image
Miracle, mon émulateur s’est lancé sans problèmes (et je crois effectivement que ça tiens du miracle, si je m’en réfère aux messages dans les newsgroup). Bon, les fonctionnalités sont très limités, vu que je n’ai rien installé comme logiciels (je crois que je vais quand même ajouter FreeCell ou le Solitaire, histoire de pouvoir m’amuser avec l’émulateur), mais le principe est là : je suis prêt à installer et faire tourner des applications WindowsCE.
Il me reste maintenant deux choses à faire, lorsque j’aurais un peu de temps libre :
- Ajouter un programme .net dans l’image, un «Hello Device !» me paraît être un bon candidat.
- Essayer de comprendre le BiosLoader qui permet de booter une image sur un vrai périphérique embarqué (j’ai une carte Mini-ITX EPIA800 qui n’a pas encore eu le temps de servir, c’est l’occasion ou jamais avant qu’elle soit utilisée dans un HTPC)