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

Indlejret-C-

Keith Packard er en aktiv Debian-udvikler og det er også X.Org projektleder og også skaberen af mange X-udvidelser, inklusive 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 (dvs. de har lidt fast lagerplads og RAM). Under udviklingen blev en del af koden lånt fra Cygwin og AVR Libc-projektets newlib-bibliotek, 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å indbyggede 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 var ikke tilpasset det tunge forbrug af ressourcer).

Da Kinas nuværende aktiviteter er relateret til løbende arbejde med RISC-V-arkitektur og udvikling af værktøjer til indlejrede enheder for nylig kontrolleret status for libc-implementeringer y konkluderede af hvad, med en lille tweak kan kombinationen af ​​newlib og avrlibc være en god universal løsning. Oprindeligt 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 gjort arbejde for at fjerne al kode, der ikke er angivet under BSD-licensen (Denne kode blev ikke brugt i samlingen til integrerede enheder), hvilket i høj grad forenklede situationen med projektlicensen.

Trådens lokale implementering er flyttet fra 'struct _reent' til TLS-mekanisme (Thread Local Storage). Den kompakte version af stdio er som standard aktiveret, taget fra avrlibc-bibliotekkoden (ATmel-specifikke samlerindsatser omskrives i C).

Værktøjerne til Meson bruges til kompilering, hvad giver dig mulighed for ikke at vedhæfte newlib-scripts og forenkle overførsel af ændringer fra newlib. En forenklet version af initialiseringskoden (crt0) er blevet tilføjet, knyttet til den eksekverbare fil og udført, før kontrol overføres til hovedfunktionen ().

Kildekoden til PicoLibc 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 frigivelsen af ​​den nye version af PicoLibc 1.1, hvor der er tilføjet et hjælperbibliotek til understøttelse af semi-hosting-teknologi En, der gør det muligt for kode, der kører i et fejlfindings- eller emulatormiljø, 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 filbeskrivere.

  • Nylige ændringer er blevet overført fra newlib-kodebasen. Inkluderet yderligere libm-stubs til fenv.h, som kan bruges på systemer uden beregningsunderstøttelse.
  • Tilføjede Hello World-applikationseksemplet med picolibc til ARM- og RISC-V-systemer ud over at fjerne de newlib-, libm- og mathfp-mapper, der indeholdt ubrugt eksperimentel kode.

Begynd at bruge Picolibc

For at komme i gang med Picolibc, skal du vide, at Picolibc bruger 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 ud over at have Python 3 og Ninja installeret. For dette kan du se vejledningen til det I det følgende link. 

Endelig 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 som de kan konsultere følgende vejledning fandt jeg på nettet og har detaljerede oplysninger.


Indholdet af artiklen overholder vores principper for redaktionel etik. Klik på for at rapportere en fejl her.

Vær den første til at kommentere

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.