Kể từ ngày 27 tháng 3 năm 2025, bạn nên sử dụng android-latest-release
thay vì aosp-main
để xây dựng và đóng góp cho AOSP. Để biết thêm thông tin, hãy xem phần Thay đổi đối với AOSP.
Lớp phủ cây thiết bị
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Cây thiết bị (DT) là một cấu trúc dữ liệu gồm các nút và thuộc tính được đặt tên mô tả phần cứng không thể phát hiện. Các hạt nhân, chẳng hạn như hạt nhân Linux dùng trong Android, sử dụng DT để hỗ trợ nhiều cấu hình phần cứng mà các thiết bị chạy Android sử dụng. Nhà cung cấp phần cứng cung cấp các tệp nguồn cây thiết bị (DTS) của riêng họ. Các tệp này được biên dịch thành tệp cây thiết bị blob (DTB) bằng trình biên dịch cây thiết bị. Sau đó, các tệp này sẽ được trình tải khởi động sử dụng. Tệp DTB chứa cây thiết bị được làm phẳng ở định dạng tệp nhị phân.
Lớp phủ cây thiết bị (DTO) cho phép phủ DTB trung tâm trên DT (vùng nhớ khối xếp cây thiết bị cho lớp phủ (DTBO)). Trình tải khởi động sử dụng DTO có thể duy trì DT hệ thống trên chip (SoC) và phủ động một DT dành riêng cho thiết bị, thêm các nút vào cây và thực hiện thay đổi đối với các thuộc tính trong cây hiện có.
Nội dung cập nhật trong bản phát hành Android 9
Trong Android 9, trình tải khởi động không được sửa đổi các thuộc tính được xác định trong DTO trước khi truyền DTB hợp nhất vào hạt nhân.
Tải DT
Việc tải DT trong trình tải khởi động bao gồm việc tạo, phân vùng và chạy.

Hình 1. Cách triển khai thông thường để tải cây thiết bị trong trình tải khởi động.
Cách tạo và cài đặt ROM DTB:
1a. Sử dụng DTC (dtc
) để biên dịch DTS (.dts
) thành DTB (.dtb
). DTB được định dạng dưới dạng DT được làm phẳng.
1b. Truyền tệp .dtb
vào một vị trí có thể truy cập trong thời gian chạy của trình tải khởi động (chi tiết bên dưới).
Để phân vùng, hãy xác định một vị trí đáng tin cậy và có thể truy cập trong thời gian chạy của trình tải khởi động trong bộ nhớ flash để đặt .dtb
. Các vị trí mẫu:

Hình 2. Đặt .dtb vào phân vùng khởi động bằng cách nối vào image.gz và truyền dưới dạng "kernel" đến mkbootimg.
|

Hình 3. Đặt .dtb vào một phân vùng duy nhất (ví dụ: phân vùng dtb).
|
Cách tải DTB và khởi động hạt nhân:
- Tải
.dtb
từ bộ nhớ vào bộ nhớ.
- Khởi động hạt nhân bằng địa chỉ bộ nhớ của DT đã tải.
Tiếp theo là gì?
Trang này trình bày chi tiết quy trình làm việc thông thường của trình tải khởi động để tải DT và cung cấp danh sách các thuật ngữ DT phổ biến. Các trang khác trong phần này mô tả cách triển khai tính năng hỗ trợ trình tải khởi động, cách biên dịch, xác minh và tối ưu hoá DTO cũng như cách sử dụng nhiều DT. Bạn cũng có thể xem thông tin chi tiết về cú pháp DTO và định dạng phân vùng DTO và DTBO bắt buộc.
Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
Cập nhật lần gần đây nhất: 2025-07-27 UTC.
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 2025-07-27 UTC."],[],[],null,["# Device tree overlays\n\n\u003cbr /\u003e\n\nA *device tree (DT)* is a data structure of named nodes and properties that\ndescribe non-discoverable hardware. Kernels, such as the Linux kernel\nused in Android, use DTs to support a wide range of hardware configurations used\nby Android-powered devices. Hardware vendors supply their own *device tree\nsource (DTS)* files, which are compiled into the *device tree blob (DTB)* file\nusing the *device tree compiler* . These files are then used by the\nbootloader. The DTB file contains a binary-formatted *flattened device tree*.\n\nA [*device tree overlay (DTO)*](https://lkml.org/lkml/2012/11/5/615)\nenables a central DTB to be overlaid on the DT (a *device tree blob\nfor overlay (DTBO)*). A bootloader using DTO can maintain the system-on-chip\n(SoC) DT and dynamically overlay a device-specific DT, adding nodes to the tree\nand making changes to properties in the existing tree.\n\nUpdates in Android 9 release\n----------------------------\n\nIn Android 9, the bootloader must not modify the\nproperties defined in the DTOs before passing the unified DTB to the kernel.\n\nLoad a DT\n---------\n\nLoading a DT in bootloader involves building, partitioning, and running.\n\n**Figure 1.** Typical implementation for loading device tree in bootloader.\n\n1. To create and flash the DTB:\n\n 1a. Use the DTC (`dtc`) to compile DTS (`.dts`) into a DTB (`.dtb`).\n The DTB is formatted as a flattened DT.\n 1b. Flash the `.dtb` file into a bootloader runtime-accessible location\n (detailed below).\n2. To partition, determine a bootloader runtime-accessible and trusted location\n in flash memory to put `.dtb`. Example locations:\n\n \u003cbr /\u003e\n\n |-----------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------|\n | **Figure 2.** Put .dtb in a boot partition by appending to image.gz and passing as \"kernel\" to mkbootimg. | **Figure 3.** Put .dtb in a unique partition (for example, dtb partition). |\n\n \u003cbr /\u003e\n\n3. To load the DTB and start the kernel:\n\n - Load `.dtb` from storage into memory.\n - Start kernel using the memory address of the loaded DT.\n\nWhat's next?\n------------\n\nThis page details a typical bootloader workflow for loading a DT and provides\na list of common DT terms. Other pages in this section describe how to\n[implement bootloader support](/docs/core/architecture/dto/implement), how to\n[compile](/docs/core/architecture/dto/compile), verify, and\n[optimize your DTO](/docs/core/architecture/dto/optimize), and how to\n[use multiple DTs](/docs/core/architecture/dto/multiple). You can\nalso get details on [DTO syntax](/docs/core/architecture/dto/syntax) and\nrequired\n[DTO and DTBO partition formatting](/docs/core/architecture/dto/partitions)."]]