기기 트리(DT)는 검색할 수 없는 하드웨어를 설명하는 이름이 지정된 노드와 속성의 데이터 구조입니다. Android에서 사용되는 Linux 커널과 같은 커널은 DT를 사용하여 Android 기반 기기에 사용되는 광범위한 하드웨어 구성을 지원합니다. 하드웨어 공급업체는 자체 기기 트리 소스(DTS) 파일을 제공합니다. 이 파일은 기기 트리 컴파일러를 사용하여 기기 트리 Blob(DTB) 파일로 컴파일됩니다. 그러면 부트로더에서 이 파일을 사용합니다. DTB 파일에는 바이너리 형식의 평면화된 기기 트리가 포함되어 있습니다.
기기 트리 오버레이(DTO)는 중앙 기기 트리 Blob(DTB)을 기기 트리에 오버레이할 수 있도록 지원합니다. DTO를 사용하는 부트로더는 단일 칩 시스템(SoC) DT를 유지하고 기기별 DT를 동적으로 오버레이하여 노드를 트리에 추가하고 기존 트리의 속성을 변경할 수 있습니다.
DTBO: 오버레이용 기기 트리 Blob
Android 9 출시에 포함된 업데이트
Android 9에서는 통합 기기 트리 blob을 커널에 전달하기 전에 부트로더가 기기 트리 오버레이에 정의된 속성을 수정하면 안 됩니다.
기기 트리 로드
부트로더에 기기 트리를 로드하는 과정에는 빌드, 파티션 나누기 및 실행이 포함됩니다.
그림 1. 부트로더에 기기 트리를 로드하기 위한 일반적인 구현
기기 트리 blob을 만들고 플래시하는 방법은 다음과 같습니다.
1a. 기기 트리 컴파일러(dtc>)를 사용하여 기기 트리 소스(.dts)를 기기 트리 blob(.dtb)에 컴파일합니다. 기기 트리 blob은 평면화된 기기 트리로 형식이 지정됩니다.
1b. .dtb 파일을 부트로더 런타임으로 액세스 가능한 위치에 플래시합니다(자세한 내용은 아래 참고).
파티션을 분할하려면 플래시 메모리에서 부트로더 런타임으로 액세스 가능한 신뢰할 수 있는 위치를 파악하여 .dtb를 배치합니다. 위치의 예는 다음과 같습니다.
부팅 파티션
그림 2..dtb를 image.gz에 추가하고 'kernel'로 mkbootimg에 전달하여 부팅 파티션에 배치합니다.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2024-05-02(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2024-05-02(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)."]]