การใช้งาน Android อาจมีอิมเมจ Device Tree Blob (DTB) สำหรับใช้โดย โปรแกรมโหลดบูต ตำแหน่งของรูปภาพ DTB (และตัวเลือกสำหรับการระบุ พารามิเตอร์รูปภาพ DTB) จะแตกต่างกันระหว่างรุ่นต่างๆ ของ Android
- ใน Android 11 อุปกรณ์ที่ใช้ Generic Kernel Image (GKI) ต้อง รองรับพาร์ติชัน การบูตของผู้ให้บริการ ซึ่งรวมถึงข้อมูลทั้งหมดของผู้ให้บริการที่ย้ายจาก พาร์ติชันการบูต เนื่องจากรูปภาพ DTB มีข้อมูลเฉพาะของผู้ให้บริการ ตอนนี้จึงเป็นส่วนหนึ่งของพาร์ติชันการบูตของผู้ให้บริการ หากต้องการระบุพารามิเตอร์รูปภาพ DTB โปรดดู ส่วนหัวการบูตของผู้ให้บริการ 
- ใน Android 10 อุปกรณ์สามารถรวมอิมเมจ DTB ไว้ใน พาร์ติชันการบูต หากต้องการระบุพารามิเตอร์รูปภาพ DTB โปรดดูการรวมรูปภาพ DTB ไว้ในรูปภาพการบูต 
- ใน Android 9 และเวอร์ชันที่ต่ำกว่า รูปภาพ DTB อาจอยู่ในพาร์ติชันของตัวเองหรือต่อท้ายเคอร์เนล - image.gzเพื่อสร้างรูปภาพเคอร์เนล + DTB (ซึ่งจะส่งไปยัง- mkbootimgเพื่อสร้าง- boot.img)
รูปแบบรูปภาพ DTB
ใน Android 10 ขึ้นไป รูปภาพ DTB ต้องใช้รูปแบบใดรูปแบบหนึ่งต่อไปนี้
- Blob ของ DT ที่ต่อกัน Bootloader ใช้ฟิลด์ - totalsizeในส่วนหัว FDT แต่ละรายการเพื่ออ่านและแยกวิเคราะห์ Blob ที่เกี่ยวข้อง
- พาร์ติชัน DTB/DTBO Bootloader มีวิธีที่มีประสิทธิภาพในการเลือก DT Blob ที่ถูกต้องโดยการตรวจสอบโครงสร้าง - dt_table_entry(มีฟิลด์- id,- revและ- custom) ซึ่งสามารถเก็บข้อมูลระบุฮาร์ดแวร์สำหรับรายการได้ โปรดดูรายละเอียดที่พาร์ติชัน DTB/DTBO
รวมอิมเมจ DTB ไว้ในอิมเมจการบูต
อุปกรณ์ที่ใช้ Android 10 สามารถรวมอิมเมจ DTB ไว้ใน
อิมเมจการบูตได้ ซึ่งจะช่วยให้ Android ไม่ต้องรองรับสคริปต์ที่ผนวกรูปภาพ DTB เข้ากับ image.gz ในเคอร์เนล และเปิดใช้การทดสอบ Vendor Test
Suite (VTS) เพื่อยืนยัน (และกำหนดมาตรฐาน) การวาง DTB
นอกจากนี้ สำหรับอุปกรณ์ที่ไม่ใช่ A/B การมี DTB เป็นส่วนหนึ่งของ รูปภาพการกู้คืนจะปลอดภัยกว่าการมี DTB ในพาร์ติชันแยกต่างหากเพื่อป้องกันปัญหาที่เกิดจาก OTA ที่ถูกขัดจังหวะ ในระหว่าง OTA หากเกิดปัญหาหลังจากอัปเดตพาร์ติชัน DTB (แต่ก่อนที่จะอัปเดตให้เสร็จสมบูรณ์) อุปกรณ์จะพยายามบูตเข้าสู่โหมดการกู้คืนเพื่อทำ OTA ให้เสร็จสมบูรณ์ อย่างไรก็ตาม เนื่องจากพาร์ติชัน DTB ได้รับการอัปเดตแล้ว จึงอาจเกิดความไม่ตรงกันกับอิมเมจการกู้คืน (ซึ่งยังไม่ได้อัปเดต) การมีรูปภาพ DTB เป็นส่วนหนึ่งของรูปแบบรูปภาพการบูต จะช่วยป้องกันปัญหาดังกล่าวได้โดยทำให้รูปภาพการกู้คืนทำงานได้ด้วยตัวเอง (กล่าวคือ ไม่ได้ ขึ้นอยู่กับพาร์ติชันอื่น)
โครงสร้างอิมเมจบูต
อุปกรณ์ที่ใช้ Android 10 สามารถรวมอิมเมจ DTB โดยใช้โครงสร้างอิมเมจการบูตต่อไปนี้
| ส่วนอิมเมจบูต | จำนวนหน้า | 
|---|---|
| ส่วนหัวของการบูต (1 หน้า) | 1 | 
| เคอร์เนล (l หน้า) | l = ( kernel_size+page_size-
   1) /page_size | 
| Ramdisk (m หน้า) | m = ( ramdisk_size+page_size-
   1) /page_size | 
| Bootloader ระยะที่ 2 (n หน้า) | n = ( second_size+page_size-
   1) /page_size | 
| DTBO การกู้คืน (หน้า o) | o = ( recovery_dtbo_size+page_size-
   1) /page_size | 
| DTB (หน้า p) | p = ( dtb_size+page_size-
   1) /page_size | 
เส้นทางรูปภาพ DTB
สำหรับอุปกรณ์ที่ใช้ Android 10 คุณสามารถใช้
mkbootimg.pyเครื่องมือและอาร์กิวเมนต์ต่อไปนี้เพื่อระบุเส้นทางไปยังอิมเมจ DTB
| อาร์กิวเมนต์ | คำอธิบาย | 
|---|---|
| dtb | เส้นทางไปยังอิมเมจ DTB ที่จะรวมไว้ในอิมเมจการบูต/การกู้คืน | 
| dtb_offset | เมื่อเพิ่มลงในอาร์กิวเมนต์ baseจะระบุที่อยู่โหลดจริง
   สำหรับแผนผังอุปกรณ์สุดท้าย เช่น หากอาร์กิวเมนต์baseคือ0x10000000และอาร์กิวเมนต์dtb_offsetคือ0x01000000ระบบจะป้อนข้อมูลdtb_addr_fieldในส่วนหัวของอิมเมจการบูต
   เป็น0x11000000 | 
ต้องใช้ตัวแปรการกำหนดค่าบอร์ด BOARD_PREBUILT_DTBIMAGE_DIR เพื่อระบุ
เส้นทางไปยังอิมเมจ DTB หากมีไฟล์มากกว่า 1 ไฟล์ที่มีนามสกุล *.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
config ด้วยออฟเซ็ตและเวอร์ชันส่วนหัวอื่นๆ เช่น
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)
การรองรับ Bootloader
หากต้องการให้ VTS ทำงานบนอุปกรณ์ที่ใช้ Android
10 ได้สำเร็จ Bootloader ต้องรองรับอิมเมจการบูตที่อัปเดตแล้ว
และต้องเพิ่มพารามิเตอร์บรรทัดคำสั่งเคอร์เนล androidboot.dtb_idx เพื่อระบุ
ดัชนีของ Device Tree (DT) ที่เลือก คุณระบุได้เพียง 1 ดัชนีเท่านั้น เช่น พารามิเตอร์ androidboot.dtb_idx=N reports N เป็นดัชนีที่อิงตาม 0 ของแผนผังอุปกรณ์ที่ Bootloader เลือกจากชุด DTB ที่อยู่ในอิมเมจการบูต
