PicoLibc مكتبة C للأنظمة المدمجة ذات الموارد المحدودة

المضمنة- C-

Keith Packard هو مطور ديبيان نشط وهو أيضًا X.Org قائد المشروع و أيضا الخالق من العديد من امتدادات X.، بما في ذلك XRender و XComposite و XRandR. PicoLibc هو آخر من أعماله وهذه مكتبة C تم تطويره للاستخدام في الأجهزة المدمجة بموارد محدودة (أي أن لديهم القليل من مساحة التخزين الثابتة وذاكرة الوصول العشوائي). أثناء التطوير ، تم استعارة بعض الكود من مكتبة newlib لمشروع Cygwin و AVR Libc ، والتي تم تطويرها لوحدات التحكم الدقيقة Atmel AVR.

بدأ Keith Packard التطوير بعد أن لم يتمكن من العثور على إصدار لائق من Libc ، والذي يمكن استخدامه على الأجهزة المدمجة ذات ذاكرة الوصول العشوائي المنخفضة. تم تطوير المشروع منذ العام الماضي. في المرحلة الأولى ، كان المشروع متغيرًا جديدًا، حيث تم استبدال وظائف stdio بالإصدار المضغوط من avrlibc (لم يتم تكييف stdio في newlib مع الاستهلاك الكبير للموارد).

نظرًا لأن الأنشطة الحالية للصين مرتبطة بالعمل الجاري في بنية RISC-V وتطوير أدوات للأجهزة المدمجة مؤخرًا فحص حالة تطبيقات libc y انتهى من ماذا، مع القليل من التعديل ، يمكن أن يكون الجمع بين newlib و avrlibc حلاً شاملاً جيدًا. في البداية ، تم تطوير المشروع تحت اسم "newlib-nano" ، ولكن لتجنب الخلط بينه وبين مكتبة Newlib ، تمت إعادة تسميته إلى PicoLibc.

حول PicoLibc

في شكله الحالي ، قام Picolibc بالفعل بعمل لإزالة كل التعليمات البرمجية التي لم يتم توفيرها بموجب ترخيص BSD (لم يتم استخدام هذا الرمز في التجميع للأجهزة المدمجة) ، مما أدى إلى تبسيط الموقف بشكل كبير مع ترخيص المشروع.

تم نقل التنفيذ المحلي لسلسلة الرسائل من آلية "Struct _reent" إلى آلية TLS (التخزين المحلي للخيط). يتم تمكين الإصدار المضغوط من stdio بشكل افتراضي ، مأخوذ من رمز مكتبة avrlibc (تتم إعادة كتابة إدخالات المجمّع الخاص بـ ATmel في C).

أدوات تستخدم ميزون للتجميع، ماذا يسمح لك بعدم إرفاق نصوص newlib وتبسيط نقل التغييرات من newlib. تمت إضافة نسخة مبسطة من كود التهيئة (crt0) ، وإرفاقها بالملف القابل للتنفيذ ، وتنفيذها قبل نقل التحكم إلى الوظيفة الرئيسية ().

يتم توزيع الكود المصدري لـ PicoLibc بموجب ترخيص BSD و تدعم المكتبة معماريات ARM (32 بت) و i386 و RISC-V و x86_64 و PowerPC.

حول الإصدار الجديد من PicoLibc 1.1

لقد قدمت مؤخرًا إصدار الإصدار الجديد من PicoLibc 1.1 ، حيث تمت إضافة مكتبة مساعدة لدعم تقنية الاستضافة شبه ، يسمح بتشغيل الكود في مصحح أخطاء أو بيئة محاكي لاستخدام آليات الإدخال / الإخراج من النظام المضيف.

بالنسبة للأنظمة التي تدعم مكالمات النظام المفتوحة والإغلاق والقراءة والكتابة ، tinystdio يضيف واجهات POSIX I / O القياسية ، بما في ذلك وظائف fopen و fdopen ، بالإضافة إلى ربط stdin / stdout / stderr بواصفات الملفات المعرفة من POSIX.

  • تم ترحيل التغييرات الأخيرة من قاعدة كود newlib. بما في ذلك بذرة libm إضافية لـ fenv.h ، والتي يمكن استخدامها على الأنظمة دون دعم الحساب.
  • تمت إضافة مثال تجميع تطبيق Hello World مع picolibc لأنظمة ARM و RISC-V ، بالإضافة إلى إزالة أدلة newlib و libm و mathfp التي تحتوي على كود تجريبي غير مستخدم.

ابدأ باستخدام Picolibc

لبدء استخدام Picolibc ، يجب أن تعلم أن Picolibc يستخدم نظام بناء الميزون للتجميع لأنظمة أساسية مختلفة للأجهزة على مضيف Linux باستخدام GCC. لهذا السبب يجب أن يكون لديهم ميزون كجزء من بيئة التطوير ، بالإضافة إلى تثبيت Python 3 و Ninja. لهذا يمكنك الرجوع إلى دليل ذلك في الرابط التالي. 

أخيرًا ، من أجل الحصول على كود Picolibc ، يمكنك القيام بذلك من الرابط التالي ، حيث يمكنك العثور عليه الوثائق اللازمة. 

أو بنفس الطريقة التي يمكنهم التشاور بها الدليل التالي وجدته على الشبكة ولديها معلومات مفصلة.


اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.