PicoLibc ett C-bibliotek för inbäddade system med begränsade resurser

Inbäddad-C-

Keith Packard är en aktiv Debian-utvecklare och det är också X.Org projektledare och också skapare av många X-tillägg, inklusive XRender, XComposite och XRandR. PicoLibc är en annan av hans verk och detta är ett C-bibliotek som är utvecklad för användning i inbäddade enheter med begränsade resurser (det vill säga de har lite fast lagringsutrymme och RAM). Under utvecklingen lånades en del av koden från Cygwin och AVR Libc-projektets newlib-bibliotek, som utvecklades för Atmel AVR-mikrokontroller.

Keith Packard startade utvecklingen efter att han inte kunde hitta en anständig version av Libc, som kunde användas på inbyggda enheter med lågt RAM-minne. Projektet har utvecklats sedan förra året. I det första steget, projektet var en newlib-variant, där stdio-funktionerna ersattes av den kompakta versionen av avrlibc (stdio i newlib anpassades inte till den stora resursförbrukningen).

Eftersom Kinas nuvarande aktiviteter är relaterade till pågående arbete med RISC-V-arkitektur och utveckling av verktyg för inbäddade enheter, nyligen kontrollerat status för libc-implementeringar y avslutade av vad, med en liten tweak kan kombinationen av newlib och avrlibc vara en bra universell lösning. Ursprungligen utvecklades projektet under namnet "newlib-nano", men för att undvika förvirring med Newlib-biblioteket döptes det om till PicoLibc.

Om PicoLibc

I sin nuvarande form, Picolibc har redan gjort arbete för att ta bort all kod som inte tillhandahålls under BSD-licensen (Den här koden användes inte i monteringen för inbäddade enheter), vilket förenklar situationen kraftigt med projektlicensen.

Trådens lokala implementering har flyttats från 'struct _reent' till TLS (thread local storage) -mekanism. Den kompakta versionen av stdio är aktiverad som standard, hämtad från avrlibc-bibliotekskoden (ATmel-specifika monteringsinsatser skrivs om i C).

Verktygen för Meson används för sammanställning, Vad låter dig inte bifoga newlib-skript och förenkla överföring av ändringar från newlib. En förenklad version av initialiseringskoden (crt0) har lagts till, bifogas den körbara filen och körs innan kontrollen överförs till huvudfunktionen ().

Källkoden för PicoLibc distribueras under en BSD-licens och Biblioteket stöder ARM (32-bitars), i386, RISC-V, x86_64 och PowerPC-arkitekturer.

Om den nya versionen av PicoLibc 1.1

Jag presenterade nyligen lanseringen av den nya versionen av PicoLibc 1.1, i vilken ett hjälparbibliotek har lagts till för att stödja semi-hosting-teknik, A som tillåter kod som körs i en felsöknings- eller emulatormiljö för att använda in- / utgångsmekanismer från värdsystemet.

För system som stöder öppna, stänga, läsa och skriva systemanrop, tinystdio lägger till standardiserade POSIX I / O-gränssnitt, inklusive fopen- och fdopen-funktioner, samt bindning av stdin / stdout / stderr till POSIX-definierade filbeskrivare.

  • Senaste ändringar har överförts från newlib-kodbasen. Inklusive ytterligare libm-stubbar för fenv.h, som kan användas på system utan beräkningsstöd.
  • Lade till Hello World-applikationens sammanställningsexempel med picolibc för ARM- och RISC-V-system, förutom att ta bort katalogerna newlib, libm och mathfp som innehöll oanvänd experimentkod.

Börja använda Picolibc

För att komma igång med Picolibc bör du veta att Picolibc använder sig av meson build-systemet för att kompilera för olika hårdvaruplattformar på en Linux-värd med GCC. Det är därför de måste ha meson som en del av utvecklingsmiljön, förutom att Python 3 och Ninja är installerade. För detta kan du läsa guiden för den I följande länk. 

Slutligen, för att få Picolibc-koden, kan du göra det från följande länk, där du kan hitta nödvändig dokumentation. 

Eller på samma sätt som de kan rådfråga följande guide hittade jag på nätet och har detaljerad information.


Bli först att kommentera

Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.