การวางซ้อนแผนผังอุปกรณ์ (DTO) ที่ขยาย
ที่มีอยู่
การติดตั้งใช้งาน Flattened Device Tree (FDT) ด้วยการเปิดใช้
พื้นที่ผู้ใช้เพื่อแก้ไขข้อมูล Devicetree เริ่มต้นในเคอร์เนลขณะรันไทม์โดย
การโหลด FDT ที่ซ้อนทับเพิ่มเติมซึ่งแก้ไขข้อมูลต้นฉบับ Android ไม่
ต้องการการอัปเดตรันไทม์ของ DT BLOB จาก Userspace แต่แนะนำให้อัปเดต
ที่ผู้ให้บริการเพิ่มแพตช์ Devicetree ใน Bootloader ด้วยความช่วยเหลือของ
libfdt
หรือ libufdt
การสนับสนุน DTO สำหรับ Android
การรองรับ DTO ของ Android แตกต่างกันไปตามรุ่นของ Android ดังนี้
- Android 7.x และเวอร์ชันก่อนหน้าไม่จำเป็นต้องมีการรองรับ Devicetree และไม่ต้อง ให้คำแนะนำเกี่ยวกับวิธีที่ผู้ให้บริการส่ง DT Blob ไปยังเคอร์เนลหรือ เพื่อจัดเก็บไว้
- Android 8.x ขอแนะนําให้รองรับ Devicetree เพื่อให้เฉพาะสำหรับกระดานและ เฉพาะส่วน SoC ของเคอร์เนลแยกกัน
- Android 9 ขึ้นไปต้องใช้ BLOB ต้นไม้ของอุปกรณ์ ต้องมีพาร์ติชันซ้อนทับ (DTBO) และจะใช้ DTO อย่างน้อย 1 รายการ
ข้อกำหนดในการแบ่งพาร์ติชัน DTO
อุปกรณ์ Android ส่วนใหญ่จะเพิ่ม DT BLOB ลงในเคอร์เนลในเวลาบิลด์และ Bootloader โหลด BLOB จากเคอร์เนล แต่เนื่องจาก DT Blob Android ไม่ได้มีข้อมูลเฉพาะ ข้อกำหนดเกี่ยวกับวิธีการสร้างหรือจัดเก็บ DT Blob อุปกรณ์จะเพิ่ม DT ต่อท้ายได้ BLOB ไปยังเคอร์เนลหรือจัดเก็บ BLOB ในพาร์ติชันที่แยกต่างหาก อย่างเดียวเท่านั้น ข้อกำหนดคือ Bootloader รู้วิธีและโหลด DT Blob จาก
หากต้องการสนับสนุน DTO อุปกรณ์ควรมีสิ่งต่อไปนี้
- หนึ่งพาร์ติชัน DTBO ต่ออิมเมจเคอร์เนลสำหรับการวางซ้อน DT เฉพาะบอร์ดและ Bootloader ต้องทราบตำแหน่งและวิธีโหลด DTB เฉพาะ SoC ขนาดพาร์ติชันขึ้นอยู่กับจำนวนการเปลี่ยนแปลงที่จำเป็นในการสร้าง SoC เคอร์เนล - เลือกขนาดที่มีพื้นที่ว่างสำหรับขยายออกเพื่อการอัปเดตในอนาคต โดยทั่วไปแล้ว ขนาดพาร์ติชัน 8 MB นั้นเกินพอ
- พาร์ติชัน DTO ได้รับการอัปเดตสำหรับ A/B อุปกรณ์ เคอร์เนลการกู้คืนจะเหมือนกับเคอร์เนลของ Android แต่ ต้องตั้งค่าพาร์ติชันสำหรับอุปกรณ์ A/B เพื่อให้อัปเดตผ่านอากาศ (OTA) ได้ (OTA) ขนาดพาร์ติชันขึ้นอยู่กับอุปกรณ์และจำนวนของ บน DT BLOB ของ DT หลักของ SoC
ข้อกำหนดของ Bootloader ของ DTO
หากต้องการรองรับ DTO เบราว์เซอร์ Bootloader ควรทำดังนี้
- รู้วิธีและตำแหน่ง (โดยพิจารณาช่องเปิดเครื่องสำหรับอุปกรณ์ A/B) ในการโหลด BLOB DT เฉพาะ SoC ในแบบเฉพาะผู้ให้บริการ (โดยปกติจะดึงข้อมูลจาก จุดสิ้นสุดของภาพเคอร์เนลเมื่อ BLOB ถูกผนวกเข้ากับเคอร์เนล)
- รู้วิธีและตำแหน่งที่จะโหลด DT Blob ของการวางซ้อนในผู้ให้บริการเฉพาะ
- แพตช์ DT BLOB หลักด้วยการวางซ้อนก่อนส่งอุปกรณ์แบบรวม ลงในเคอร์เนล
ดูรายละเอียดเพิ่มเติมเกี่ยวกับการเพิ่มการรองรับ DTO ใน Bootloader ได้ที่ การวางซ้อนแผนผังอุปกรณ์