7 points par GN⁺ 2023-11-30 | 1 commentaires | Partager sur WhatsApp
  • Microsoft a publié en open source ThreadX, le système d’exploitation temps réel acquis lors du rachat d’Express Logic.
  • ThreadX RTOS et la suite de développement Azure RTOS qui l’inclut ont été donnés à l’Eclipse Foundation, où ils seront connus sous le nom d’Eclipse ThreadX, et deviennent utilisables sous licence MIT.
  • Il existe de nombreux systèmes d’exploitation temps réel (RTOS), mais ThreadX est utilisé sur plus de 1,2 milliard d’appareils et joue un rôle essentiel sur divers équipements, dont le Raspberry Pi.

Relation entre Raspberry Pi et ThreadX

  • ThreadX est utilisé pour faire fonctionner le moteur de gestion intégré aux puces d’Intel ainsi que le firmware du Raspberry Pi.
  • Sur les Raspberry Pi 1, 2 et 3, il est appelé bootcode.bin, et sur les Pi 4 et 400, start*.elf ; ces fichiers sont inclus sur GitHub et dans Debian, mais il s’agit de "blobs" propriétaires dont le code source n’a pas été publié.
  • Il s’exécute sur le GPU VideoCore du Raspberry Pi, tandis que les cœurs Arm fonctionnent comme des dispositifs esclaves dépendants du GPU.

Sens du rachat de ThreadX par Microsoft et de son passage en open source

  • En 2019, à l’occasion des 21 ans de ThreadX, Microsoft a racheté Express Logic et a rebaptisé le produit Azure RTOS.
  • Ce rachat semble être une réponse à la prise de contrôle de FreeRTOS par AWS ; le développeur d’origine, William Lamie, a fondé une nouvelle société et commercialise PX5OS, un RTOS de "cinquième génération" avec des threads compatibles POSIX.
  • ThreadX est un produit éprouvé, et certaines versions ont obtenu la certification de sûreté de fonctionnement TÜV, ce qui le rend attractif pour certains clients.

Avis de GN⁺

  • Le point le plus important de cet article est que Microsoft a publié en open source le RTOS ThreadX, un changement majeur susceptible d’offrir davantage d’opportunités à la communauté des développeurs et de stimuler l’innovation technologique.
  • Ce passage en open source ouvre la possibilité que la pile logicielle d’appareils comme le Raspberry Pi devienne entièrement open source, ce qui pourrait en faire une option plus attrayante pour de nombreuses personnes.
  • Ce changement constitue une nouvelle intéressante tant pour les passionnés de technologie que pour les professionnels, et il devrait avoir un impact positif sur la croissance et l’innovation de l’écosystème open source.

1 commentaires

 
GN⁺ 2023-11-30
Avis Hacker News
  • « Azure RTOS » est quelque chose que Microsoft s’est empressé d’acheter après le rachat de FreeRTOS par Amazon. Bill Lamie a lancé PX5 et a emmené avec lui la plupart des talents pour travailler sur un nouveau RTOS embarqué léger. Si Microsoft prend cette direction, cela peut signifier un éloignement de la feuille de route d’Azure RTOS et des nœuds IoT. ThreadX dispose d’un écosystème bien plus vaste que FreeRTOS et fonctionne aussi sur autre chose que le Raspberry Pi. Renesas le fournissait gratuitement si vous achetiez leurs SoC.
  • La certification de sûreté est particulièrement intéressante. Développer du « logiciel de sûreté » demande énormément de travail. Avoir un RTOS open source tout en étant certifié pour la sûreté, c’est plutôt une très bonne chose. Pour maintenir la certification, il faudra probablement investir quelque part. Comprendre les normes de sûreté, mettre en place les bons processus de développement et les maintenir à mesure que le logiciel évolue, ce n’est pas aussi simple que d’écrire et d’exécuter du code. Ce n’est pas le genre de développement logiciel qu’on peut faire en amateur. J’espère que Microsoft financera cet effort de développement. FreeRTOS n’est pas certifié pour la sûreté, mais SAFERTOS, son implémentation commerciale avec la même API, l’est.
  • J’ai beaucoup aimé utiliser ThreadX. L’appeler un « système d’exploitation » est une formulation généreuse, dans la mesure où il s’agit d’un ensemble de fonctions fournissant des capacités comme les routines de service d’interruption, la création de threads et la gestion de l’allocation mémoire. ThreadX était très léger et faisait très bien le travail. J’appelais des fonctions comme tx_thread_create, tx_malloc, etc., et j’utilisais des files, des sémaphores, des mutex, etc. Ça fait plaisir de voir que ThreadX est toujours vivant. Je devais exécuter des boucles de contrôle temps réel pour l’alimentation, les ventilateurs et la température, donc il fallait pouvoir contrôler précisément quand certaines actions se produisaient, et après avoir détecté un problème, envoyer une commande dans un délai donné pour réagir ou maintenir le système en sécurité.
  • Pour ceux qui se demandent pourquoi Azure a un RTOS, Microsoft a racheté Express Logic et leur RTOS ThreadX en 2019. ThreadX est utilisé sur de nombreux microcontrôleurs aux ressources très limitées. Le branding Azure ne semble pas signifier grand-chose au-delà du fait que les appareils IoT communiquent avec le cloud.
  • Seule la version actuelle est sur GitHub, et il n’y a aucune trace de la version VideoCore. On peut espérer que la Raspberry Pi Foundation obtienne l’autorisation de publier le code source de sa propre version.
  • Ce code est bon, mais je pense qu’il y a plusieurs façons de le rendre plus portable et plus agréable pour les programmeurs. C’est particulièrement vrai pour les parties de code assembleur portées. Il est difficile de modifier les index des structures de données, donc faire évoluer les structures n’est pas simple. Si les structures C et les index du code assembleur ne restent pas synchronisés, le système peut planter. Transformer les index du code assembleur en macros les rendrait plus faciles à modifier. Il suffirait de créer un en-tête pour l’assembleur et un autre pour le code C, puis de définir les structures via des macros. Ainsi, le code C et le code assembleur resteraient synchronisés. L’inconvénient, c’est qu’il faudrait définir les structures avec ces macros, mais cela ne concernerait que les structures utilisées en assembleur et en C, ou à un niveau supérieur.
  • Cela faisait longtemps que je n’avais pas entendu parler de ThreadX. J’ai travaillé sur un produit basé sur ThreadX il y a environ 20 ans. C’était un appareil applicatif qui n’avait pas besoin d’ordonnancement temps réel ni de démarrage rapide, mais la décision de choisir ThreadX dépassait largement mon niveau d’influence. Il existait même un produit « haut de gamme » distinct, qui exécutait Linux embarqué et avec lequel il était agréable de travailler. Le développement, le débogage et les tests avec ThreadX prenaient deux à trois fois plus de temps, parce qu’il manquait beaucoup de commodités offertes par les kernels dont on finit par dépendre. Je ne le recommanderais que pour des appareils très simples et critiques pour la sûreté.
  • C’est en réalité une grosse affaire, et c’est chouette que l’Eclipse Foundation s’en charge. Microsoft mérite d’être félicité et applaudi pour cela. Ils ont un bon historique sur le sujet, donc je suis très optimiste, mais ce projet aura besoin de beaucoup de soutien dans la durée. Ce n’est plus uniquement la responsabilité de Microsoft désormais, mais ils pourraient quand même devoir porter une plus grande charge pendant que les choses se mettent en place.
  • Quand je travaillais sur le firmware des Deskjet, ThreadX était un RTOS correct. À l’époque, les OS open source, et surtout les outils, n’étaient pas adaptés au travail. Mais aujourd’hui, la situation a beaucoup changé et il existe des alternatives.
  • ThreadX n’est pas open source. Le code source est disponible, mais comme version d’évaluation, c’est-à-dire sous une licence propriétaire.