ฝ่ายสนับสนุน DTO

Device Tree Overlay (DTO) ขยายการใช้งาน Flattened Device Tree (FDT) ที่มีอยู่โดยเปิดใช้งานพื้นที่ผู้ใช้เพื่อแก้ไขข้อมูลแผนผังอุปกรณ์เริ่มต้นในเคอร์เนลขณะรันไทม์โดยการโหลด FDT แบบซ้อนทับเพิ่มเติมที่แก้ไขข้อมูลต้นฉบับ Android ไม่ต้องการการอัปเดตรันไทม์ของ DT blobs จากพื้นที่ผู้ใช้ แต่แนะนำให้ผู้ขายเพิ่มการแพตช์อุปกรณ์ใน bootloader ด้วยความช่วยเหลือของ libfdt หรือ libufdt แทน

รองรับระบบปฏิบัติการ Android DTO

การสนับสนุน Android สำหรับ DTO จะแตกต่างกันไปตามรุ่น Android:

  • Android 7.x และรุ่นก่อนหน้าไม่ต้องการการสนับสนุน Devicetree และไม่มีคำแนะนำเกี่ยวกับวิธีที่ผู้ขายส่ง DT blobs ไปยังเคอร์เนลหรือที่ที่พวกเขาจัดเก็บไว้
  • Android 8.x แนะนำให้รองรับ Devicetree เพื่อแยกส่วนเฉพาะของบอร์ดและ SoC ของเคอร์เนลออกจากกัน
  • Android 9 และสูงกว่าจำเป็นต้องมีพาร์ติชัน Device Tree Blob Overlay (DTBO) และต้องมี DTO อย่างน้อยหนึ่งรายการ

ข้อกำหนดการแบ่งพาร์ติชัน DTO

อุปกรณ์ Android ส่วนใหญ่ผนวก DT blob เข้ากับเคอร์เนลในขณะสร้าง และ bootloader จะโหลด blob จากเคอร์เนล อย่างไรก็ตาม เนื่องจาก DT blobs ถือเป็นส่วนหนึ่งของเคอร์เนล system-on-chip (SoC) Android จึงไม่มีข้อกำหนดเฉพาะสำหรับวิธีสร้างหรือจัดเก็บ DT blobs อุปกรณ์สามารถผนวก DT blob เข้ากับเคอร์เนลหรือจัดเก็บ blob ในพาร์ติชันแยกต่างหาก ข้อกำหนดเพียงอย่างเดียวคือ bootloader รู้ว่าจะโหลด DT blob จากที่ไหนและอย่างไร

เพื่อรองรับ DTO อุปกรณ์ควรมี:

  • หนึ่งพาร์ติชัน DTBO ต่ออิมเมจเคอร์เนลสำหรับโอเวอร์เลย์ DT เฉพาะบอร์ดและโปรแกรมโหลดบูตจะต้องทราบว่าจะโหลด DTB เฉพาะ SoC ที่ไหนและอย่างไร ขนาดพาร์ติชั่นขึ้นอยู่กับจำนวนการเปลี่ยนแปลงที่จำเป็นในการสร้างเคอร์เนล SoC โดยเลือกขนาดพร้อมพื้นที่ที่จะขยายสำหรับการอัพเดตในอนาคต โดยทั่วไปแล้ว ขนาดพาร์ติชั่น 8 MB ก็เกินพอแล้ว
  • พาร์ติชัน DTO ได้รับการอัปเดตสำหรับอุปกรณ์ A/B เคอร์เนลการกู้คืนจะเหมือนกับเคอร์เนล Android แต่ต้องตั้งค่าพาร์ติชันสำหรับอุปกรณ์ A/B เพื่อให้สามารถอัปเดตผ่านการอัพเดตแบบ over-the-air (OTA) ขนาดพาร์ติชันขึ้นอยู่กับอุปกรณ์และจำนวนการเปลี่ยนแปลงที่ด้านบนของเคอร์เนล SoC DT blob หลัก

ข้อกำหนดการบูต DTO

เพื่อรองรับ DTO นั้น bootloader ควร:

  • ทราบวิธีการและตำแหน่ง (โดยพิจารณาถึงช่องบูตสำหรับอุปกรณ์ A/B) เพื่อโหลด DT Blob เฉพาะ SoC ด้วยวิธีเฉพาะของผู้จำหน่าย (โดยทั่วไปจะแยกมาจากส่วนท้ายของอิมเมจเคอร์เนลเมื่อ Blob ถูกผนวกเข้ากับเคอร์เนล)
  • ทราบวิธีการและตำแหน่งที่จะโหลด DT blob ที่ซ้อนทับด้วยวิธีเฉพาะของผู้ขาย
  • แก้ไข DT blob หลักด้วยการซ้อนทับก่อนที่จะส่งแผนผังอุปกรณ์ที่รวมกันไปยังเคอร์เนล

สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการเพิ่มการรองรับ DTO ใน bootloader โปรดดูที่ Device Tree Overlays