ไลบรารี C มาตรฐาน PicoLibc 1.1 พร้อมใช้งาน

Keith Packard นักพัฒนา Debian ที่กระตือรือร้น ผู้นำโครงการ X.Org และผู้สร้างส่วนขยาย X มากมาย รวมถึง XRender, XComposite และ XRandR ส่ง การเปิดตัวไลบรารี C มาตรฐานใหม่ PicoLibc 1.1ได้รับการพัฒนาเพื่อใช้บนอุปกรณ์ฝังตัวที่มีพื้นที่จัดเก็บถาวรและ RAM ที่จำกัด ในระหว่างการพัฒนา โค้ดบางส่วนถูกยืมมาจากห้องสมุด ใหม่ จากโครงการ Cygwin และ เอวีอาร์ ลิบซีพัฒนาขึ้นสำหรับไมโครคอนโทรลเลอร์ Atmel AVR รหัส PicoLibc จัดจำหน่ายโดย ภายใต้ใบอนุญาต BSD ชุดประกอบไลบรารีได้รับการสนับสนุนสำหรับสถาปัตยกรรม ARM (32 บิต), i386, RISC-V, x86_64 และ PowerPC

Keith Packard เริ่มการพัฒนาหลังจากไม่พบตัวเลือก Libc ที่เหมาะสมที่สามารถใช้กับอุปกรณ์ฝังตัวที่มี RAM เพียงเล็กน้อยได้ โครงการได้รับการพัฒนาตั้งแต่ปีที่แล้ว ในระยะแรก โครงการนี้เป็นตัวแปรของ newlib ซึ่งเป็นฟังก์ชันของ stdio ซึ่งถูกแทนที่ด้วยเวอร์ชันกะทัดรัดจาก avrlibc (stdio ใน newlib ไม่เหมาะสำหรับการใช้ทรัพยากรสูง) เนื่องจากงานปัจจุบันของ Keith เกี่ยวข้องกับการทำงานอย่างต่อเนื่องกับสถาปัตยกรรม RISC-V และการพัฒนาเครื่องมือสำหรับอุปกรณ์ฝังตัว เขาเพิ่งตรวจสอบสถานะของการใช้งาน libc และสรุปว่าด้วยการปรับแต่งเล็กน้อย การรวมกันของ newlib และ avrlibc อาจเป็นวัตถุประสงค์ทั่วไปที่ดี สารละลาย. เริ่มแรก โครงการพัฒนาภายใต้ชื่อ "newlib-nano" แต่เพื่อหลีกเลี่ยงความสับสนกับไลบรารี Newlib จึงได้เปลี่ยนชื่อเป็น PicoLibc

ในรูปแบบปัจจุบัน Picolibc ได้ดำเนินการลบโค้ดทั้งหมดที่ไม่ได้ให้มาภายใต้ใบอนุญาต BSD แล้ว (รหัสนี้ไม่ได้ใช้เมื่อสร้างสำหรับอุปกรณ์ฝังตัว) ซึ่งทำให้สถานการณ์ง่ายขึ้นอย่างมากด้วยใบอนุญาตสำหรับโครงการ การใช้งานสตรีมท้องถิ่นถูกย้ายจาก 'struct _reent' ไปยังกลไก TLS (ที่เก็บข้อมูลภายในเธรด). stdio เวอร์ชันกะทัดรัดที่ยืมมาจากโค้ดไลบรารี avrlibc ถูกเปิดใช้งานตามค่าเริ่มต้น (ส่วนแทรกแอสเซมเบลอร์เฉพาะ ATmel จะถูกเขียนใหม่ในภาษา C) ชุดเครื่องมือ Meson ใช้สำหรับการประกอบ ซึ่งทำให้ไม่สามารถเชื่อมโยงกับสคริปต์แอสเซมบลี newlib และทำให้การถ่ายโอนการเปลี่ยนแปลงจาก newlib ง่ายขึ้น เพิ่มเวอร์ชันที่เรียบง่ายของรหัสการเริ่มต้น (crt0) ที่แนบมากับไฟล์ปฏิบัติการและดำเนินการก่อนที่จะถ่ายโอนการควบคุมไปยังฟังก์ชัน main()

ใน Picolibc เวอร์ชัน 1.1:

  • เพิ่มไลบรารี่เสริมเพื่อรองรับเทคโนโลยี”กึ่งโฮสติ้ง"อนุญาตให้โค้ดทำงานในสภาพแวดล้อมดีบักเกอร์หรือโปรแกรมจำลองเพื่อใช้กลไก I/O ของระบบโฮสต์
  • สำหรับระบบที่รองรับการเรียกระบบแบบเปิด ปิด อ่านและเขียน Tinystdio เพิ่มอินเทอร์เฟซ POSIX stdio I/O มาตรฐาน รวมถึงฟังก์ชัน fopen และ fdopen รวมถึงการผูก stdin/stdout/stderr เข้ากับตัวอธิบายไฟล์ที่กำหนดโดย POSIX
  • การเปลี่ยนแปลงล่าสุดจาก codebase newlib ได้ถูกยกยอดไปแล้ว รวมถึงเพิ่ม libm stubs สำหรับ เฟนวี.เอชซึ่งสามารถใช้กับระบบที่ไม่รองรับจุดลอยตัว
  • เพิ่มตัวอย่างการสร้างแอปพลิเคชั่น “Hello world” ด้วย picolibc สำหรับระบบ ARM และ RISC-V
  • ลบไดเร็กทอรี newlib, libm และ mathfp ซึ่งมีโค้ดทดลองที่ไม่ได้ใช้

ที่มา: opennet.ru

เพิ่มความคิดเห็น