Standard C ìkàwé PicoLibc 1.1 wa

Keith Packard, olupilẹṣẹ Debian ti nṣiṣe lọwọ, adari iṣẹ akanṣe X.Org ati ẹlẹda ti ọpọlọpọ awọn amugbooro X, pẹlu XRender, XComposite ati XRandR, ṣafihan Tu ti titun kan boṣewa C ìkàwé PicoLibc 1.1, idagbasoke fun lilo lori ifibọ awọn ẹrọ pẹlu opin yẹ ibi ipamọ ati Ramu. Lakoko idagbasoke, apakan koodu ti ya lati ile-ikawe naa titunlib lati Cygwin ise agbese ati AVR Libc, idagbasoke fun Atmel AVR microcontrollers. PicoLibc koodu pin nipasẹ labẹ BSD iwe-ašẹ. Apejọ ile-ikawe jẹ atilẹyin fun ARM (32-bit), i386, RISC-V, x86_64 ati awọn faaji PowerPC.

Keith Packard bẹrẹ idagbasoke lẹhin ti ko lagbara lati wa aṣayan Libc to bojumu ti o le ṣee lo lori awọn ẹrọ ti a fi sii pẹlu Ramu kekere. Ise agbese na ti ni idagbasoke lati ọdun to koja. Ni ipele akọkọ, iṣẹ akanṣe jẹ iyatọ ti newlib, awọn iṣẹ ti stdio ninu eyiti a rọpo pẹlu ẹya iwapọ lati avrlibc (stdio ni newlib ko dara fun agbara awọn orisun giga rẹ). Niwọn igba ti iṣẹ lọwọlọwọ Keith pẹlu iṣẹ ti nlọ lọwọ pẹlu faaji RISC-V ati idagbasoke ti irinṣẹ fun awọn ẹrọ ti a fi sii, laipẹ o ṣe atunyẹwo ipo ti awọn imuse libc o pinnu pe pẹlu tweaking kekere kan, apapọ ti newlib ati avrlibc le jẹ idi gbogbogbo ti o dara. ojutu. Ni ibere, ise agbese na ni idagbasoke labẹ awọn orukọ "newlib-nano", sugbon lati yago fun iporuru pẹlu Newlib ìkàwé ti o ti lorukọmii PicoLibc.

Ni fọọmu lọwọlọwọ rẹ, Picolibc ti ṣe iṣẹ tẹlẹ lati yọ gbogbo koodu kuro ti a ko pese labẹ iwe-aṣẹ BSD (koodu ko lo nigba kikọ fun awọn ẹrọ ifibọ), eyiti o ti jẹ ki ipo naa di irọrun pẹlu iwe-aṣẹ fun iṣẹ akanṣe naa. Imuse ti awọn ṣiṣan agbegbe ti gbe lati 'struct _reent' si ẹrọ TLS (o tẹle-ipamọ agbegbe). Ẹya iwapọ ti stdio, ti o ya lati koodu ikawe avrlibc, ti muu ṣiṣẹ nipasẹ aiyipada (awọn ifibọ apejọ kan pato ti ATmel ni a tun kọ ni C). Ohun elo irinṣẹ Meson ni a lo fun apejọ, eyiti o jẹ ki o ṣee ṣe lati ma so mọ awọn iwe afọwọkọ apejọ newlib ati lati ṣe irọrun gbigbe awọn ayipada lati newlib. Ṣe afikun ẹya irọrun ti koodu ibẹrẹ (crt0), ti o somọ faili ti o le ṣiṣẹ ati ṣiṣe ṣaaju gbigbe iṣakoso si iṣẹ akọkọ ().

Ninu ẹya Picolibc 1.1:

  • Ṣafikun ile-ikawe oluranlọwọ lati ṣe atilẹyin imọ-ẹrọ naa "semihosting" faye gba koodu nṣiṣẹ ni a debugger tabi emulator ayika lati lo awọn ogun eto I/O ise sise;
  • Fun awọn ọna ṣiṣe ti o ṣe atilẹyin ṣiṣi, sunmọ, kika, ati kikọ awọn ipe eto, tinystdio ṣe afikun awọn atọkun POSIX stdio I / O ti o ni idiwọn, pẹlu awọn iṣẹ fopen ati fdopen, bakanna bi binding stdin / stdout / stderr si awọn asọye faili asọye POSIX;
  • Awọn ayipada aipẹ lati koodu koodu newlib ti wa ni gbigbe. Pẹlu afikun libm stubs fun fev.h, eyi ti o le ṣee lo lori awọn ọna šiše lai lilefoofo ojuami support;
  • Ṣe afikun apẹẹrẹ ti kikọ ohun elo “Hello aye” pẹlu picolibc fun awọn ọna ARM ati RISC-V;
  • Yọọ kuro ni newlib, libm ati awọn ilana mathfp, eyiti o ni koodu esiperimenta ti ko lo ninu.

orisun: opennet.ru

Fi ọrọìwòye kun