PicoLibc a library untuk sistem tertanam dengan sumber yang terhad

Terbenam-C-

Keith Packard adalah pemaju Debian yang aktif dan ia juga Ketua projek X.Org dan juga pencipta banyak sambungan X, termasuk XRender, XComposite, dan XRandR. PicoLibc adalah karya lain dan ini adalah perpustakaan C yang dikembangkan untuk digunakan dalam peranti tertanam dengan sumber yang terhad (iaitu, mereka mempunyai sedikit ruang simpanan tetap dan RAM). Semasa pembangunan, beberapa kod dipinjam dari perpustakaan newlib projek Cygwin dan AVR Libc, yang dikembangkan untuk mikrokontroler Atmel AVR.

Keith Packard memulakan pengembangan setelah dia tidak dapat menemukan versi Libc yang layak, yang dapat digunakan pada perangkat tertanam dengan RAM rendah. Projek ini telah dibangunkan sejak tahun lalu. Pada peringkat pertama, projek itu adalah varian newlib, di mana fungsi stdio digantikan oleh versi ringkas avrlibc (stdio di newlib tidak disesuaikan dengan penggunaan sumber yang banyak).

Oleh kerana aktiviti semasa China berkaitan dengan pekerjaan yang berterusan mengenai seni bina RISC-V dan pengembangan alat untuk peranti tertanam, baru-baru ini memeriksa status pelaksanaan libc y membuat kesimpulan dari apa, dengan sedikit perubahan, gabungan newlib dan avrlibc dapat menjadi penyelesaian universal yang baik. Pada mulanya, proyek ini dikembangkan dengan nama "newlib-nano", tetapi untuk mengelakkan kekeliruan dengan perpustakaan Newlib, proyek itu diganti menjadi PicoLibc.

Mengenai PicoLibc

Dalam bentuknya sekarang, Picolibc telah melakukan kerja untuk membuang semua kod yang tidak disediakan di bawah lesen BSD (Kod ini tidak digunakan dalam pemasangan untuk peranti tertanam), yang sangat memudahkan keadaan dengan lesen projek.

Pelaksanaan Thread local telah dipindahkan dari mekanisme 'struct _reent' ke TLS (Thread Local Storage). Versi ringkas stdio diaktifkan secara lalai, diambil dari kod perpustakaan avrlibc (sisipan assembler khusus ATmel ditulis semula dalam C).

Alat Meson digunakan untuk penyusunan, apa membolehkan anda tidak melampirkan skrip newlib dan mempermudah pemindahan perubahan dari newlib. Versi yang disederhanakan dari kod inisialisasi (crt0) telah ditambahkan, dilampirkan ke file yang dapat dieksekusi, dan dilaksanakan sebelum memindahkan kontrol ke fungsi utama ().

Kod sumber PicoLibc diedarkan di bawah lesen BSD dan Perpustakaan menyokong seni bina ARM (32-bit), i386, RISC-V, x86_64, dan PowerPC.

Mengenai versi baru PicoLibc 1.1

Saya baru-baru ini membentangkan pelepasan versi baru PicoLibc 1.1, di mana perpustakaan pembantu telah ditambahkan untuk menyokong teknologi semi-hosting, A yang membolehkan kod berjalan di persekitaran debugger atau emulator untuk menggunakan mekanisme input / output dari sistem host.

Untuk sistem yang menyokong buka, tutup, baca dan tulis panggilan sistem, tinystdio menambah antara muka POSIX I / O standard, termasuk fungsi fopen dan fdopen, serta pengikatan stdin / stdout / stderr ke deskriptor fail yang ditentukan POSIX.

  • Perubahan terkini telah dibawa dari pangkalan kod newlib. Termasuk stub libm tambahan untuk fenv.h, yang dapat digunakan pada sistem tanpa sokongan pengiraan.
  • Menambah contoh kompilasi aplikasi Hello World dengan picolibc untuk sistem ARM dan RISC-V, selain membuang direktori newlib, libm, dan mathfp yang mengandungi kod eksperimen yang tidak digunakan.

Mula menggunakan Picolibc

Untuk memulakan Picolibc, anda harus tahu bahawa Picolibc menggunakan sistem build meson untuk menyusun pelbagai platform perkakasan pada host Linux menggunakan GCC. Itulah sebabnya mereka mesti mempunyai meson sebagai bagian dari lingkungan pengembangan, selain memasang Python 3 dan Ninja. Untuk ini, anda boleh merujuk panduannya Dalam pautan berikut. 

Akhirnya, untuk mendapatkan kod Picolibc, anda boleh melakukannya dari pautan berikut, di mana anda boleh mendapatkannya dokumentasi yang diperlukan. 

Atau dengan cara yang sama mereka boleh berunding panduan berikut yang saya dapati di internet dan mempunyai maklumat terperinci.