اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release
بدلاً من aosp-main
لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
تنفيذ DTO
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
يتضمن تنفيذ تراكب شجرة الجهاز (DTO) تقسيم شجرة الجهاز (DT) وإنشاء
القسمة والتشغيل. بعد تنفيذ عملية ناجحة، عليك أيضًا الحفاظ على
التوافق بين جدولَي البيانات التعريفيَين وتحديد استراتيجية لضمان
أمان كل قسم من أقسام جدولَي البيانات التعريفيَين.
تقسيم شجرة الأجهزة
ابدأ بتقسيم DT إلى جزأين:
- DT الرئيسي: الجزء الخاص بوحدة المعالجة المركزية فقط والإعدادات التلقائية،
يقدّمها مورّد وحدة المعالجة المركزية.
- الإعلانات التي تظهر على سطح الفيديو الإعدادات الخاصة بالجهاز، والتي يوفّرها
مصنّع الجهاز الأصلي/مصنّع الجهاز
بعد تقسيم ملفات DT، عليك التأكّد من التوافق بين ملف
DT الرئيسي وملف DT المتراكب كي يؤدي دمج ملفَّي DT الرئيسي وDT المتراكب إلى إنشاء ملف
DT كامل للجهاز. للحصول على تفاصيل حول تنسيق DTO وقواعده، راجِع
بنية DTO. لمعرفة التفاصيل حول
ملفات DT المتعددة، راجِع
استخدام ملفات DT متعددة.
إنشاء رسومات DT الرئيسية والرسومات التي تظهر على سطح الفيديو
لإنشاء نموذج DT الرئيسي:
- اجمع ملف DT
.dts
الرئيسي في ملف .dtb
.
- واملأ ملف
.dtb
في قسم يمكن لبرنامج التمهيد الوصول إليه أثناء التشغيل
(مفصّل في [Partition DTs](#partition)).
لإنشاء DT للتراكب:
- اجمع ملف DT
.dts
للصورة التي تظهر على سطح الصورة في ملف .dtbo
. على الرغم من أنّ
تنسيق هذا الملف هو نفسه تنسيق ملف .dtb
بتنسيق
DT مسطّح، إلا أنّ امتداد الملف المختلف يميزه عن
ملف DT الرئيسي.
- واملأ ملف
.dtbo
في قسم يمكن لبرنامج التمهيد الوصول إليه أثناء التشغيل
(مفصّل في [Partition DTs](#partition)).
لمعرفة تفاصيل عن عملية الترجمة باستخدام DTC والتحقّق من نتائج DTO على المضيف، يُرجى الاطّلاع على مقالة
الترجمة والتحقّق.
جداول نقل البيانات الخاصة بالقسم
حدِّد موقعًا موثوقًا ومتاحًا لوقت التشغيل في ذاكرة فلاش
لوضع .dtb
و.dtbo
.
أمثلة على المواقع الجغرافية لملف البيانات الرئيسي:
- جزء من قسم التمهيد، يتم إلحاقه بالنواة (
image.gz
)
- فصل وحدات تخزين DT (
.dtb
) في قسم مخصّص (dtb
)
أمثلة على مواضع DT التي تظهر على سطح الفيديو:

الشكل 1: ضع ملف .dtbo في قسم odm (لا تجرِ هذا الإجراء إلا إذا كان مُشغِّل الإقلاع لديه
القدرة على تحميل البيانات من نظام الملفات في قسم odm).

الشكل 2: ضَع ملف .dtbo في قسم فريد، مثل قسم dtbo.
ملاحظة: يعتمد حجم "قسم DT المتراكب" على الجهاز وعدد التغييرات المطلوبة في "العنصر الأساسي" لملف DT. عادةً ما تكون سعة 8 ميغابايت أكثر من كافية وتسمح بزيادة حجم الملف في المستقبل إذا لزم الأمر.
بالنسبة إلى الأجهزة التي تتيح
التحديثات السلسة (A/B)، يتم تقسيم ملف التمهيد الرئيسي (DT) وملف التمهيد الإضافي (DT) إلى قسمَين A وB:

الشكل 3: مثال 1 على قسم DTBO A/B

الشكل 4: مثال 2 على قسم DTBO A/B
التشغيل في برنامج الإقلاع
لتنفيذ ذلك:

الشكل 5: التنفيذ المعتاد لوقت التشغيل لـ DTO في أداة تحميل البرامج
- تحميل
.dtb
من مساحة التخزين إلى الذاكرة
- تحميل
.dtbo
من مساحة التخزين إلى الذاكرة
- ضع
.dtb
فوق .dtbo
لإنشاء جدول بيانات مبيعات مدمج.
- بدء تشغيل kernel مع تحديد عنوان الذاكرة الخاص بملف DT المدمج
الحفاظ على التوافق
يتم التعامل مع DTB الرئيسي (من موفّر شرائح المعالجة المركزية) كسطح واجهة برمجة تطبيقات لوحدات DTBO. بعد
فصل DT إلى جزء شائع في شريحة المعالجة والجزء الخاص بالجهاز،
يجب الحفاظ على توافق الجزءَين مع بعضهما في المستقبل، بما في ذلك:
- تعريف DT في DT الرئيسي على سبيل المثال، العقد والخصائص
والتصنيفات. يمكن أن يؤدي أي تغيير في التعريف في DT الرئيسي إلى تغييرات في DT المتراكب. على سبيل المثال، لتصحيح اسم عقدة في DT الرئيسية، حدِّد تصنيفًا "الاسم المعرِّف" الذي
يرتبط باسم العقدة الأصلي (لتجنُّب تغيير DT التراكب).
- تراكب الموقع الجغرافي لمتجر DT: على سبيل المثال، اسم التقسيم،
تنسيق المتجر.
ضمان الأمان
يجب أن يضمن برنامج الإقلاع أنّ ملف DTB أو DTBO آمن وغير معدَّل وغير تالف.
يمكنك استخدام أي حلّ لتأمين DTB أو DTBO، على سبيل المثال،
توقيع
صورة التمهيد في VBoot 1.0 أو
AVB
تذييل HASH (VBoot 2.0).
- إذا كان DTB أو DTBO في قسم فريد، يمكنك إضافة هذا القسم إلى
سلسلة الثقة في AVB. تبدأ سلسلة الثقة من جذر
الثقة المحمي بالأجهزة وتنتقل إلى برنامج الإقلاع الذي يتحقق من سلامة ملف DTB أو DTBO ومدى صدقه.
- إذا كان جدول DTB أو DTBO في قسم حالي (مثل القسم
odm
)، يجب أن يكون هذا القسم في سلسلة الثقة الخاصة بAVB. (يمكن أن يشارك قسم DTBO
مفتاحًا عامًا مع قسم odm
).
لمعرفة التفاصيل، يُرجى الاطّلاع على التشغيل المُتحقّق منه.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-26 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-26 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Implement DTOs\n\nImplementing device tree overlays (DTOs) involves dividing the device tree (DT), building,\npartitioning, and running. After you have a working implementation, you must also maintain\ncompatibility between the two DTs and determine a strategy for ensuring the\nsecurity of each DT partition.\n\nDivide the DT\n-------------\n\nStart by dividing the DT into two parts:\n\n- **Main DT**. The SoC-only part and the default configurations, provided by SoC vendor.\n- **Overlay DT**. The device-specific configurations, provided by ODM/OEM.\n\nAfter dividing the DTs, you must ensure compatibility between main\nDT and overlay DT so that merging main DT and overlay DT results in a complete\nDT for the device. For details on DTO format and rules, see\n[DTO syntax](/docs/core/architecture/dto/syntax). For details on\nmultiple DTs, see\n[Use multiple DTs](/docs/core/architecture/dto/multiple).\n\nBuild main and overlay DTs\n--------------------------\n\nTo build the main DT:\n\n1. Compile the main DT `.dts` into a `.dtb` file.\n2. Flash the `.dtb` file into a bootloader runtime-accessible partition (detailed in \\[Partition DTs\\](#partition)).\n\nTo build the overlay DT:\n\n1. Compile the overlay DT `.dts` into a `.dtbo` file. While this file format is the same as the `.dtb` file formatted as a flattened DT, the different file extension distinguishes it from the main DT.\n2. Flash the `.dtbo` file into a bootloader runtime-accessible partition (detailed in \\[Partition DTs\\](#partition)).\n\nFor details on compiling with DTC and verifying DTO results on the host, see\n[Compile and verify](/docs/core/architecture/dto/compile).\n\nPartition DTs\n-------------\n\nDetermine a bootloader runtime-accessible and trusted location in flash\nmemory to put `.dtb` and `.dtbo`.\n\nExample locations for the main DT:\n\n- Part of boot partition, appended to the kernel (`image.gz`)\n- Separate DT blobs (`.dtb`) in dedicated partition (`dtb`)\n\nExample locations for the overlay DT: \n\n**Figure 1.** Put .dtbo into an odm partition (do this only if your bootloader has\nthe capability to load data from the filesystem of an odm partition). \n\n**Figure 2.** Put .dtbo into a unique partition, such as a dtbo partition.\n\n**Note:** The size of the\noverlay DT partition depends on the device and the amount of changes needed on\ntop of the main DT blob. Typically, 8 MB is more than enough and allows room to\ngrow in the future if required.\n\nFor devices that support\n[seamless (A/B) updates](/docs/core/ota/ab_updates), A/B the\nmain DT and overlay DT partitions: \n\n**Figure 3.** DTBO partition A/B, example 1. \n\n**Figure 4.** DTBO partition A/B, example 2.\n\nRun in bootloader\n-----------------\n\nTo run:\n\n**Figure 5.** Typical runtime implementation for DTO in bootloader.\n\n1. Load `.dtb` from storage into memory.\n2. Load `.dtbo` from storage into memory.\n3. Overlay `.dtb` with `.dtbo` to be a merged DT.\n4. Start kernel given the memory address of the merged DT.\n\nMaintain compatibility\n----------------------\n\nThe main DTB (from SoC vendor) is treated as an API surface for DTBOs. After\nseparating the DT into a SoC-common part and a device-specific part,\nyou must keep the two parts mutually compatible in the future, including:\n\n- **DT definition in main DT.** For example, nodes, properties, labels. Any definition change in main DT could trigger changes in overlay DT. For example, to correct a node name in main DT, define an \"alias\" label that maps to the original node name (to avoid the change of overlay DT).\n- **Overlay DT store location.** For example, partition name, store format.\n\nEnsure security\n---------------\n\nBootloader must ensure the DTB or DTBO is secure, unmodified, and uncorrupted.\nYou could use any solution to secure DTB or DTBO, for example,\n[Boot image\nsignature](/docs/security/features/verifiedboot/verified-boot#signature_format) in VBoot 1.0 or\n[AVB\nHASH footer](https://android.googlesource.com/platform/external/avb/+/android16-release/README.md#The-VBMeta-struct) (VBoot 2.0).\n\n- If DTB or DTBO is in a unique partition, you can add that partition to the trust chain of AVB. The trust chain starts from a hardware-protected root of trust and goes to the bootloader, which verifies the integrity and authenticity of DTB or DTBO partition.\n- If DTB or DTBO is in an existing partition (such as the `odm` partition), that partition should be in the trust chain of AVB. (DTBO partition could share a public key with `odm` partition).\n\nFor details, refer to [Verified\nBoot](/docs/security/features/verifiedboot)."]]