นำองค์กร DTO มาใช้

การติดตั้งใช้งานโครงสร้างแผนผังอุปกรณ์ (DTO) จะเกี่ยวข้องกับการแบ่งโครงสร้างอุปกรณ์ (DT) การสร้างองค์ประกอบ การแบ่งพาร์ติชัน และการเรียกใช้ หลังจากที่คุณมีการติดตั้งใช้งานแล้ว คุณยังต้องคง ความเข้ากันได้ระหว่าง DT ทั้ง 2 ฝ่าย แล้วกำหนดกลยุทธ์เพื่อให้มั่นใจว่า ของพาร์ติชัน DT แต่ละพาร์ติชัน

หาร DT

เริ่มต้นด้วยการแบ่ง DT เป็น 2 ส่วน ดังนี้

  • DT หลัก SoC เท่านั้นและการกำหนดค่าเริ่มต้น ที่ได้รับจากผู้ให้บริการ SoC
  • Overlay DT การกำหนดค่าเฉพาะอุปกรณ์จัดทำโดย ODM/OEM

หลังจากแบ่ง DT แล้ว คุณต้องตรวจสอบความเข้ากันได้ระหว่าง DT และ DT ซ้อนทับเพื่อให้การรวม DT หลักและ DT ซ้อนทับเข้าด้วยกันได้ผลลัพธ์สมบูรณ์ DT สำหรับอุปกรณ์ โปรดดูรายละเอียดเกี่ยวกับรูปแบบและกฎของ DTO ที่ ไวยากรณ์ DTO สำหรับรายละเอียดเกี่ยวกับ DT หลายตัว โปรดดู DT หลายรายการ

สร้าง DT หลักและซ้อนทับ

วิธีสร้าง DT หลัก

  1. คอมไพล์ DT .dts หลักเป็นไฟล์ .dtb
  2. แฟลชไฟล์ .dtb ลงในพาร์ติชันที่เข้าถึงรันไทม์ได้ของ Bootloader (ดูรายละเอียดใน [พาร์ติชัน DT](#partition))

วิธีสร้าง DT ซ้อนทับ

  1. คอมไพล์โอเวอร์เลย์ DT .dts เป็นไฟล์ .dtbo ขณะที่ รูปแบบไฟล์นี้เหมือนกับไฟล์ .dtb ที่จัดรูปแบบเป็น DT แยกเป็นหลายรายการ นามสกุลไฟล์ที่แตกต่างจะแยกความแตกต่างจาก DT หลัก
  2. แฟลชไฟล์ .dtbo ลงในพาร์ติชันที่เข้าถึงรันไทม์ได้ของ Bootloader (ดูรายละเอียดใน [พาร์ติชัน DT](#partition))

ดูรายละเอียดเกี่ยวกับการคอมไพล์กับ DTC และยืนยันผลของ DTO ในโฮสต์ได้ที่ คอมไพล์และยืนยัน

DT พาร์ติชัน

ระบุตำแหน่งที่เชื่อถือได้และเข้าถึงรันไทม์ของ Bootloader ได้ใน Flash เพื่อใส่ .dtb และ .dtbo

ตัวอย่างสถานที่ตั้งของ DT หลัก

  • ส่วนหนึ่งของพาร์ติชันการเปิดเครื่อง ต่อท้ายเคอร์เนล (image.gz)
  • แยก DT BLOB (.dtb) ในพาร์ติชันเฉพาะ (dtb)

ตัวอย่างตำแหน่งสำหรับ DT ที่วางซ้อน:

รูปที่ 1 ใส่ .dtbo ลงในพาร์ติชันที่ไม่ซ้ำกัน เช่น พาร์ติชัน dtbo

รูปที่ 2 ใส่ .dtbo ในพาร์ติชัน odm (ดำเนินการนี้เฉพาะเมื่อ Bootloader มี ความสามารถในการโหลดข้อมูลจากระบบไฟล์ของพาร์ติชัน odm)

หมายเหตุ: ขนาดของฟิลด์ พาร์ติชัน DT แบบวางซ้อนขึ้นอยู่กับอุปกรณ์และปริมาณการเปลี่ยนแปลงที่ต้องการ ด้านบนของ DT BLOB หลัก โดยปกติ 8 MB ก็เกินพอและ เติบโตในอนาคตหากจำเป็น

สำหรับอุปกรณ์ที่รองรับ การอัปเดตที่ราบรื่น (A/B), A/B พาร์ติชัน DT และโอเวอร์เลย์หลัก:

รูปที่ 3 A/B พาร์ติชัน DTBO ตัวอย่างที่ 1

รูปที่ 4 A/B พาร์ติชัน DTBO ตัวอย่างที่ 2

เรียกใช้ใน Bootloader

วิธีเรียกใช้มีดังนี้

รูปที่ 5 การใช้งานรันไทม์ทั่วไปสำหรับ DTO ใน Bootloader

  1. โหลด .dtb จากพื้นที่เก็บข้อมูลลงในหน่วยความจำ
  2. โหลด .dtbo จากพื้นที่เก็บข้อมูลลงในหน่วยความจำ
  3. ซ้อนทับ .dtb ด้วย .dtbo เพื่อเป็น DT ที่ผสานรวม
  4. เคอร์เนลเริ่มต้นโดยใช้ที่อยู่หน่วยความจำของ DT ที่ผสานรวม

รักษาความเข้ากันได้

DTB หลัก (จากผู้ให้บริการ SoC) จะถือเป็นแพลตฟอร์ม API สำหรับ DTBO หลัง การแยก DT เป็นส่วนทั่วไป SoC และส่วนเฉพาะอุปกรณ์ คุณต้องทำให้ทั้ง 2 ส่วนทำงานร่วมกันได้ในอนาคต ซึ่งรวมถึง

  • คำจำกัดความของ DT ใน DT หลัก ตัวอย่างเช่น โหนด พร็อพเพอร์ตี้ ป้ายกำกับ การเปลี่ยนแปลงคำจำกัดความใน DT หลักอาจทำให้เกิดการเปลี่ยนแปลงในการวางซ้อน DT. ตัวอย่างเช่น หากต้องการแก้ไขชื่อโหนดใน DT หลัก ให้กำหนด "ชื่อแทน" ติดป้ายกำกับ แมปกับชื่อโหนดเดิม (เพื่อหลีกเลี่ยงการเปลี่ยนแปลง DT ที่ซ้อนทับ)
  • ตำแหน่งร้านค้า DT ซ้อนทับ เช่น ชื่อพาร์ติชัน ร้านค้า

ตรวจสอบความปลอดภัย

Bootloader ต้องตรวจสอบว่า DTB หรือ DTBO ปลอดภัย ไม่มีการแก้ไข และไม่เสียหาย คุณสามารถใช้โซลูชันใดก็ได้เพื่อรักษาความปลอดภัยให้ DTB หรือ DTBO เช่น ภาพรองเท้า ลายเซ็นใน VBoot 1.0 หรือ AVB HASH footer (VBoot 2.0)

  • หาก DTB หรือ DTBO อยู่ในพาร์ติชันที่ไม่ซ้ำกัน คุณสามารถเพิ่มพาร์ติชันนั้นลงในฟังก์ชัน ความน่าเชื่อถือของ AVB ห่วงโซ่ความน่าเชื่อถือเริ่มต้นจากรูทที่ได้รับการคุ้มครองด้วยฮาร์ดแวร์ของ เชื่อถือและไปที่ Bootloader ซึ่งยืนยันความถูกต้องสมบูรณ์ ของพาร์ติชัน DTB หรือ DTBO
  • หาก DTB หรือ DTBO อยู่ในพาร์ติชันที่มีอยู่ (เช่น odm พาร์ติชัน) พาร์ติชันดังกล่าวควรอยู่ในเชนความน่าเชื่อถือของ AVB (พาร์ติชัน DTBO แชร์คีย์สาธารณะกับพาร์ติชัน odm ได้)

โปรดดูรายละเอียดที่หัวข้อยืนยันแล้ว เปิดเครื่อง