Lớp phủ cây thiết bị

Cây thiết bị (DT) là cấu trúc dữ liệu của các nút và thuộc tính được đặt tên mô tả phần cứng không phát hiện được. 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. Các nhà cung cấp phần cứng cung cấp các tệp nguồn cây thiết bị (DTS) riêng, được biên dịch thành tệp blob cây thiết bị (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 trên 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à thay đổ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

Quá trình tải DT trong trình tải khởi động liên quan đến 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.

  1. 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. Cài đặt ROM tệp .dtb vào một vị trí có thể truy cập vào thời gian chạy của trình tải khởi động (thông tin chi tiết ở bên dưới).

  2. Để phân vùng, hãy xác định một 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 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
    thêm 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).

  3. 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 tải khởi động thông thường để tải một DT và cung cấp danh sách các thuật ngữ phổ biến về DT. 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định dạng phân vùng DTO và DTBO bắt buộc.