صور DTB

يمكن أن تتضمّن عمليات تنفيذ Android صورة كائن ثنائي الأبعاد (DTB) في شجرة الجهاز لاستخدامها بواسطة برنامج الإقلاع. يختلف موقع صورة DTB (وخيارات تحديد معلَمات الصور DTB) بين إصدارات Android.

  • في نظام التشغيل Android 11، يجب أن تكون الأجهزة التي تستخدم صورة Kernel عامة (GKI) متوافقة مع قسم تمهيد المورد، الذي يتضمن جميع المعلومات الخاصة بالمورّد التي تم نقلها من قسم تمهيد. نظرًا لأن صورة DTB تحتوي على بيانات خاصة بالبائع، فهي الآن جزءًا من قسم تشغيل البائع. لتحديد معلَمات صورة DTB، يمكنك الاطّلاع على عنوان بدء تشغيل المورّد.

  • في نظام Android 10، يمكن أن تتضمن الأجهزة صورة DTB في قسم التشغيل. لتحديد معلمات صورة DTB، يمكنك الاطّلاع على تضمين صورة DTB في صورة التشغيل.

  • في الإصدار 9 والإصدارات الأقدم من نظام التشغيل Android، يمكن أن تتوفّر صورة DTB في القسم الخاص بها أو يمكن إلحاقها بالنواة image.gz لإنشاء صورة kernel + DTB (ويتم تمريرها بعد ذلك إلى mkbootimg لإنشاء boot.img).

تنسيق صورة DTB

في نظام التشغيل Android 10 والإصدارات الأحدث، يجب أن تستخدم صورة DTB أحد التنسيقات التالية:

  • يتم ربط رموز DT واحدًا تلو الآخر. ويستخدم برنامج الإقلاع الحقل totalsize في كل عنوان FDT لقراءة وتحليل الكائن الثنائي الكبير المقابل.

  • الأقسام DTB/DTBO: يوفّر برنامج الإقلاع طريقة فعّالة لاختيار كائن DT الثنائي الصحيح من خلال فحص بنية dt_table_entry (التي تحتوي على حقول id وrev وcustom) التي يمكنها الاحتفاظ بمعلومات تعريف الأجهزة الخاصة بإدخال البيانات. لمعرفة التفاصيل، يُرجى الاطّلاع على الأقسام DTB/DTBO.

تضمين صورة DTB في صورة التشغيل

يمكن أن تتضمن الأجهزة التي تعمل بنظام التشغيل Android 10 صورة DTB في صورة التمهيد. وبذلك لن تكون هناك حاجة في نظام Android لإتاحة النصوص البرمجية التي تُلحِق صورة DTB في image.gz في kernel، وإتاحة استخدام اختبار مجموعة اختبار المورّد (VTS) للتحقّق من موضع إعلان DTB وتوحيده.

بالإضافة إلى ذلك، بالنسبة إلى الأجهزة التي ليست A/B، يكون من الأكثر أمانًا استخدام DTB كجزء من صورة الاسترداد بدلاً من تقسيمه بشكل منفصل لمنع حدوث المشاكل الناتجة عن انقطاع الاتصال عبر الهواء. أثناء الاستخدام عبر الهواء، في حال حدوث مشكلة بعد تحديث قسم DTB (ولكن قبل إكمال التحديث الكامل)، يحاول الجهاز بدء تشغيل وضع الاسترداد لإكمال الإجراء عبر الهواء؛ ومع ذلك، بسبب تحديث قسم DTB بالفعل، قد يحدث عدم تطابق مع صورة الاسترداد (التي لم يتم تحديثها بعد). إنّ توفير صورة DTB كجزء من تنسيق صورة تمهيد يؤدي إلى منع حدوث هذه المشاكل من خلال جعل صورة الاسترداد كافية ذاتيًا (أي أنها لا تعتمد على قسم آخر).

بنية صورة التشغيل

يمكن أن تتضمن الأجهزة التي تعمل بنظام التشغيل Android 10 صورة DTB باستخدام بنية صورة التمهيد التالية.

قسم صورة تشغيل الجهاز عدد الصفحات
عنوان التشغيل (صفحة واحدة) 1
النواة kernel (صفحات l) l = (kernel_size + page_size - 1) / page_size
Ramdisk (صفحات m) م = (ramdisk_size + page_size - 1) / page_size
برنامج الإقلاع من المرحلة الثانية (عدد الصفحات) رقم = (second_size + page_size - 1) / page_size
DTBO للاسترداد (صفحات) o = (recovery_dtbo_size + page_size - 1) / page_size
DTB (صفحات p) p = (dtb_size + page_size - 1) / page_size

مسار صورة DTB

بالنسبة إلى الأجهزة التي تعمل بالإصدار 10 من نظام التشغيل Android، يمكنك استخدام أداة mkbootimg.py والوسيطات التالية لتحديد المسار إلى صورة DTB.

الوسيطة الوصف
dtb المسار إلى صورة DTB المراد تضمينه في صور التشغيل/الاسترداد.
dtb_offset عند إضافة هذه الدالة إلى الوسيطة base، يتم توفير عنوان التحميل الفعلي لشجرة الأجهزة النهائية. على سبيل المثال، إذا كانت الوسيطة base هي 0x10000000 والوسيطة dtb_offset هي 0x01000000، تتم تعبئة dtb_addr_field في عنوان صورة التشغيل كـ 0x11000000.

يجب استخدام متغير ضبط اللوحة BOARD_PREBUILT_DTBIMAGE_DIR لتحديد المسار إلى صورة DTB. في حال توفّر أكثر من ملف واحد بالامتداد *.dtb في الدليل BOARD_PREBUILT_DTBIMAGE_DIR، يعمل نظام إصدار Android على إنشاء تسلسل للملفات لإنشاء صورة DTB النهائية المستخدمة في إنشاء صورة التمهيد.

لتمرير الوسيطة dtb إلى mkbootimg.py باستخدام صورة DTB من الدليل المحدد من خلال BOARD_PREBUILT_DTBIMAGE_DIR، يجب ضبط متغيّر إعداد اللوحة BOARD_INCLUDE_DTB_IN_BOOTIMG على true. على سبيل المثال:

BOARD_INCLUDE_DTB_IN_BOOTIMG := true

يمكنك إلحاق الوسيطة dtb_offset بمتغيّر إعداد لوحة BOARD_MKBOOTIMG_ARGS مع قيم الإزاحة الأخرى وإصدار العنوان. على سبيل المثال:

BOARD_MKBOOTIMG_ARGS := --ramdisk_offset $(BOARD_RAMDISK_OFFSET) --dtb_offset $(BOARD_DTB_OFFSET) --tags_offset $(BOARD_KERNEL_TAGS_OFFSET) --header_version $(BOARD_BOOTIMG_HEADER_VERSION)

التوافق مع برنامج الإقلاع

لكي يتم تشغيل VTS بنجاح على الأجهزة التي تعمل بنظام التشغيل Android 10، يجب أن يتيح برنامج الإقلاع نسخة التشغيل المعدَّلة، ويجب إضافة معلَمة سطر أوامر النواة androidboot.dtb_idx للإشارة إلى فهرس شجرة الأجهزة (DT) التي تم اختيارها. يمكنك تحديد فهرس واحد (1) فقط. على سبيل المثال، تعرض المَعلمة androidboot.dtb_idx=N N باعتباره فهرسًا مستندًا إلى صفر لشجرة الجهاز التي اختارها برنامج الإقلاع من مجموعة ملفات DTB المتوفّرة في صورة التشغيل.