شجرة الأجهزة

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

تم اشتقاق شجرة الأجهزة من أجهزة الكمبيوتر القائمة على معالجات SPARC و PowerPC عبر مشروع Open Firmware . تستهدف مواصفات شجرة الأجهزة الحالية [ 1 ] الأنظمة الأصغر حجمًا والأنظمة المدمجة، ولكنها لا تزال تُستخدم مع بعض أنظمة الخوادم (على سبيل المثال، تلك الموصوفة في مرجع منصة Power Architecture ).

لا تستخدم الحواسيب الشخصية ذات بنية x86 عادةً شجرة الأجهزة، بل تعتمد على بروتوكولات التكوين التلقائي المختلفة (مثل ACPI ) لاكتشاف المكونات المادية. أما الأنظمة التي تستخدم شجرة الأجهزة، فعادةً ما تُمرر شجرة أجهزة ثابتة (ربما مخزنة في ذاكرة EEPROM ، أو في ذاكرة NAND مثل eUFS ) إلى نظام التشغيل، ولكنها قادرة أيضًا على إنشاء شجرة أجهزة في المراحل الأولى من عملية الإقلاع . على سبيل المثال، يمكن لبرنامجي Das U-Boot و kexec تمرير شجرة أجهزة عند تشغيل نظام تشغيل جديد. في الأنظمة التي لا يدعم مُحمل الإقلاع فيها شجرة الأجهزة، قد يتم تثبيت شجرة أجهزة ثابتة مع نظام التشغيل؛ وتدعم نواة لينكس هذا الأسلوب.

تتم إدارة مواصفات Devicetree حاليًا بواسطة مجتمع يسمى devicetree.org ، وهو مرتبط، من بين أمور أخرى، بشركتي Linaro و Arm .

التنسيقات

يمكن لشجرة الجهاز أن تحتوي على أي نوع من البيانات لأنها في جوهرها شجرة من العقد والخصائص المسماة . تحتوي العقد على خصائص وعقد فرعية، بينما الخصائص عبارة عن أزواج اسم-قيمة .

تحتوي أشجار الأجهزة على كل من تنسيق ثنائي تستخدمه أنظمة التشغيل وتنسيق نصي لتسهيل التحرير والإدارة. [ 1 ]

الاستخدام

لينكس

مع توفر شجرة الأجهزة الصحيحة، يمكن لنواة النظام المُجمّعة نفسها دعم تكوينات أجهزة مختلفة ضمن عائلة معمارية أوسع. تقرأ نواة لينكس الخاصة بمعماريات ARC و ARM و C6x و H8/300 و MicroBlaze و MIPS وNDS32 و Nios II و OpenRISC و PowerPC و Power ISA و RISC-V و SuperH و Xtensa معلومات شجرة الأجهزة؛ أما في معمارية ARM، فقد أصبحت أشجار الأجهزة إلزامية لجميع أنظمة SoC الجديدة منذ عام 2012. [ 2 ] يُمكن اعتبار هذا حلاً للعدد الهائل من النسخ المتفرعة (من لينكس وDas U-Boot) التي تم إنشاؤها تاريخياً لدعم لوحات ARM المختلفة (بشكل طفيف). الهدف هو نقل جزء كبير من وصف الأجهزة من ملف النواة الثنائي، إلى ملف شجرة الأجهزة المُجمَّع، والذي يُسلَّم إلى النواة بواسطة مُحمِّل الإقلاع ، ليحل محل مجموعة من ملفات المصدر C الخاصة باللوحة وخيارات وقت التجميع في النواة. [ 2 ]

يتم تحديدها في ملف مصدر شجرة الأجهزة (.dts) ويتم تجميعها في ملف ثنائي شجرة الأجهزة (.dtb) (يُعرف أيضًا باسم شجرة الأجهزة المُسطّحة) [ 3 ] من خلال مُجمِّع شجرة الأجهزة (DTC). يمكن أن تتضمن ملفات مصدر شجرة الأجهزة ملفات أخرى، تُسمى ملفات تضمين مصدر شجرة الأجهزة. [ 4 ] [ 1 ]

اعتادت توزيعات لينكس المبنية على معالجات ARM تضمين مُحمِّل إقلاع مُخصَّص للوحات معينة، مثل Raspberry Pi أو Hackberry A10. وقد تسبب هذا في مشاكل لمطوري توزيعات لينكس، إذ يتطلب الأمر تجميع جزء من نظام التشغيل خصيصًا لكل نوع من أنواع اللوحات، أو تحديثه لدعم اللوحات الجديدة. مع ذلك، تحتوي بعض أنظمة SoC الحديثة (مثل Freescale i.MX6 ) على مُحمِّل إقلاع مُقدَّم من الشركة المصنعة مع شجرة الأجهزة على شريحة منفصلة عن نظام التشغيل. [ 5 ]

يُعد تنسيق ملف التكوين الخاص المستخدم لأغراض مماثلة، وهو تنسيق ملف FEX، [ 6 ] معيارًا فعليًا بين أنظمة Allwinner SoCs.

تُستخدم شجرة الأجهزة على نطاق واسع لأجهزة أندرويد التي تعمل بمعالجات ARM .

بي إس دي

يمكن لنظام BSD دعم شجرة الأجهزة، حيث يتم اعتماد شجرة الأجهزة عادةً في الأجهزة المدمجة. [ 7 ]

ويندوز

لا يستخدم نظام التشغيل ويندوز ملف Devicetree (ملف DTB) كما هو موضح هنا. بدلاً من ذلك، يستخدم ACPI لاكتشاف الأجهزة وإدارتها. [ 8 ]

تفاحة

في عملية بدء تشغيل أنظمة iOS و iPadOS و ARM macOS، يقوم برنامج تحميل الإقلاع منخفض المستوى (LLB) بتحميل شجرة الأجهزة المشفرة من Apple إلى الذاكرة الرئيسية، ثم يقوم بتحميل iBoot.

كوربوت

يستخدم مشروع coreboot أشجار الأجهزة، لكنها تختلف عن أشجار الأجهزة المسطحة المستخدمة في نواة لينكس. [ 9 ]

مثال

مثال على تنسيق مصدر شجرة الأجهزة (DTS):

/dts-v1/ ;/ { soc { flash_controller : flash-controller @ 4001e000 { reg = < 0x4001e000 0x1000 > ; flash0 : flash @ 0 { label = "SOC_FLASH" ; erase-block = < 4096 > ; }; }; }; };

في المثال أعلاه، يشير السطر إلى الإصدار 1 من صيغة DTS./dts-v1/;

تحتوي الشجرة على أربع عقد: /(العقدة الجذرية)، soc(يرمز إلى " نظام على شريحة ")، flash-controller@4001e000و flash@0(نسخة من ذاكرة الفلاش التي تستخدم وحدة تحكم الفلاش). بالإضافة إلى أسماء هذه العقد ، تحمل العقدتان الأخيرتان تسمياتflash_controller على flash0التوالي.

تحتوي العقدتان الأخيرتان على خصائص ، تمثل أزواجًا من الاسم والقيمة. الخاصية labelالأولى من نوع سلسلة نصية، والخاصية الثانية erase-blockمن نوع عدد صحيح، والخاصية الثالثة regعبارة عن مصفوفة من الأعداد الصحيحة (قيم غير مُوقّعة 32 بت). يمكن لقيم الخاصية الإشارة إلى عقد أخرى في شجرة الجهاز باستخدام معرّفاتها ( phandlesflash0 ). يُكتب معرّف عقدة تحمل التسمية على النحو التالي &flash0: . المعرّفات أيضًا عبارة عن قيم 32 بت.

أجزاء أسماء العقد التي تلي علامة "@" @هي عناوين الوحدة . تحدد عناوين الوحدة عنوان مورد العقدة في مساحة عنوان العقدة الأصلية.

يمكن تجميع الشجرة المذكورة أعلاه بواسطة مُجمِّع DTC القياسي إلى تنسيق DTB ثنائي أو لغة التجميع . مع ذلك، في نظام التشغيل Zephyr RTOS ، تُجمَّع ملفات DTS إلى ملفات رأسية بلغة C (.h)، والتي يستخدمها نظام البناء بعد ذلك لتجميع التعليمات البرمجية للوحة معينة . [ 10 ]

انظر أيضاً

مراجع

  1. 1 2 3 "مواصفات شجرة الأجهزة" (ملف PDF) . الإصدار v0.4. devicetree.org. 2023-06-28.
  2. 1 2 "قائمة التحقق من دعم نظام التشغيل لينكس لمعالجات ARM SoC" (ملف PDF) .
  3. "معلمات النواة باستخدام أشجار الأجهزة المسطحة" . مطور Arm .
  4. سيموندز، كريس (2017). إتقان برمجة لينكس المضمنة : إطلاق العنان للإمكانات الكاملة للينكس المضمنة ( الطبعة الثانية). برمنغهام، المملكة المتحدة. ISBN   978-1-78728-885-0. OCLC 995052708 . {{cite book}}: CS1 maint: موقع الناشر مفقود ( رابط )
  5. "تحديث u-boot للوحات Ezurio" . 2013-11-08.
  6. "دليل Fex" . linux-sunxi.org. 30-05-2014 . تم الاطلاع عليه بتاريخ 12-06-2014 .
  7. "FDT" . man.freebsd.org . تم الاطلاع عليه بتاريخ 12-09-2025 .
  8. "برنامج تشغيل ACPI لنظام التشغيل Windows" . microsoft.com. 2021-12-14 . تم الاطلاع عليه بتاريخ 2022-09-19 .
  9. صن، جيمينغ (2015). حلول البرامج الثابتة المدمجة: أفضل ممارسات التطوير لإنترنت الأشياء . فينسنت زيمر، مارك جونز، ستيفان ريناور. [الولايات المتحدة]. ص 82. ISBN  978-1-4842-0070-4. OCLC 902804314 . {{cite book}}: CS1 maint: موقع الناشر مفقود ( رابط )
  10. "مقدمة إلى شجرة الأجهزة - وثائق مشروع زفير" . 2.6.0. مشروع زفير . 2021-06-05.