PicoLibc et C-bibliotek til indlejrede systemer med begrænsede ressourcer

Indlejret-C-

Keith Packard er en aktiv Debian-udvikler. og det er han også X.Org projektleder og plus skaber af mange X-udvidelser, herunder XRender, XComposite og XRandR. PicoLibc er et andet af hans værker og dette er et C-bibliotek som er udviklet til brug i indlejrede enheder med begrænsede ressourcer (det vil sige, at de har lidt fast lagerplads og RAM). Under udviklingen blev noget af koden lånt fra newlib-biblioteket fra Cygwin-projektet og AVR Libc, som blev udviklet til Atmel AVR-mikrocontrollere.

Keith Packard startede udviklingen efter at han ikke kunne finde en anstændig version af Libc, som kunne bruges på indlejrede enheder med lav RAM. Projektet har været under udvikling siden sidste år. I første fase projektet var en newlib-variant, hvor stdio-funktionerne blev erstattet af den kompakte version af avrlibc (stdio i newlib rummede ikke det store ressourceforbrug).

Da Kinas nuværende aktiviteter er relateret til det igangværende arbejde med RISC-V-arkitekturen og udviklingen af ​​værktøjer til indlejrede enheder, for nylig gennemgået status for libc-implementeringer y kom til konklusionen om hvad, med en lille justering kan kombinationen af ​​newlib og avrlibc være en god universel løsning. I første omgang blev projektet udviklet under navnet "newlib-nano", men for at undgå forveksling med Newlib-biblioteket blev det omdøbt til PicoLibc.

Om PicoLibc

I sin nuværende form Picolibc har allerede arbejdet på at fjerne al kode, der ikke er leveret under BSD-licensen. (denne kode blev ikke brugt i samlingen til indlejrede enheder), hvilket i høj grad forenklede situationen med licensen til projektet.

Den lokale trådimplementering er blevet flyttet fra 'struct _reent' til TLS-mekanismen (tråd lokal lagring). Den kompakte version af stdio er aktiveret som standard, taget fra avrlibc-bibliotekskoden (ATmel-specifikke assembler-indlæg omskrives i C).

Værktøjerne til Meson bruges til kompilering, hvad tillader ikke at vedhæfte newlib-scripts og forenkler overførsel af ændringer fra newlib. En forenklet version af initialiseringskoden (crt0) er blevet tilføjet, er knyttet til den eksekverbare fil og udføres, før kontrollen overføres til main()-funktionen.

PicoLibc-kildekoden distribueres under en BSD-licens og biblioteket understøtter ARM (32-bit), i386, RISC-V, x86_64 og PowerPC arkitekturer.

Om den nye version af PicoLibc 1.1

Jeg præsenterede for nylig udgivelsen af ​​den nye version af PicoLibc 1.1, hvori et hjælpebibliotek er blevet tilføjet for at understøtte semi-hosting-teknologi, som tillader kode, der kører i et debugger- eller emulatormiljø, for at bruge input/output-mekanismer fra værtssystemet.

For systemer, der understøtter åbne, lukke, læse og skrive systemopkald, tinystdio tilføjer standardiserede POSIX I/O-grænseflader, inklusive fopen- og fdopen-funktionerne, samt binding af stdin/stdout/stderr til POSIX-definerede filbeskrivelser.

  • Seneste ændringer til newlib-kodebasen er blevet overført. Inklusiv yderligere libm stubs til fenv.h, som kan bruges på systemer uden computerunderstøttelse.
  • Tilføjede Hello World-applikationsopbygningseksemplet med picolibc til ARM- og RISC-V-systemer og fjernede mapperne newlib, libm og mathfp, der indeholdt ubrugt eksperimentel kode.

Kom godt i gang med Picolibc

For at komme i gang med Picolibc, skal du vide, at det gør brug af meson build-systemet til at kompilere til forskellige hardwareplatforme på en Linux-vært ved hjælp af GCC. Derfor skal de have meson som en del af udviklingsmiljøet, foruden at have Python 3 og Ninja installeret. Til dette kan du konsultere vejledningen til det I det følgende link. 

Til sidst, for at få Picolibc-koden, kan du gøre det fra følgende link, hvor du kan finde den nødvendige dokumentation. 

Eller på samme måde kan du rådføre dig følgende guide fandt jeg på nettet og har detaljerede oplysninger.


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.