Triển khai các DTO

Việc triển khai lớp phủ cây thiết bị (DTO) bao gồm việc chia cây thiết bị (DT), toà nhà, phân vùng và chạy. Sau khi triển khai hiệu quả, bạn cũng phải duy trì khả năng tương thích giữa hai DT và xác định chiến lược để đảm bảo của mỗi phân vùng DT.

Chia DT

Bắt đầu bằng cách chia DT thành hai phần:

  • DT chính. Phần chỉ dành cho SoC và cấu hình mặc định, do nhà cung cấp SoC cung cấp.
  • Lớp phủ DT. Các cấu hình dành riêng cho thiết bị, được cung cấp bởi ODM/OEM.

Sau khi phân chia DT, bạn phải đảm bảo khả năng tương thích giữa DT và phủ DT để việc hợp nhất DT chính và lớp phủ DT sẽ tạo ra DT cho thiết bị. Để biết chi tiết về định dạng và các quy tắc của DTO, hãy xem Cú pháp DTO. Để biết thông tin chi tiết về nhiều DT, xem Nhiều DT.

Tạo DT chính và lớp phủ

Cách tạo DT chính:

  1. Biên dịch DT chính .dts thành một tệp .dtb.
  2. Cài đặt ROM tệp .dtb vào một phân vùng có thể truy cập vào thời gian chạy của trình tải khởi động (chi tiết trong phần [Phân vùng DTs](#phân vùng)).

Cách tạo lớp phủ DT:

  1. Biên dịch lớp phủ DT .dts thành tệp .dtbo. Trong khi định dạng tệp này giống với tệp .dtb được định dạng DT được làm phẳng, đuôi tệp khác nhau sẽ giúp phân biệt tệp này với DT chính.
  2. Cài đặt ROM tệp .dtbo vào một phân vùng có thể truy cập vào thời gian chạy của trình tải khởi động (chi tiết trong phần [Phân vùng DTs](#phân vùng)).

Để biết chi tiết về việc biên dịch bằng DTC và xác minh kết quả của DTO trên máy chủ lưu trữ, hãy xem Biên dịch và xác minh.

DT phân vùng

Xác định vị trí đáng tin cậy và có thể truy cập vào thời gian chạy của trình tải khởi động trong flash để đặt .dtb.dtbo.

Các vị trí ví dụ cho DT chính:

  • Một phần của phân vùng khởi động, được thêm vào nhân (image.gz)
  • Tách riêng các DT (.dtb) trong phân vùng chuyên dụng (dtb)

Ví dụ về vị trí cho lớp phủ DT:

Hình 1. Đặt .dtbo vào một phân vùng duy nhất, chẳng hạn như phân vùng dtbo.

Hình 2. Đặt .dtbo vào một phân vùng odm (chỉ thực hiện việc này nếu trình tải khởi động của bạn có khả năng tải dữ liệu từ hệ thống tệp của phân vùng odm).

Lưu ý: Kích thước của phần lớp phủ phân vùng DT phụ thuộc vào thiết bị và số lượng thay đổi cần thiết ở trên cùng của đốm DT chính. Thông thường, 8 MB là quá đủ và cho phép phát triển trong tương lai nếu cần.

Đối với các thiết bị hỗ trợ cập nhật liền mạch (A/B), A/B phân vùng DT chính và lớp phủ:

Hình 3. Phân vùng DTBO A/B, ví dụ 1.

Hình 4. Phân vùng DTBO A/B, ví dụ 2.

Chạy trong trình tải khởi động

Cách chạy:

Hình 5. Phương thức triển khai thời gian chạy điển hình cho DTO trong trình tải khởi động.

  1. Tải .dtb từ bộ nhớ vào bộ nhớ.
  2. Tải .dtbo từ bộ nhớ vào bộ nhớ.
  3. Lớp phủ .dtb với .dtbo để trở thành DT hợp nhất.
  4. Hạt nhân khởi động dựa vào địa chỉ bộ nhớ của DT đã hợp nhất.

Duy trì khả năng tương thích

DTB chính (của nhà cung cấp SoC) được coi là nền tảng API cho các DTBO. Sau tách DT thành phần chung của SoC và phần dành riêng cho thiết bị, bạn phải giữ hai phần này tương thích lẫn nhau trong tương lai, bao gồm:

  • Định nghĩa DT trong DT chính. Ví dụ: nút, thuộc tính, . Mọi thay đổi về định nghĩa trong DT chính đều có thể kích hoạt các thay đổi trong lớp phủ DT. Ví dụ: để sửa tên nút trong DT chính, hãy xác định một "ALIAS" gắn nhãn ánh xạ tới tên nút ban đầu (để tránh thay đổi DT lớp phủ).
  • Lớp phủ vị trí cửa hàng DT. Ví dụ: tên phân vùng, cửa hàng .

Đảm bảo tính bảo mật

Trình tải khởi động phải đảm bảo DTB hoặc DTBO là an toàn, không bị sửa đổi và không bị hỏng. Bạn có thể sử dụng bất kỳ giải pháp nào để bảo mật DTB hoặc DTBO, ví dụ: Hình ảnh khởi động chữ ký trong VBoot 1.0 hoặc AVB Chân trang HASH (VBoot 2.0).

  • Nếu DTB hoặc DTBO nằm trong một phân vùng duy nhất, bạn có thể thêm phân vùng đó vào chuỗi tin cậy của AVB. Chuỗi tin cậy bắt đầu từ một gốc được bảo vệ bằng phần cứng của tin cậy và chuyển đến trình tải khởi động. Trình tải này xác minh tính toàn vẹn và tính xác thực phân vùng DTB hoặc DTBO.
  • Nếu DTB hoặc DTBO nằm trong phân vùng hiện có (chẳng hạn như odm phân vùng), phân vùng đó phải nằm trong chuỗi tin cậy của AVB. (phân vùng DTBO có thể chia sẻ khoá công khai với phân vùng odm).

Để biết chi tiết, hãy tham khảo trang Đã xác minh Khởi động.