En cette fin d'année 2008, j'ai suivi avec attention les aventures des possesseurs de Zune 30 et la (légère) ébullition de la communauté concernant le bug qui faisait crasher certains players mp3 de chez Microsoft et Toshiba le 31 décembre 2008, ces mêmes players ressucitant le jour suivant, pour peu que la batterie ait été vidée. Non pas parce que j'ai un Zune 30, mais parce que ce bug pour moi c'est pire que Kiss-Cool, c'est triple effet:
Dans le code d'un système embarqué utilisant Windows Embedded CE, on ne retrouve en effet pas que du code Microsoft. La plus grande partie des drivers est écrite par les fabricants de semiconducteurs (les microprocesseurs surtout) d'une part, et les intégrateurs qui adaptent ces drivers à l'électronique "autour" de ces microprocesseurs d'autre part: c'est pour cela que Microsoft distribue 100% des sources du kernel et la plus grosse majorité des sources des drivers "partagés" et des des applications.
Je ne dis pas ça pour désigner un coupable ou décharger Microsoft de certaines responsabilités (tout le monde écrit du code buggé), mais pour qu'on comprenne bien la mécanique sous-jacente, et donc qui risque d'être affecté par ce bug: à savoir, les gens qui:
Le bug n'apparait pas:
Pour ceux qui seraient touchés, la correction du bug est très simple: le fichier mis en cause est C:\WINCE500\PLATFORM\COMMON\src\ARM\FREESCALE\PMIC\MC13783\RTC\rtc.c
Le code incriminé est dans la fonction ConvertDays du coté de la ligne 230. Regardez la boucle suivante en imaginant que la variable days vaut 366
while (days > 365) { if (IsLeapYear(year)) { if (days > 366) { days -= 366; year += 1; } } else { days -= 365; year += 1; } }
Boum, si days == 366, boucle infinie. C'est ça le bug et c'est pour cela qu'il se résout automatiquement le jour suivant. Mais le problème risque de se reproduire à la fin de la prochaine année bissextile et si d'ici là les Zune 30 seront probablement relayés au rang d'antiquités, certains équipements professionnels seront encore affectés: il faut donc fixer le bug et la solution est simple:
while (days > 365) { if (IsLeapYear(year)) { if (days > 366) { days -= 366; year += 1; } else { break; } } else { days -= 365; year += 1; } }
et la solution la plus élégante que ce soit pour les performances ou la stabilité:
int daysThisYear = (IsLeapYear(year) ? 366 : 365); //The number of days in the current year is now calculated instead. while (days > daysThisYear) { days -= daysThisYear; year += 1; daysThisYear = (IsLeapYear(year) ? 366 : 365); }
Quelles conclusions tirer de ce bug?
Les liens intéressants:
Et la bonne résolution 2009: Essayer d'écrire du code propre (et le tester correctement!)
Tout est dans le titre… Pourquoi devrais-je m’y intéresser, me demanderez vous alors… c’est simple:
Windows Embedded Standard, c’est la version “componentisée” de Windows XP Pro: avec cet outil, vous choisissez uniquement les composants de XP dont vous avez besoin pour votre système embarqué: vous laissez le système calculer les dépendances, vous pouvez par exemple virer le shell explorer.exe standard pour et mettre votre propre application à la place, et en faire un kiosque, ou un mini serveur de fichiers, ou en fait, ce que vous voulez. Ensuite vous générez l’image, qui ressemble à un Windows XP mais juste avec ce dont vous avez besoin! Donc beaucoup plus petit (ca peut descendre jusqu’à une quarantaine de Mo!)
Windows Embedded Standard peut aussi être utilisé comme base, par exemple, sur une ebox-3300 ou une box VIA Artigo pour faire ensuite tourner des services de Microsoft Robotics Developer Studio!
Je laisse votre imagination faire le reste du travail. Et venez aux Techdays si vous voulez en apprendre plus!
SimplySim est une startup française spécialiste des environnements de simulation, et une des entreprises les plus avancées dans la maitrise de Microsoft Robotics Developer Studio. Pour bien finir l'année 2008 (ou commencer l'année 2009) ils mettent à disposition sur leur site web un version "riche" des services de simulation du robot Lego NXT, qui est en plus une de mes plateformes préférées: je vous encourage donc à regarder de plus prêt leur travail
SimplySim est également le partenaire qui a développé les environnements de simulation de la compétition Robochamps et donc de l'Imagine Cup! Merci à eux!
Jeudi 8 Janvier, à 18h30 se tiendra le LiveMeeting sur Microsoft Robotics Developer Studio et plus particulièrement le fonctionnement du service Sumo qui sera la plateforme du Round 1 de l'Imagine Cup.
Sur environ une demi-heure, nous nous pencherons sur le squelette du service Sumo pour comprendre où écrire le code et « l’intelligence » du robot.
Dans un second temps, nous aurons une discussion ouverte et nous répondrons aux questions afin que les participants soient prêts à installer et démarrer leur robot dès la fin du livemeeting
Le lien d'inscription
A jeudi!
Windows Mobile est la plateforme mobile sur laquelle on peut trouver le plus grand nombre d’applications, et il n’est pas question de se faire rattraper: c’est pourquoi dès maintenant, Microsoft France lance KickApps: un appel à projet d'applications mobiles un peu particulier.… Pourquoi un peu particulier? Et bien parce que passé la soumission du round 1, les 5 applications sélectionnées bénéficieront d’un coaching particulier de Microsoft, et particulièrement, de workshops au Microsoft Technology Center de Paris. Il est donc temps de réaliser les projets que vous pouviez avoir en tête depuis longtemps, peut-être de porter une application qui vous plais bien sur Windows Mobile, ou de dépoussiérer une de vos applis existantes et leur donner une nouvelle jeunesse! Soumettez dès à présent et d’ici le 16 Février (oui, ca va venir vite!) votre expression d’intérêt en envoyant un mail à dev_wm@microsoft.com avec comme objet “Concours KickApps” et en joignant un document PDF ou Word décrivant vos coordonnées et l’application que vous souhaitez soumettre
Windows Mobile est la plateforme mobile sur laquelle on peut trouver le plus grand nombre d’applications, et il n’est pas question de se faire rattraper: c’est pourquoi dès maintenant, Microsoft France lance KickApps: un appel à projet d'applications mobiles un peu particulier.… Pourquoi un peu particulier? Et bien parce que passé la soumission du round 1, les 5 applications sélectionnées bénéficieront d’un coaching particulier de Microsoft, et particulièrement, de workshops au Microsoft Technology Center de Paris.
Il est donc temps de réaliser les projets que vous pouviez avoir en tête depuis longtemps, peut-être de porter une application qui vous plais bien sur Windows Mobile, ou de dépoussiérer une de vos applis existantes et leur donner une nouvelle jeunesse!
Soumettez dès à présent et d’ici le 16 Février (oui, ca va venir vite!) votre expression d’intérêt en envoyant un mail à dev_wm@microsoft.com avec comme objet “Concours KickApps” et en joignant un document PDF ou Word décrivant vos coordonnées et l’application que vous souhaitez soumettre
En tant que responsable des relations avec les développeurs pour les technologies embarquées et mobile, c’est moi qui suis en charge du parcours “mobilité et systèmes embarqués” des Techdays 2009 qui se dérouleront du 10 au 12 février au Palais des Congrès, à Paris. Cette année, nous avons donc 11 sessions plus 4 dans des parcours séparés dont je ne suis pas responsable mais qui vaillent le coup d’être relayées, soit 15 en tout:
Dans ce parcours, je veux raconter une histoire: celle des systèmes embarqués et mobiles connectés. Il est révolu, le temps ou des équipements chacun dans leur coin accomplissaient leur tâche sans se soucier du reste du monde: que ce soit par des connections locales, ou à travers Internet, que ce soit par des interactions avec des utilisateurs ou avec des services, il faut maintenant que ces systèmes sachent parler, consommer, produire. Ce parcours racontera par exemple comment une sonnette électronique peut interagir à la fois avec la porte et le téléphone portable: qu’un cadre photo peut se synchroniser avec le web, qu’un kiosque peut s’intégrer dans un réseau d’entreprise, au même titre qu’un PC. Quelle langue parlera le robot du futur, qui n’est d’ailleurs pas si loin? Comment Windows 7 révolutionnera les interactions avec les utilisateurs de bornes d’accueil? Comment transformer mon téléphone en un consommateur avide de services web, simple et agréable à utiliser?
Au cours des jours qui viennent, je communiquerai sur l’agenda, ainsi que sur les détails de chaque session. Il y en aura pour tous les goûts, tous les niveaux, et croyez moi, vous sortirez de ces Techdays avec un regard nouveau sur les 14 milliards de systèmes embarqués qui nous entoureront d’ici 2010… N’oubliez pas également de suivre le blog des Techdays…
Adeneo Embedded, un de nos partenaire Gold du Programme Windows Embedded Partners, organise à Paris (et en parallèle à L.A!) du 23 au 26 février des sessions de formations Windows CE 6.0 en 10 modules. Bonus, ils offrent à chaque participant la carte de developpement ARM utilisee pour la formation (valeur US$1000)
Le programme de la formation est le suivant :
Pour les informations et l'inscription, contactez sales@adeneo-embedded.com
Programme complet de formation Windows Embedded CE 6.0 par Adeneo Embedded: cliquez ici
2 livres d’un grand intérèt ont été publiés en ligne, en plus de l’édition papier:
Enfin ce n’est pas un livre mais néanmoins une lecture intéressante: le Top 25 des erreurs de programmation: elles rendent les programmes moins stables et plus vulnérables: tout le monde devrait les connaitre sur le bout des doigts et vérifier son code au moins contre cette liste là (y’a du boulot!)
Bonne lecture!
Les Techdays approchent! A partir de maintenant je vais régulièrement poster pour faire des “previews” des sessions qui vont avoir lieu dans le parcours embarqué et mobilité… Aujourd’hui on commence avec le .NET MicroFramework!
D’abord, le titre: La taille ça compte: le .NET MicroFramework et ses applications dans un monde connecté
Décortiquons un peu ce titre: “La taille ca compte”… car le .NET MicroFramework tient dans 64Ko de mémoire, et n’a pas besoin d’un OS pour tourner: on le met directement sur le CPU.. et oui, on sait faire petit et léger, chez Microsoft! Et ça ne veut pas dire qu’on ne peut pas faire grand chose avec: c’est la raison de la deuxième partie du titre… “et ses applications dans un monde connecté”
Qu’est-ce qui va bien pouvoir se passer dans cette session? D’abord, on va revoir ce que c’est que le .NET MicroFramework. Quelques slides rapides, car c’est simple, et que le public commence à connaitre :) Ensuite, démo, en live, par Jean-Michel Guemguem de chez Tekigo, de la réalisation d’un équipement embarqué connecté avec des WebServices (oui, oui, on peut faire ça dans 64Ko), et je n’en dis pas plus, car sa démo est vraiment super, et je veux lui en laisser l’exclu.
Et c’est qui, Jean-Michel Guemguem? c’est le consultant spécialisé dans les technologies embarquées chez Tekigo. Il aura l’occasion de se présenter de lui-même: c’est une pointure. Vous le retrouvez régulièrement sur les forums embarqués MSDN
Quelques liens utiles en rapport avec la session:
J’ajoute au regard des statistiques d’inscription que c’est une des sessions qui a le plus de succès du parcours… espérons qu’il y aura de la place pour tout le monde!
Imaginez un petit serveur de photo, accompagné d’un cadre photo numérique, connecté à des webservices et à Internet, et vous voulez savoir ce qui pourrait y avoir sous le capot, et comment on s’y prend pour développer la prochaine génération de systèmes embarqués intelligents et connectés chez Microsoft…
Envie d’avoir une image globale de l’engagement de Microsoft dans les systèmes embarqués? Peut-être vous demandez-vous, d’abord, ce que Microsoft entend quand on parle de système embarqué… Ou bien vous savez déjà ce qui va se dire, vous avez juste envie d’une mise à jour sur la roadmap et les produits, et peut-être le futur? Ou bien vous vous demandez comment choisir le prochain système d’exploitation pour votre prototype ultra-secret? ;)
A grand renfort de démos, vous allez faire le tour des technologies de la famille Windows Embedded, la principale source d’outils et d’OS pour les systèmes embarqués chez Microsoft: celle qui regroupe Windows Embdeded Enterprise, Windows Embedded Standard, Windows Embedded POSReady, Windows Embedded CE et Windows Embedded NavReady. Ca se passe le 11 février de 17h30 à 18h30!
Les speakers, Thierry Joubert et Yannick Balère, travaillent chez Théoris, partenaire de niveau Gold sur le programme partenaire Windows Embedded. Thierry, le directeur technique, est MVP depuis des années, et Yannick s’implique, en plus des projets industriels, dans l’enseignement des systèmes embarqués en école au rythme de plusieurs milliers d’heure-étudiants par ans (presque 10000!), et dans le coaching d’équipes pour l’Imagine Cup. Profitez des Techdays pour venir les renconrer!