장치 트리(DT) 는 검색할 수 없는 하드웨어를 설명하는 명명된 노드 및 속성의 데이터 구조입니다. Android에서 사용되는 Linux 커널과 같은 커널은 DT를 사용하여 Android 기반 기기에서 사용되는 광범위한 하드웨어 구성을 지원합니다. 하드웨어 공급업체는 Device Tree Compiler 를 사용하여 DTB(Device Tree Blob) 파일로 컴파일되는 자체 DTS(Device Tree Source ) 파일을 제공합니다. 이 파일은 부트로더에서 사용됩니다. DTB 파일에는 이진 형식의 평면화된 장치 트리 가 포함되어 있습니다.
장치 트리 오버레이(DTO) 를 사용하면 중앙 장치 트리 Blob(DTB)을 장치 트리에 오버레이할 수 있습니다. DTO를 사용하는 부트로더는 SoC(시스템 온 칩) DT를 유지하고 장치별 DT를 동적으로 오버레이하여 트리에 노드를 추가하고 기존 트리의 속성을 변경할 수 있습니다.
Android 9 릴리스의 업데이트
Android 9에서 부트로더는 통합 기기 트리 blob을 커널에 전달하기 전에 기기 트리 오버레이에 정의된 속성을 수정하면 안 됩니다.
장치 트리 로드
부트로더에서 장치 트리를 로드하려면 빌드, 분할 및 실행이 포함됩니다.

장치 트리 Blob을 만들고 플래시하려면:
1a. 장치 트리 컴파일러(
dtc
>)를 사용하여 장치 트리 소스(.dts
)를 장치 트리 Blob(.dtb
)으로 컴파일합니다. 장치 트리 Blob은 평면화된 장치 트리로 형식이 지정됩니다. 1b..dtb
파일을 부트로더 런타임에서 액세스할 수 있는 위치로 플래시합니다(자세한 내용은 아래 참조).파티션을 나누려면 플래시 메모리에서 부트로더 런타임에 액세스할 수 있고 신뢰할 수 있는 위치를 결정하여
.dtb
를 넣습니다. 예시 위치:부트 파티션 그림 2. .dtb
에 추가하고 mkbootimg에 "kernel
"로 전달하여 부팅 파티션에image.gz
를mkbootimg
.고유 파티션 그림 3. .dtb
를 고유한 파티션(예:dtb
파티션)에 넣습니다.장치 트리 blob을 로드하고 커널을 시작하려면 다음을 수행하십시오.
3a. 저장소에서 메모리로
.dtb
를 로드합니다. 3b. 로드된 DT의 메모리 주소를 사용하여 커널을 시작합니다.
무엇 향후 계획?
이 페이지에서는 DT를 로드하기 위한 일반적인 부트로더 워크플로를 자세히 설명하고 일반적인 DT 용어 목록을 제공합니다. 이 섹션의 다른 페이지에서는 부트로더 지원을 구현 하는 방법, DTO 를 컴파일 , 확인 및 최적화하는 방법, 여러 DT를 사용 하는 방법을 설명합니다. DTO 구문 및 필요한 DTO/DTBO 파티션 형식 에 대한 세부 정보도 얻을 수 있습니다.