Bibliothèque standard C PicoLibc 1.1 disponible

Keith Packard, développeur Debian actif, leader du projet X.Org et créateur de nombreuses extensions X, dont XRender, XComposite et XRandR, представил sortie d'une nouvelle bibliothèque standard C PicoLibc 1.1, développé pour être utilisé sur des appareils embarqués avec un stockage permanent et une RAM limités. Lors du développement, une partie du code a été empruntée à la bibliothèque nouvellelib du projet Cygwin et AVR Libc, développé pour les microcontrôleurs Atmel AVR. Code PicoLibc distribué par sous licence BSD. L'assemblage de bibliothèques est pris en charge pour les architectures ARM (32 bits), i386, RISC-V, x86_64 et PowerPC.

Keith Packard a commencé le développement après avoir été incapable de trouver une option Libc décente pouvant être utilisée sur des appareils embarqués avec peu de RAM. Le projet se développe depuis l'année dernière. Dans un premier temps, le projet était une variante de newlib, dont les fonctions de stdio ont été remplacées par une version compacte d'avrlibc (stdio dans newlib n'était pas adapté à sa forte consommation de ressources). Étant donné que le travail actuel de Keith implique un travail continu sur l'architecture RISC-V et le développement d'outils pour les périphériques embarqués, il a récemment passé en revue l'état des implémentations de la libc et a conclu qu'avec quelques ajustements, la combinaison de newlib et avrlibc pourrait être une bonne solution à usage général. solution. Initialement, le projet s'est développé sous le nom de « newlib-nano », mais pour éviter toute confusion avec la bibliothèque Newlib, il a été renommé PicoLibc.

Dans sa forme actuelle, Picolibc a déjà travaillé pour supprimer tout le code qui n'est pas fourni sous licence BSD (ce code n'a pas été utilisé lors de la construction pour les appareils embarqués), ce qui a considérablement simplifié la situation avec la licence du projet. L'implémentation des flux locaux a été déplacée de 'struct _reent' vers le mécanisme TLS (stockage local par thread). La version compacte de stdio, empruntée au code de la bibliothèque avrlibc, est activée par défaut (les inserts assembleur spécifiques à ATmel sont réécrits en C). La boîte à outils Meson a été utilisée pour l'assemblage, ce qui a permis de ne pas être lié aux scripts d'assemblage newlib et de simplifier le transfert des modifications depuis newlib. Ajout d'une version simplifiée du code d'initialisation (crt0), attaché au fichier exécutable et exécuté avant que le contrôle ne soit transféré à la fonction main().

Dans Picolibc version 1.1 :

  • Ajout d'une bibliothèque auxiliaire pour prendre en charge la technologie "semi-hébergement"permet au code exécuté dans un environnement de débogueur ou d'émulateur d'utiliser les mécanismes d'E/S du système hôte ;
  • Pour les systèmes prenant en charge les appels système d'ouverture, de fermeture, de lecture et d'écriture, tinystdio ajoute des interfaces d'E/S stdio POSIX standardisées, y compris les fonctions fopen et fdopen, ainsi que la liaison stdin/stdout/stderr aux descripteurs de fichiers définis par POSIX ;
  • Les modifications récentes de la base de code newlib ont été reportées. Y compris les stubs libm ajoutés pour fenv.h, qui peut être utilisé sur des systèmes sans support de virgule flottante ;
  • Ajout d'un exemple de création de l'application « Hello world » avec picolibc pour les systèmes ARM et RISC-V ;
  • Suppression des répertoires newlib, libm et mathfp, qui contenaient du code expérimental inutilisé.

Source: opennet.ru

Ajouter un commentaire