Auteur : Chris Friedt, responsable des versions logicielles, projet Zephyr
Nous y sommes – 2 ans et demi depuis la sortie de Assistance à long terme Zephyr (LTS) V1.
Dans ce qui semble être un clin d’œil, Linux a 30 ans et est parti où aucun pingouin n’est allé avant. Certains peuvent oublier que le système d’exploitation en temps réel Zephyr est allé dans l’espace aussi (bien que sous un nom différent).
Pendant ce temps, ici sur Terre, le projet Zéphyr a reçu 26 845 commits, 1 764 230 lignes de code ajoutées et publié dix versions étiquetées depuis la LTS V1.
Notre communauté de contributeurs continue de croître – 500 à 1384. Si vous n’avez pas rencontré notre Embla Flatlandsmo, notre 1000e contributeur, vous pouvez le faire ici. De nombreux produits à base de Zephyr ont été lancés (un jour, j’aimerais savoir combien). Des sociétés se sont constituées autour de Zephyr, et nombre d’entre elles contribuent à la Projet Zephyr sur GitHub.
Zephyr est désormais un thème commun aux conférences techniques :
Bien sûr, le tout premier Sommet des développeurs Zephyr a eu lieu cette annéeSommet Open Source a présenté plusieurs conférences liées à ZephyrÀ Conférence des plombiers Linux, Zephyr était un thème constant dans les deux Micro-conférence IoT aussi bien que Piste arbitréeAu Conférence Linux embarqué, nous avons eu une démonstration en direct du Zephyr RTOS, diffusée dans le monde entier, allant de 0 à « Bonjour le monde! » dans 1 minute!
Jetons un coup d’œil rapide à certains des changements qui ont permis le succès de Zephyr.
Quoi de neuf dans LTS V2
En septembre, quand nous avons dit que c’est la plus grande version de Zephyr jamais, on ne plaisantait pas ! Voici quelques-uns des faits saillants extraits de la terminer v2.7.0 ChangeLog.
Les utilisateurs du SDK Zephyr doivent adopter le nouveau Version du SDK Zephyr 0.13.1Le nouveau SDK comprend une prise en charge initiale pour la création de Zephyr sur macOS mis à jour Qemu version à 6.0.0 mise à jour à GCC 10.3 mise à jour pour prendre en charge ARC64 amélioration de la prise en charge de C++passé à l’utilisation newlib-nanomis à jour pour Yocto 3.2.3 ligne de base mise à jour OpenOCD instantané
Les améliorations majeures de cette version incluent
Améliorations de l’audio Bluetooth, de la radiogoniométrie et du maillage Prise en charge du chaînage PDU de publicité BluetoothAjout de la prise en charge de la chaîne d’outils armclang / armlinker via l’abstraction de la chaîne d’outilsAjout de la prise en charge de la chaîne d’outils MWDT C / C++ via l’abstraction de la chaîne d’outilsMise à jour vers CMSIS v5.8.0 (Core v5.5.0, DSP v1.9.0)Support pour M-Profile Vector Extensions (MVE) sur ARMv8.1-M Amélioration de la sécurité des threads pour Newlib et C++ sur les systèmes compatibles SMPIEEE 802.15.4 Software Address FilteringNouvelle API de gestion de l’alimentation basée sur les actionsUSB Device Framework inclut désormais toutes les définitions et structures du chapitre 9Contrôleur de système générique Pilote (syscon) et émulateur Prise en charge de Linker pour la mémoire étroitement couplée dans RISC-VAAppels API de blocage supplémentaires pour LoRaSupport pour des capacités PCI / PCIe étendues et une prise en charge améliorée de MIS-XAjout de l’énumération des types de service (STE) avec mDNS / DNS Service DiscoveryAjout de la connaissance des threads Zephyr pour OpenOCD à WestEEPROM peut maintenant être émulé en flashAjout des pilotes Ethernet MDIO et Ethernet PHY génériques
Croissance depuis LTS V1
Depuis LTS 1.14.0, le nombre de contributeurs au projet Zephyr a presque triplé de 500 à 1384. Zephyr est maintenant pris en charge sur plus de deux fois plus de planches, passant de 160 à 400, et fonctionne désormais sur 12 architectures différentes (en comptant ARM cortex-a, cortex-r et ARC64). Notre vitesse de commit maximale a presque doublé, passant de 1,4 à 2,5 commits par heure.
L’équipe de mainteneurs de Zephyr a doublé d’environ 25 à 50 et notre équipe de collaborateurs a presque triplé de 30 à 81.
Le nombre total de domaines distincts (sous-systèmes, fonctionnalités du système d’exploitation, etc.) nécessitant une maintenance dans Zephyr est passé de 80 à 113, et il n’y a aucun signe de ralentissement.
1.14.0 (LTS V1)2.7.0 (LTS V2)Contributeurs5001384Boards160400Architecture812Vitesse d’engagement1.4 commits par heure2.5 commits par heure# de mainteneurs~2550# de collaborateurs~3081# de zones~80113
Améliorations majeures depuis LTS V1
La plupart des membres de notre communauté ont adopté avec empressement versions taguées. Néanmoins, pour les entreprises qui ont basé leurs produits sur la version LTS V1, il y a eu un nombre considérable d’améliorations majeures depuis lors.
Le noyau prend désormais en charge les architectures 32 et 64 bits. Nous avons ajouté la prise en charge du proxy SOCKS5. solution de bout en bout pour les mises à jour d’appareils sans filNous avons ajouté la prise en charge de l’architecture ARM Cortex-R Des API normalisées sur toutes les architecturesPrise en charge étendue de l’architecture ARMv6-MAjout de la prise en charge de nombreuses nouvelles cartes et blindagesAjout de nombreux nouveaux pilotes et capteursAjout de la prise en charge BLE sur la plate-forme VegaAméliorations de la taille de la mémoire à Pile hôte BluetoothNous avons ajouté la prise en charge initiale de l’architecture ARMv8-A 64 bitsPrise en charge du protocole CANopen via la pile CANopenNode tierceLa prise en charge de LoRa a été ajoutée avec le pilote de modem LoRa SX1276Un nouveau package Zephyr CMake a été introduitUn nouveau Arborescence de périphériques API qui permet d’accéder à pratiquement tous les nœuds et propriétés DTL’API de délai d’expiration du noyau a été remaniéeUn nouvel allocateur k_heap/sys_heap, avec des performances amélioréesZephyr s’intègre désormais au cadre conforme PSA TF-M (Trusted Firmware M) L’hôte Bluetooth Low Energy prend désormais en charge LE Advertising ExtensionsLa bibliothèque CMSIS-DSP est maintenant incluse et intégréePrise en charge initiale de la gestion de la mémoire virtuelleAjout de la prise en charge de l’hôte Bluetooth pour la publicité périodique et les canaux isochrones.Ajout d’une nouvelle pile TCP qui améliore la testabilité du protocole réseauIntroduit une nouvelle abstraction de la chaîne d’outils avec prise en charge initiale de GCC et LLVM/ClangDéplacé vers utilisant les types d’entiers C99 et obsolètes les types d’entiers ZephyrIntroduction de la prise en charge de l’architecture SPARC et de l’implémentation LEONAjout de la prise en charge du stockage local des threads (TLS)Ajout de la prise en charge des statistiques d’exécution par threadAjout de la prise en charge de la construction avec LLVM sur X86Ajout de nouveaux mécanismes de synchronisation à l’aide des variables de conditionAjout de la prise en charge de de pagination à la commande, prise en charge initiale du sous-système X86Logging réviséAjout de la prise en charge pour ARCv3Split 64 bits ARM32 et ARM64, ARM64 est désormais une architecture de haut niveauAjout de la prise en charge initiale pour Arm v8.1-m et Cortex-M55Suppression de la prise en charge de la pile TCP héritée qui était obsolète dans 2.4Tracing révision du sous-système / prise en charge supplémentaire de Percepio TracealyzerGestion de l’alimentation d’exécution (PM) de l’appareil complètement réviséeLa génération automatique de SPDX SBOM a été ajoutée à WestAjout d’un exemple d’application Zephyr autonome
Domaines à améliorer
De nouvelles fonctionnalités techniques et des améliorations sont proposées chaque jour. Cependant, il est également important de prendre périodiquement du recul et d’examiner l’efficacité avec laquelle nos roues tournent en tant qu’organisation. À la demande de nos précieux membres de la communauté, plusieurs domaines ont été étiquetés pour l’amélioration.
Nous avons besoin de plus de collaborateurs et de mainteneurs (réviseurs) pour accompagner notre croissance.Plus de réviseurs signifient moins de temps de révision pour chaque PR ; en moyenne, certains mainteneurs supervisent plusieurs domaines, ce qui leur laisse moins de temps pour se concentrer. Nous vous voulons ! (si vous avez ce qu’il faut)Expertise technique, patience, temps et un bon historique de contributionVoir Rôles du projet pour les responsabilités du responsable Enregistrez et publiez des statistiques de commit Zephyr similaires à le noyau LinuxUtiliser une granularité plus fine des autorisations sur GitHub (actuellement en cours)Fournir un processus de qualification et des consultants Rolodex de Zephyr
Regarder vers l’avenir
Il y a actuellement 107 tickets RFC ouverts pour pratiquement tous les types d’améliorations. Vous trouverez ci-dessous quelques-uns qui me passionnent personnellement!
native_posix prise en charge de la carte pour le capteur macOSA et le cadre de bus de messages (basé sur Android CHRE)Un framework State Machine génériqueAjout d’un API de contrôle des broches et les liaisons DevicetreeUn cadre de pilotes USB-C (basé sur la pile ChromeOS)Un cadre unifié pour plusieurs sources d’horloge, domaines et résolutions de minuterieConfiguration automatique d’interfaces réseau multiples via DevicetreePrise en charge améliorée de plusieurs appareils radio et coexistence sans filPrise en charge améliorée du langage et de l’exécution : MicroPython, C++, Rouiller, eBPFPrise en charge améliorée des normes ISO C, C++ et POSIX Prise en charge supplémentaire des frameworks d’appel de procédure à distance comme gRPC et Épargne
Bien sûr, l’une des plus grandes facettes de l’avenir de Zephyr est la communauté, et nous accueillons tous les futurs membres de la communauté à bras ouverts. Pour ceux qui découvrent Zephyr, le meilleur endroit pour commencer est le Guide de démarrage Zephyr. A tout moment, n’hésitez pas à nous contacter sur Discorde discuter.
Remarques de clôture
Chaque seconde de chaque jour, des millions d’appareils Internet basés sur Zephyr se réveillent, traitent quelques octets de données, résonnent à des fréquences GHz, puis se rendorment silencieusement, consommant de précieux micro-ampères de batterie. Tandis que d’autres, à l’opposé, ne s’endorment jamais du tout et traitent d’immenses charges utiles dans des accélérateurs matériels personnalisés dans certains des plus grands centres de données au monde.
C’est notre communauté. Nous évoluons. Nous résolvons des problèmes catégoriquement difficiles. Nous nous tenons mutuellement à des normes élevées. Nous nous entraidons contre vents et marées, et ce faisant, nous sommes capables de réaliser les choses les plus incroyables !
Nous sommes ravis d’annoncer la sortie de Zephyr LTS V2. Et à notre communauté, je dis merci !
Ces efforts sont rendus possibles par les dizaines d’entreprises qui soutiennent le projet Zephyr. Pour savoir comment votre organisation peut s’impliquer, Cliquez ici
La poste Au cas où vous l’auriez manqué: version Zephyr LTS V2 est apparu en premier sur Fondation Linux.