테스트 환경
- Ubuntu 22.04
- SK-AM62A-LP
- 09_02_00_05 Processor SDK
Device Tree Overlay
장치 트리 오버레이는 장치 트리 구조에 대한 수정 사항을 포함하는 바이너리 파일입니다. 원래 장치 트리 소스(DTS) 파일을 직접 수정하는 대신 오버레이를 사용하면 시스템을 다시 컴파일하거나 재부팅하지 않고도 변경 사항을 동적으로 적용할 수 있습니다. 오버레이 파일(*. dtbo)은 장치 트리 오버레이 소스(DTO) 파일을 컴파일하여 생성됩니다.
장치 트리 오버레이(DTO)를 사용할지 아니면 전체 장치 트리(DT)를 수정할지는 여러 요인에 따라 달라집니다. DTO를 사용하려면 일반적인 DT 구문에 익숙해야 하며, 기본 DT를 참조해야 오버레이 수정 사항을 이해할 수 있습니다.
특정 경우에는 전체 DT 소스에서 직접 변경하는 것보다 DTO를 사용하는 것이 더 실용적입니다. 예를 들어 노드의 status 속성을 변경하는 것과 같은 간단한 수정을 하기 위해 편리하게 수정이 가능합니다. DTO를 활용하면 동일한 DT 내에서 여러 구성을 유지할 수 있습니다.
파일 포맷
source( *.dts): 장치 트리 오버레이는 장치 트리의 텍스트 표현인 장치 트리 소스(DTS) 언어를 사용하여 정의됩니다. 이 형식의 구조를 포함하는 파일의 확장자는. dts이지만. dts에서. dtso로 천천히 바뀌고 있습니다.
Blob( *.dtbo): DTBO에는 커널이 장치와 상호 작용하는 데 필요한 하드웨어 구성에 대한 정보가 들어 있습니다. 디바이스 트리 오버레이는 기존의 디바이스 트리에 추가적인 하드웨어 구성 정보를 덧붙이거나 수정하기 위해 사용됩니다. 오버레이 바이너리는 부트로더에 의해 로드되고 부팅 시 커널에 바인딩됩니다. 이 바이너리가 포함된 파일의 확장명은 다음과 같습니다. *.dtbo
오버레이 형태
// SPDX-License-Identifier: GPL-2.0
/*
* IMX219 (RPi v2) Camera Module
* Copyright (C) 2023 Texas Instruments Incorporated - https://www.ti.com/
*/
/dts-v1/;
/plugin/;
#include <dt-bindings/gpio/gpio.h>
&{/} {
clk_imx219_fixed: imx219-xclk {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <24000000>;
};
};
&main_i2c2 {
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
};
&csi0_port0 {
status = "okay";
};
<k3-am62x-sk-csi2-imx219.dtso>
- 일반적인 /dts-v1/; 헤더가 있지만 DTO 특정 헤더인 /plugin/;도 있는데, 이는 파일을 DT가 아닌 DTO로 구분합니다.
- DTO가 올바른 DT 위에 적용될 수 있도록 호환성을 설정하는 compatible 속성을 갖는 루트 노드(/)가 있습니다.
- &main_i2c2 및 &csi0_port0은 상태 등의 속성을 가진 레이블로 참조되는 노드입니다.
장치 트리 사용자 지정 및 배포
장치 트리를 사용자 지정하고 사용하는 과정은 4단계로 구성됩니다.
- 기본 장치 트리 소스를 선택
- 하드웨어에 맞게 수정
- 장치 트리 소스 컴파일
- OS 이미지에 장치 트리 배포
Base Device Tree Overlay
필요한 하드웨어 구성을 포함하는 경우 즉시 사용 가능한 오버레이를 선택할 수 있습니다.
장치 트리 파일은 칩 제조사에서 제공하며 Linux 커널 소스 코드, 메인라인 또는 다운스트림에서 사용할 수 있습니다. 일반적으로 arch/arm/boot/dts또는 arch/arm64/boot/dts디렉토리에서 찾을 수 있습니다.
Compile the Device Tree Source
장치 트리를 변경한 후에는 부트로더가 로드할 수 있는 파일(*. dtbo)로 컴파일해야 합니다.
컴파일을 수행하려면 Linux 커널에 대한 빌드 환경을 구성하고 Linux 배포판의 올바른 버전과 요소를 설정하고 Device Tree Compiler 도구를 사용해야 합니다.
장치 트리의 독립 실행형 컴파일을 수행하고 Linux 배포판에 배포할 BLOB 파일을 생성하려면 make를 사용하여 빌드해야 한다.
[09] AM62A-SK Processor SDK Build
테스트 환경Ubuntu 22.04SK-AM62A-LP09_01_00_07 Processor SDKAM62A 시리즈는 1~2대의 카메라가 필요한 비전 애플리케이션용으로 설계되었습니다. H.264/H.265V 비디오 코덱, RGB-IR을 지원하는 이미지 센
rorsi.tistory.com
Deploy the Device Tree to the OS image
ti사에서는 Camera를 사용하기 위해 name_overlays 항목을 사용합니다. name_overlays는 U-Boot 환경 변수에서 특정 디바이스 트리 오버레이를 지정하는 데 사용되는 변수입니다. 이는 주로 시스템에서 추가 하드웨어를 지원하거나 기능을 활성화하기 위해 동적으로 디바이스 트리 파일(. dtb)을 수정할 때 활용됩니다.
name_overlays는 uEnv.txt에서 수정하며, uEnv.txt는 U-Boot에서 사용하는 설정 파일로, 환경 변수를 외부에서 쉽게 정의하거나 수정할 수 있도록 설계되었습니다. 이 파일은 일반적으로 부팅 매체(SD 카드, eMMC 등)의 첫 번째 파티션에 위치합니다.
/boot/uEnv.txt 파일의 내용은 아래와 같습니다.
# This uEnv.txt file can contain additional environment settings that you
# want to set in U-Boot at boot time. This can be simple variables such
# as the serverip or custom variables. The format of this file is:
# variable=value
# NOTE: This file will be evaluated after the bootcmd is run and the
# bootcmd must be set to load this file if it exists (this is the
# default on all newer U-Boot images. This also means that some
# variables such as bootdelay cannot be changed by this file since
# it is not evaluated until the bootcmd is run.
# Setting the right U-Boot environment variables
name_overlays=
IMX219 카메라를 추가하고 싶다면 아래와 같이 수정하면 됩니다.
name_overlays=k3-am62x-sk-csi2-imx219
Applying the overlay manually
컴파일된 오버레이는 fdtoverlay 명령을 사용하여 이미 존재하는 장치 트리 블롭에 적용할 수 있습니다.
ftdoverlay 명령은 기본 장치 트리 블롭을 가져와 오버레이를 적용하여 새 장치 트리를 생성합니다.
$ fdtoverlay --help
Usage: apply a number of overlays to a base blob
fdtoverlay <options> [<overlay.dtbo> [<overlay.dtbo>]]
<type> s=string, i=int, u=unsigned, x=hex
Optional modifier prefix:
hh or b=byte, h=2 byte, l=4 byte (default)
Options: -[i:o:vhV]
-i, --input <arg> Input base DT blob
-o, --output <arg> Output DT blob
-v, --verbose Verbose messages
-h, --help Print this help and exit
-V, --version Print version and exit
사용방법은 다음과 같습니다.
fdtoverlay -i k3-am62a7-sk.dtb -o k3-am62a7-sk-extended.dtb k3-am62x-sk-csi2-imx219.dtbo
만들어진 k3-am62a7-sk-extended.dtb 파일을 기존 경로(/boo/dtb/ti)에 k3-am62a7-sk.dtb 파일과 교체한 후 부팅하면 k3-am62x-sk-csi2-imx219.dtbo 내용이 적용되어 있는 것을 확인할 수 있습니다.
교체 전 수정 사항이 적용되었는지 확인하려면 fdtdump 명령어를 이용하여 확인이 가능합니다.
fdtdump k3-am62a7-sk-extended.dtb
참고 :
https://www.kernel.org/doc/html/latest/devicetree/overlay-notes.html#devicetree-overlay-notes
Devicetree Overlay Notes — The Linux Kernel documentation
Devicetree Overlay Notes This document describes the implementation of the in-kernel device tree overlay functionality residing in drivers/of/overlay.c and is a companion document to Devicetree Dynamic Resolver Notes[1] How overlays work A Devicetree’s o
www.kernel.org
2. Getting started — Processor SDK AM62Ax Documentation
Processor SDK Linux Edge AI for AM62Ax Docs » 2. Getting started 2. Getting started 2.1. Hardware setup 2.1.1. AM62Ax EVM AM62Ax EVM is a low cost, small form factor board designed to bring smart cameras, robots and intelligent machines to life. For more
software-dl.ti.com
'Linux' 카테고리의 다른 글
Synology File Station Upload & Download API (1) | 2024.12.26 |
---|---|
[Kernel] Device Tree (0) | 2024.11.23 |
Synology File Station에서 공유 링크를 wget/curl로 다운받는 방법 (0) | 2024.09.19 |
[Kernel] Device-tree probe Platform Driver (0) | 2024.03.11 |
v4l2loopback (0) | 2024.01.21 |