Device Tree (DT) คือโครงสร้างข้อมูลที่ประกอบด้วยโหนดและพร็อพเพอร์ตี้ที่มีชื่อซึ่งอธิบายฮาร์ดแวร์ที่ตรวจไม่พบ เคอร์เนลต่างๆ เช่น เคอร์เนลของ Linux ที่ใช้ใน Android ใช้ DT เพื่อรองรับการกำหนดค่าฮาร์ดแวร์ที่หลากหลายในอุปกรณ์ที่ใช้ Android ผู้ให้บริการฮาร์ดแวร์จะจัดหาไฟล์ซอร์สโค้ด (DTS) ของ Device Tree ของตนเอง ซึ่งจะคอมไพล์เป็นไฟล์ Device Tree Blob (DTB) โดยใช้คอมไพเลอร์ Device Tree จากนั้นไฟล์เหล่านี้จะใช้โดยโปรแกรมบูต ไฟล์ DTB มี Flattened Device Tree ในรูปแบบไบนารี
การวางซ้อนต้นไม้อุปกรณ์ (DTO) ช่วยให้คุณวางซ้อน DTB กลางใน DT ได้ (BLOB ต้นไม้อุปกรณ์สำหรับการวางซ้อน (DTBO)) บูตโหลดเดอร์ที่ใช้ DTO สามารถดูแลรักษา DT ของระบบบนชิป (SoC) และวางซ้อน DT สำหรับอุปกรณ์โดยเฉพาะแบบไดนามิก เพิ่มโหนดลงในต้นไม้ และเปลี่ยนแปลงพร็อพเพอร์ตี้ในต้นไม้ที่มีอยู่
การอัปเดตในรุ่น Android 9
ใน Android 9 บูตโหลดเดอร์ต้องไม่แก้ไขพร็อพเพอร์ตี้ที่กําหนดไว้ใน DTO ก่อนที่จะส่ง DTB แบบรวมไปยังเคอร์เนล
โหลด DT
การโหลด DT ใน Bootloader เกี่ยวข้องกับการสร้าง การแบ่งพาร์ติชัน และการทำงาน
รูปที่ 1 การใช้งานทั่วไปสำหรับการโหลดต้นไม้อุปกรณ์ใน Bootloader
วิธีสร้างและแฟลช DTB
1ก. ใช้ DTC (
dtc
) เพื่อคอมไพล์ DTS (.dts
) เป็น DTB (.dtb
) DTB มีรูปแบบเป็น DT ที่แยกเป็นหลายรายการ 1ข. แฟลชไฟล์.dtb
ไปยังตำแหน่งที่เข้าถึงได้ในช่วงรันไทม์ของบูตโหลดเดอร์ (ดูรายละเอียดด้านล่าง)ในการแบ่งพาร์ติชัน ให้กำหนดตำแหน่งที่เชื่อถือได้และเข้าถึงได้รันไทม์ของ Bootloader ในหน่วยความจำ Flash เพื่อใส่
.dtb
สถานที่ตัวอย่าง:รูปที่ 2 ใส่ .dtb ในพาร์ติชันการเปิดเครื่องโดย
ต่อท้าย image.gz แล้วส่งผ่าน
"kernel" ไปยัง mkbootimgรูปที่ 3 ใส่ .dtb ไว้ในพาร์ติชันที่ไม่ซ้ำกัน
(เช่น พาร์ติชัน dtb)วิธีโหลด DTB และเริ่มเคอร์เนล
- โหลด
.dtb
จากพื้นที่เก็บข้อมูลลงในหน่วยความจำ - เริ่มเคอร์เนลโดยใช้ที่อยู่หน่วยความจำของ DT ที่โหลด
- โหลด
สิ่งต่อไปที่ควรทำ
หน้านี้จะแสดงรายละเอียดเวิร์กโฟลว์ของบูตโหลดเดอร์ทั่วไปสำหรับการโหลด DT และแสดงรายการคําศัพท์ทั่วไปของ DT หน้าอื่นๆ ในส่วนนี้จะอธิบายวิธีใช้การรองรับ Bootloader, วิธีคอมไพล์ ยืนยัน และเพิ่มประสิทธิภาพ DTO และวิธีใช้ DT หลายรายการ นอกจากนี้ คุณยังดูรายละเอียดเกี่ยวกับไวยากรณ์ DTO และการจัดรูปแบบพาร์ติชัน DTO และ DTBO ที่จำเป็นได้ด้วย