PicoLibc una biblioteca C para sistemas embebidos con recursos limitados

Embedded-C-

Keith Packard es un desarrollador activo de Debian y además es el líder del proyecto X.Org y además creador de muchas extensiones X, incluidas XRender, XComposite y XRandR. PicoLibc es otro de sus trabajos y esta es una biblioteca C que es desarrollada para su uso en dispositivos integrados con recursos limitados (es decir que cuentan con poco espacio de almacenamiento fijo y RAM). Durante el desarrollo, parte del código se tomó prestado de la biblioteca newlib del proyecto Cygwin y AVR Libc, que se desarrolló para los microcontroladores Atmel AVR.

Keith Packard comenzó el desarrollo después de que no pudo encontrar una versión decente de Libc, que podría usarse en dispositivos integrados con poca RAM. El proyecto se viene desarrollando desde el año pasado. En la primera etapa, el proyecto era una variante newlib, en la que las funciones stdio fueron reemplazadas por la versión compacta de avrlibc (stdio en newlib no se adaptaba al gran consumo de recursos).

Dado que las actividades actuales de China están relacionadas con el trabajo en curso con la arquitectura RISC-V y el desarrollo de herramientas para dispositivos integrados, recientemente revisó el estado de las implementaciones de libc y llegó a la conclusión de que, con un pequeño ajuste, la combinación de newlib y avrlibc puede ser una buena solución universal. Inicialmente, el proyecto se desarrolló bajo el nombre “newlib-nano”, pero para evitar confusiones con la biblioteca Newlib, se renombró a PicoLibc.

Sobre PicoLibc

En su forma actual, Picolibc ya ha realizado trabajos para eliminar todo el código que no se proporciona bajo la licencia BSD (este código no se utilizó en el ensamblaje para dispositivos integrados), lo que simplificó enormemente la situación con la licencia del proyecto.

La implementación de subprocesos locales se ha movido de ‘struct _reent’ al mecanismo TLS (almacenamiento local de subprocesos). La versión compacta de stdio se activa de forma predeterminada, tomada del código de la biblioteca avrlibc (las inserciones de ensamblador específicas de ATmel se reescriben en C).

Las herramientas de Meson se utilizan para la compilación, lo que permite no adjuntar los scripts de newlib y simplificar la transferencia de cambios desde newlib. Se ha agregado una versión simplificada del código de inicialización (crt0), se adjunta al archivo ejecutable y se ejecuta antes de transferir el control a la función main ().

El código fuente de PicoLibc es distribuido bajo una licencia BSD y la biblioteca es compatible con las arquitecturas ARM (32 bits), i386, RISC-V, x86_64 y PowerPC.

Sobre la nueva versión de PicoLibc 1.1

Hace poco presento el lanzamiento de la nueva versión de PicoLibc 1.1, en la cual se ha agregado una biblioteca auxiliar para admitir la tecnología de “semihosting”, que permite que el código que se ejecuta en el entorno de un depurador o emulador use mecanismos de entrada / salida del sistema host.

Para los sistemas que admiten llamadas de sistema de apertura, cierre, lectura y escritura, tinystdio agrega interfaces de E/S POSIX estandarizadas, incluidas las funciones fopen y fdopen, así como la vinculación de stdin/stdout/stderr a descriptores de archivo definidos por POSIX.

  • Se han transferido los cambios recientes de la base del código newlib. Incluyendo stubs de libm adicionales para fenv.h, que se pueden usar en sistemas sin soporte para cálculos.
  • Se agregó el ejemplo de compilación de la aplicación Hello World con picolibc para sistemas ARM y RISC-V, ademas de que se eliminaron los directorios newlib, libm y mathfp que contenían código experimental no utilizado.

Comenzar a utilizar Picolibc

Para poder comenzar a utilizar Picolibc, deben saber que este hace uso del sistema de compilación meson para compilar para varias plataformas de hardware en un host Linux usando GCC. Es por ello que deben contar con meson como parte del entorno de desarrollo, además de que deben contar con Python 3 y Ninja instalados. Para ello pueden consultar la guía de ello en el siguiente enlace. 

Finalmente para poder obtener el código de Picolibc lo pueden hacer desde el siguiente enlace, donde podrán encontrar la documentación necesaria. 

O de igual forma pueden consultar la siguiente guía que encontré en la red y tiene información detallada.

Sé el primero en comentar

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.