Loaʻa ka waihona C maʻamau PicoLibc 1.1

ʻO Keith Packard, ka mea hoʻomohala Debian ikaika, alakaʻi o ka papahana X.Org a me ka mea nāna i hana i nā hoʻonui X he nui, me XRender, XComposite a me XRandR, hoopuka hoʻokuʻu ʻia kahi waihona C maʻamau hou PicoLibc 1.1, i hoʻomohala ʻia no ka hoʻohana ʻana i nā mea i hoʻopili ʻia me ka palena paʻa paʻa a me ka RAM. I ka wā o ka hoʻomohala ʻana, ua ʻaiʻē ʻia kekahi hapa o ke code mai ka waihona newlib mai ka papahana Cygwin a AVR Libc, hoʻomohala ʻia no nā microcontrollers Atmel AVR. PicoLibc code mahele ʻia e ma lalo o ka laikini BSD. Kākoʻo ʻia ka hui waihona no ARM (32-bit), i386, RISC-V, x86_64 a me PowerPC architectures.

Ua hoʻomaka ʻo Keith Packard i ka hoʻomohala ʻana ma hope o ka hiki ʻole ke loaʻa i kahi koho Libc maikaʻi e hiki ke hoʻohana ʻia ma nā polokalamu i hoʻopili ʻia me ka RAM liʻiliʻi. Ke ulu nei ka papahana mai ka makahiki i hala. I ka pae mua, he ʻano ʻokoʻa ka papahana o newlib, nā hana o stdio i hoʻololi ʻia me kahi mana paʻa mai avrlibc (ʻaʻole kūpono ʻo stdio in newlib no kāna hoʻohana waiwai kiʻekiʻe). ʻOiai ʻo ka hana a Keith i kēia manawa e pili ana i ka hana mau me ka RISC-V architecture a me ka hoʻomohala ʻana i nā mea hana no nā mea i hoʻopili ʻia, ua nānā hou ʻo ia i ka mokuʻāina o nā hoʻokō libc a ua hoʻoholo ʻo ia me ka liʻiliʻi liʻiliʻi, hiki i ka hui ʻana o newlib a me avrlibc ke kumu nui maikaʻi. hoʻonā. I ka hoʻomaka ʻana, ua hoʻomohala ʻia ka papahana ma lalo o ka inoa "newlib-nano", akā no ka pale ʻana i ka huikau me ka hale waihona puke ʻo Newlib ua kapa ʻia ʻo PicoLibc.

Ma kona ʻano i kēia manawa, ua hana mua ʻo Picolibc i ka hana e wehe i nā code āpau ʻaʻole i hāʻawi ʻia ma lalo o kahi laikini BSD (ʻaʻole i hoʻohana ʻia kēia code i ke kūkulu ʻana i nā mea i hoʻopili ʻia), ka mea i maʻalahi i ke kūlana me ka laikini no ka papahana. Ua hoʻoneʻe ʻia ka hoʻokō ʻana o nā kahawai kūloko mai 'struct _reent' i ka mīkini TLS (pae-lokal waihona). ʻO ka mana paʻa o stdio, i ʻaiʻē ʻia mai ka code library avrlibc, ua hoʻāla ʻia ma ke ʻano paʻamau (Ua kākau hou ʻia nā mea hoʻokomo kikoʻī ATmel ma C). Ua hoʻohana ʻia ka hāmeʻa Meson no ka hui ʻana, kahi i hiki ʻole ai ke hoʻopaʻa ʻia i nā palapala hōʻuluʻulu newlib a maʻalahi i ka hoʻololi ʻana i nā loli mai newlib. Hoʻohui ʻia kahi mana maʻalahi o ke code initialization (crt0), i hoʻopili ʻia i ka faila hiki ke hoʻokō ʻia a hoʻokō ʻia ma mua o ka hoʻololi ʻia ʻana o ka mana i ka hana nui ().

Ma Picolibc mana 1.1:

  • Hoʻohui ʻia ka waihona waihona kōkua e kākoʻo i ka ʻenehana "semihosting"ʻae ke code e holo ana i kahi debugger a i ʻole emulator environment e hoʻohana i nā ʻōnaehana I/O o ka ʻōnaehana;
  • No nā ʻōnaehana e kākoʻo ana i nā kelepona ʻōnaehana wehe, pani, heluhelu, a kākau, hoʻohui ʻo tinystdio i nā kikowaena POSIX stdio I/O maʻamau, me nā hana fopen a me fdopen, a me ka hoʻopaʻa ʻana i ka stdin/stdout/stderr i nā mea wehewehe faila i wehewehe ʻia e POSIX;
  • Ua lawe ʻia nā loli hou mai ka newlib codebase. Hoʻohui pū ʻia nā libm stubs no fenv.h, hiki ke hoʻohana ʻia ma nā ʻōnaehana me ke kākoʻo ʻole o ke kiko lana;
  • Hoʻohui i kahi laʻana o ke kūkulu ʻana i ka noi "Hello world" me picolibc no nā ʻōnaehana ARM a me RISC-V;
  • Wehe ʻia nā papa kuhikuhi newlib, libm a me mathfp, i loaʻa nā code hoʻokolohua i hoʻohana ʻole ʻia.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka