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.
Sử dụng nhiều DT
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.
Nhiều nhà cung cấp SoC và ODM hỗ trợ việc sử dụng nhiều cây thiết bị (DT) trên một thiết bị, cho phép một hình ảnh cung cấp năng lượng cho nhiều SKU hoặc cấu hình. Trong những trường hợp như vậy, trình tải khởi động sẽ xác định phần cứng và tải DT tương ứng trong thời gian chạy:

Hình 1. Nhiều lớp phủ cây thiết bị (DTO) trong trình tải khởi động.
Lưu ý: Bạn không bắt buộc phải sử dụng nhiều DT.
Thiết lập
Để thêm tính năng hỗ trợ cho nhiều DT vào mô hình DTO, hãy thiết lập danh sách DT chính và một danh sách DT lớp phủ khác.

Hình 2. Triển khai DTO thời gian chạy cho nhiều DT.
Trình tải khởi động phải có khả năng:
- Đọc mã SoC và chọn DT chính tương ứng.
- Đọc mã bảng và chọn bộ DT lớp phủ tương ứng.
Chỉ nên chọn một DT chính để sử dụng trong thời gian chạy. Bạn có thể chọn nhiều DT lớp phủ nhưng các DT đó phải tương thích với DT chính đã chọn. Việc sử dụng nhiều lớp phủ có thể giúp tránh việc lưu trữ một lớp phủ cho mỗi bo mạch trong phân vùng DTBO và cho phép trình tải khởi động xác định tập hợp con các lớp phủ bắt buộc dựa trên mã nhận dạng bo mạch (hoặc có thể bằng cách thăm dò các thiết bị ngoại vi). Ví dụ: Bảng A có thể cần các thiết bị được thêm bằng lớp phủ 1, 3 và 5, trong khi Bảng B có thể cần các thiết bị được thêm bằng lớp phủ 1, 4 và 5.
Phân vùng
Để phân vùng, hãy xác định một vị trí đáng tin cậy và có thể truy cập được trong thời gian chạy của trình tải khởi động trong bộ nhớ flash để lưu trữ DTB và DTBO (trình tải khởi động phải có thể định vị các tệp này trong quá trình so khớp). Xin lưu ý rằng DTB và DTBO không thể tồn tại trong cùng một phân vùng. Nếu DTB/DTBO nằm trong phân vùng dtb
/dtbo
, hãy sử dụng cấu trúc bảng và định dạng tiêu đề được nêu chi tiết trong định dạng phân vùng DTB và DTBO.
Chạy trong trình tải khởi động
Cách chạy:
- Xác định SoC và tải tệp .dtb tương ứng từ bộ nhớ vào bộ nhớ.
- Xác định bo mạch và tải
.dtbo
tương ứng từ bộ nhớ vào bộ nhớ.
- Lớp phủ
.dtb
với .dtbo
để tạo thành một DT hợp nhất.
- Bắt đầu hạt nhân dựa trên địa chỉ bộ nhớ của DT đã hợp nhất.
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-26 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-26 UTC."],[],[],null,["# Use multiple DTs\n\nMany SoC vendors and ODMs support the use of multiple device trees (DTs) on a device,\nenabling one image to power multiple SKUs or configurations. In such cases, the\nbootloader identifies the hardware and loads the corresponding DT at runtime:\n\n**Figure 1.** Multiple device tree overlays (DTOs) in bootloader.\n\n**Note:** Using multiple DTs isn't mandatory.\n\nSet up\n------\n\nTo add support for multiple DTs to the DTO model, set up a list of main DTs\nand another list of overlay DTs.\n\n**Figure 2.** Runtime DTO implementation for multiple DTs.\n\nThe bootloader should be able to:\n\n- Read the SoC ID and select the corresponding main DT.\n- Read the board ID and select the set of overlay DTs accordingly.\n\nOnly one main DT should be selected for use at runtime. Multiple overlay DTs\nmay be selected but they must be compatible with the chosen main DT. Using\nmultiple overlays can help avoid storing one overlay per board within the DTBO\npartition and enable the bootloader to determine the subset of required overlays\nbased on the board ID (or possibly by probing the peripherals). For\nexample, Board A may need the devices added by the overlays 1, 3, and 5 while\nBoard B may need the devices added by the overlays 1, 4, and 5.\n\nPartition\n---------\n\nTo partition, determine a bootloader runtime-accessible and trusted location\nin flash memory to store the DTBs and DTBOs (bootloader must be able to locate\nthese files in the matching process). Keep in mind that DTBs and DTBOs cann't\nexist in the same partition. If your DTBs/DTBOs are in the\n`dtb`/`dtbo` partition, use the table structure and header\nformat detailed in [DTB and DTBO\npartition format](/docs/core/architecture/dto/partitions).\n\nRun in bootloader\n-----------------\n\nTo run:\n\n1. **Identify the SoC** and load the corresponding .dtb from storage into memory.\n2. **Identify the board** and load the corresponding `.dtbo` from storage into memory.\n3. Overlay the `.dtb` with the `.dtbo` to be a merged DT.\n4. Start kernel given the memory address of the merged DT."]]