다중 DT 사용

다수의 SoC 공급업체 및 ODM이 기기에 다중 DT를 사용할 수 있도록 지원하며, 이를 통해 하나의 이미지를 여러 SKU/구성에 사용할 수 있습니다. 이러한 경우 부트로더는 하드웨어를 식별하고 해당하는 DT를 런타임 시점에 로드합니다.

그림 1. 부트로더의 여러 기기 트리 오버레이

참고: 다중 DT의 사용이 필수는 아닙니다.

설정

DTO 모델에 다중 DT 지원을 추가하려면 기본 DT 목록과 또 다른 오버레이 DT 목록을 설정합니다.

그림 2. 다중 DT의 런타임 DTO 구현

부트로더는 다음을 수행할 수 있어야 합니다.

  • SoC ID를 읽고 해당하는 기본 기기 트리를 선택
  • 보드 ID를 읽고 이에 맞게 오버레이 기기 트리 집합을 선택

런타임 시에 사용할 1개의 기본 DT만 선택해야 합니다. 여러 개의 오버레이 DT를 선택할 수는 있지만 오버레이 DT가 선택한 기본 DT와 호환되어야 합니다. 여러 개의 오버레이를 사용하면 DTBO 파티션 내에서 보드당 1개의 오버레이가 저장되는 결과를 피하고 부트로더가 보드 ID에 따라(또는 주변기기를 파악하여) 필수 오버레이의 하위 집합을 결정할 수 있습니다. 예를 들어 A 보드에는 오버레이 1, 3, 5에 의해 추가된 기기가 필요할 수 있는 반면 B 보드에는 오버레이 1, 4, 5에 의해 추가된 기기가 필요할 수 있습니다.

파티션 나누기

파티션을 나누려면 DTB와 DTBO를 저장할 플래시 메모리에서 부트로더 런타임으로 액세스 가능하며 신뢰할 수 있는 위치를 파악해야 합니다. 부트로더는 일치하는 프로세스에서 이러한 파일을 찾아낼 수 있어야 합니다. DTB 및 DTBO는 같은 파티션에 존재할 수 없음을 기억해야 합니다. DTB/DTBO가 dtb/dtbo 파티션에 있는 경우 DTB/DTBO 파티션 형식에 자세히 설명된 테이블 구조와 헤더 형식을 사용하세요.

부트로더에서 실행

실행 방법:

  1. SoC를 식별하고 해당하는 .dtb를 저장소에서 메모리로 로드합니다.
  2. 보드를 식별하고 해당하는 .dtbo를 저장소에서 메모리로 로드합니다.
  3. .dtb를 병합된 DT로 만들 .dtbo로 오버레이합니다.
  4. 병합된 DT의 메모리 주소가 주어진 커널을 시작합니다.