5. 이미지 빌드
이 장에서는 이미지 빌드 프로세스와 함께 자세한 정보를 제공한다.
5.1 빌드 구성
i.MX는 i.MX 시스템의 설정을 단순화하는 imx-setup-release.sh 스크립트를 제공한다. 스크립트를 사용하려면 , 빌드할 특정 시스템의 이름과 원하는 그래픽 백엔드를 지정해야 한다. 스크립트는 지정된 시스템 및 백엔드에 대한 디렉터리와 구성 파일을 설정한다.
meta-imx 레이어에서 i.MX는 meta-freescale 시스템 구성을 기반으로(overlay) 신규 또는 업데이트된 시스템 구성을 제공한다. 이 파일은 imx-setup-release.sh 스크립트에 의해 meta-freescale/conf/machine 디렉터리에 복사된다. 다음은 선택할 수 있는 i.MX 시스템 구성 파일이다. 최신 추가 사항에 대해서는 릴리즈 정보나 시스템 디렉터리를 확인한다.
i.MX 6 | i.MX 7 | i.MX 8 |
|
|
|
각 빌드 폴더는 하나의 배포판(distro)만 사용하도록 구성해야 한다. DISTRO_FEATURES 변수가 변경될 때마다, "clean build folder(빌드 폴더 정리)"를 필요로 한다. 프레임 버퍼, Wayland와 XWayland등 각 그래픽 백엔드는 각각 배포(distro) 구성이 있다. DISTRO 파일을 지정하지 않으면, XWayland 배포판이 기본 값으로 설정된다. 배포판(distro) 구성은 DISTRO 설정이 있는 local.conf 파일에 저장되며 bitbake가 실행 중일때 표시된다. 과거 릴리즈에서는 poky 배포판(distro), 사용자 정의 버전과 공급자를 layer.conf에서 사용했지만 사용자 정의 배포판(distro)이 더 낳은 해결책이었다. 기본 poky 배포판(distro)을 사용하는 경우 기본 community 구성이 사용된다. i.MX 릴리즈로서 우리는 NXP가 지원하고 테스트한 구성 셋트를 선호한다.
다음은 DISTRO 구성 목록이다. fsl-mx-fb는 i.MX 8에서 지원되지 않고 fsl-imx-x11은 더 이상 지원되지 않는다.
- fsl-imx-wayland : Wayland weston 그래픽.
- fsl-imx-xwayland : Wayland 그래픽과 X11. EGL을 사용하는 X11 애플리케이션은 더 이상 지원하지 않음.
- fsl-imx-fb : 프레임 버퍼 그래픽(X11이나 Wayland가 아님). 프레임 버퍼는 i.MX 8에서 지원되지 않음.
사용자는 선호하는 버전이나 공급자를 설정하기 위해 local.conf를 업데이트하지 않고서, 그들의 환경을 사용자 정의하기 위해 이들 중 하나를 기반으로 자신의 배포판(distro) 파일을 만들 수 있다.
imx-setup-release.sh 스크립트의 사용법은 다음과 같다 :
$ DISTRO=<distro name> MACHINE=<machine name> source imx-setup-release.sh -b <build dir>
DISTRO=<distro configuration name>은 빌드 환경을 구성하는 배포판(distro)으로 meta-imx/meta-sdk/conf/distro에 저장된다.
MACHINE=<machine configuration name>은 meta-freescale 및 meta-imx에서 conf/machine의 구성 파일을 가리키는 시스템 이름이다.
-b <build dir>은 imx-setup-release.sh 스크립트에 의해 생성된 빌드 디렉터리의 이름을 지정한다.
스크립트가 실행되면 사용자에게 EULA 사용권 동의하라는 메세지가 표시된다. EULA 사용권 동의를 하면 각 빌드 폴더 안 local.conf 파일에 사용권 동의 수락에 대한 정보가 저장되고 해당 빌드 폴더에 대해 더 이상 EULA 사용권 동의 메세지가 표시되지 않는다.
스크립트 실행된 후 -b 옵션으로 지정된 스크립트에 의해 방금 생성된 디렉터리가 작업 디렉터리이다. bblayers.conf와 local.conf 파일을 포함하는 conf 폴더가 생성된다.
<build dir>/conf/bblayers.conf 파일에는 i.MX Yocto Project 릴리즈에서 사용된 메타레이어(metalayer)가 포함되어 있다.
local.conf 파일에는 시스템과 배포판(distro) 사양이 포함되어 있다 :
MACHINE ??= 'imx7ulpevk'
DISTRO ?= 'fsl-imx-xwayland'
ACCEPT_FSL_EULA = "1"
필요한 경우, 이 파일을 편집하여 MACHINE 구성을 변경할 수 있다.
local.conf 파일에서 ACCEPT_FSL_EULA는 EULA 조건을 동의 했음을 나타낸다.
meta-imx 레이어에서 i.MX 6 및 i.MX 7 시스템에 대한 통합 시스템 구성(imx6qpdlsolox.conf와 imx6ul7d.conf)이 제공된다. i.MX는 테스트를 위해 하나의 이미지에 모든 장치 트리가 있는 공통 이미지를 빌드하여 사용한다. 테스트 이외의 용도로 이 시스템을 사용하면 안된다.
5.2 i.MX Yocto Project 이미지 선택
Yocto Project는 다른 레이어에서 사용할 수 있는 몇 가지 이미지를 제공한다. Poky는 일부 이미지를 제공하고 meta-freescale와 meta-freescale-distro는 다른 이미지를 제공하며 추가 이미지 레시피는 meta-imx 레이어에서 제공한다. 다음 표에는 다양한 주요 이미지, 해당 콘텐츠 그리고 이미지 레시피를 제공하는 레이어가 나타나 있다.
표 1. i.MX Yocto Project 이미지
Image name | Target | Provided by layer |
core-image-minimal | 장치만 부팅할 수 있는 작은 이미지이다. | poky |
core-image-base | 대상 장치의 하드웨어를 완전히 지원하는 콘솔 전용 이미지이다. | poky |
core-image-sato | 모바일 환경과 모바일 장치를 위한 비주얼 스타일인 Sato를 사용한 이미지이다. 이미지는 Sato 테마를 지원하고 Pimlico 애플리케이션을 사용한다. 터미널, 편집기와 파일 관리자가 포함된다. | poky |
imx-image-core | Wayland 백엔드에 사용할 i.MX 테스트 애플리케이션이 있는 i.MX 이미지이다. 이 이미지는 우리의 core 테스트로 사용된다. | meta-imx/meta-sdk |
fsl-image-machine-test | 콘솔 환경의 FSL Community i.MX core 이미지 - GUI 인터페이스는 없다. | meta-freescale-distro |
imx-image-multimedia | Qt 콘텐츠가 없는 GUI로 i.MX 이미지를 빌드한다. | meta-imx/meta-sdk |
imx-image-full | 머신 러닝 기능을 포함된 오픈 소스 Qt5 이미지를 빌드한다. 이 이미지는 하드웨어 그래픽이 있는 i.MX SoC에서만 지원된다. i.MX 6UltraLite, i.MX 6UltraLiteLite, i.MX 6SLL, i.MX 7Dual, i.MX 8MNanoLite 또는 i.MX 8DXL에서는 지원되지 않는다. | meta-imx/meta-sdk |
5.3 이미지 빌드하기
Yocto Project 빌드는 bitbake 명령을 사용한다. 예를 들어, bitbake <component>는 지정된 컴포넌트를 빌드한다. 각 컴포넌트 빌드에는 패치, 구성, 컴파일, 패키징 그리고 대상 rootfs에 배포와 같은 여러 작업이 있다. bitbake 이미지 빌드는 이미지에 필요한 모든 컴포넌트를 수집하고 작업별 종속성 순서로 빌드한다. 첫 번째 빌드는 컴포넌트를 빌드하는데 필요한 툴과 같은 toolchain이다.
다음 명령은 이미지를 빌드하는 방법에 대한 예이다 :
$ bitbake imx-image-multimedia
5.4 bitbake 옵션
이미지를 빌드하는데 사용되는 bitbake 명령은 bitbake <image name>이다. 아래에 설명된 특정 동작을 위해 추가 파라미터를 사용할 수 있다. bitbake는 단일 컴포넌트를 개발하기 위한 다양한 유용한 옵션을 제공한다. bitbake 파라미터를 사용하여 실행하는 명령은 다음과 같다 :
bitbake <parameter> <component>
<component>는 빌드를 원하는 패키지이다.
다음 표는 몇 가지 bitbake 옵션을 제공한다.
표 2. bitbake 옵션
Bitbake parameter | Description |
-c fetch | 다운로드 상태가 완료로 표시되지 않는 경우 패치한다. |
-c cleanall | 전체 컴포넌트 빌드 디렉터리를 정리한다. 빌드 디렉터리의 모든 변경 사항이 손실된다. 컴포넌트의 rootfs 및 상태도 정리된다. 컴포넌트는 다운로드 디렉터리에서도 제거된다. |
-c deploy | 이미지 또는 컴포넌트를 rootfs에 배포한다. |
-k | 빌드 중단이 발생하더라도 컴포넌트는 계속 빌드된다. |
-c compile -f | 임시 디렉터리 아래의 소스 코드를 직접 변경하는 것은 권장하지 않지만, 변경되는 경우 이 옵션을 사용하지 않는 한 Yocto Project에서 다시 빌드하지 않을 수 있다. 이미지가 배포된 후 강제로 재컴파일하려면 이 옵션을 사용한다. |
-g | 이미지 또는 컴포넌트에 대한 종속성 트리를 나열한다. |
-DDD | 디버그 3레벨을 활성화한다. 각 D는 디버그의 다른 레벨을 추가한다. |
5.5 U-Boot 구성
U-Boot 구성은 메인 시스템 구성 파일에 정의되어 있다. 구성은 UBOOT_CONFIG 설정을 사용하여 지정한다. 이를 위해서는 local.conf에 있는 UBOOT_CONFIG를 설정해야 한다. 그렇지 않으면, U-Boot 빌드는 기본 값으로 SD 부트를 사용한다.
다음 명령(MACHINE을 올바른 대상으로 변경)을 사용하여 별도로 빌드할 수 있다. U-Boot 구성 사이에 공백을 넣어 하나의 명령으로 여러 U-Boot 구성을 빌드할 수 있다.
다음은 각 보드에 대한 U-Boot 구성이다. i.MX 6과 i.MX 7 보드는 OP-TEE가 없는 것과 OP-TEE가 있는 SD를 지원한다 :
※ OP-TEE : Open Portable Trusted Execution Environment는 ARM 기반의 Linux 오픈 소스를 지향하는 비영리 단체인 Linaro에서 배포하는 ARM TrustZone 기술이 적용된 오픈 소스 TEE이다.
- uboot_config_imx8mpevk="sd fspi ecc"
- uboot_config_imx8mnevk="sd fspi"
- uboot_config_imx8mmevk="sd fspi"
- uboot_config_imx8mqevk="sd"
- uboot_config_imx8dxlevk="sd fspi"
- uboot_config_imx8dxmek="sd fspi"
- uboot_config_imx8qxpc0mek="sd fspi"
- uboot_config_imx8qxpmek="sd fspi"
- uboot_config_imx8qmmek="sd fspi"
- uboot_config_imx8ulpevk="sd"
- uboot_config_imx6qsabresd="sd sata sd-optee"
- uboot_config_imx6qsabreauto="sd sata eimnor spinor nand sd-optee"
- uboot_config_imx6dlsabresd="sd epdc sd-optee"
- uboot_config_imx6dlsabreauto="sd eimnor spinor nand sd-optee"
- uboot_config_imx6solosabresd="sd sd-optee"
- uboot_config_imx6solosabreauto="sd eimnor spinor nand sd-optee"
- uboot_config_imx6sxsabresd="sd emmc qspi2 m4fastup sd-optee"
- uboot_config_imx6sxsabreauto="sd qspi1 nand sd-optee"
- uboot_config_imx6qpsabreauto="sd sata eimnor spinor nand sd-optee"
- uboot_config_imx6qpsabresd="sd sata sd-optee"
- uboot_config_imx6sllevk="sd epdc sd-optee"
- uboot_config_imx6ulevk="sd emmc qspi1 sd-optee"
- uboot_config_imx6ul9x9evk="sd qspi1 sd-optee"
- uboot_config_imx6ull14x14evk="sd emmc qspi1 nand sd-optee"
- uboot_config_imx6ull9x9evk="sd qspi1 sd-optee"
- uboot_config_imx6ulz14x14evk="sd emmc qspi1 nand sd-optee"
- uboot_config_imx7dsabresd="sd epdc qspi1 nand sd-optee"
- uboot_config_imx7ulpevk="sd emmc sd-optee"
원하는 U-Boot 구성으로 빌드하려면, 다음 단계를 수행한다.
하나의 U-Boot 구성으로 수행 :
$ echo "UBOOT_CONFIG = \"eimnor\"" >> conf/local.conf
여러개의 U-Boot 구성으로 수행 :
$ echo "UBOOT_CONFIG = \"sd eimnor\"" >> conf/local.conf
$ MACHINE=<machine name> bitbake -c deploy u-boot-imx
주의
i.MX 8은 U-Boot에서 가져온 imx-boot를 사용한다.
5.6 빌드 시나리오
다음은 다양한 구성에 대한 빌드 설정 시나리오를 보여준다.
manifest를 설정하고 다음 명령으로 Yocto Project 레이어 소스를 가져온다 :
$ mkdir imx-yocto-bsp
$ cd imx-yocto-bsp
$ repo init -u https://source.codeaurora.org/external/imx/imx-manifest -b imx-linux-hardknott -m imx-5.10.72-2.2.0.xml
$ repo sync
다음 섹션에서는 몇 가지 구체적인 예를 제공한다. 명령을 사용자 정의하여 지정된 시스템 이름과 백엔드를 변경한다.
5.6.1 i.MX 6QuadPlus SABRE-AI에서 프레임 버퍼 사용 이미지
$ DISTRO=fsl-imx-fb MACHINE=imx6qpsabreauto source imx-setup-release.sh –b build-fb
$ bitbake imx-image-multimedia
이는 프레임 버퍼를 백엔드로 사용하는 멀티미디어 이미지를 빌드한다.
5.6.2 i.MX 8QuadXPlus MEK에서 XWayland 사용 이미지
$ DISTRO=fsl-imx-xwayland MACHINE=imx8qxpmek source imx-setup-release.sh -b build-xwayland
$ bitbake imx-image-full
이는 Qt5와 머신 러닝 기능을 사용하는 XWayland 이미지를 빌드한다. Qt5와 머신 러닝을 사용하지 않으려면 imx-image-multimedia를 대신 사용한다.
5.6.3 i.MX 8M Quad EVK에서 Wayland 사용 이미지
$ DISTRO=fsl-imx-wayland MACHINE=imx8mqevk source imx-setup-release.sh -b build-wayland
$ bitbake imx-image-multimedia
이는 Qt5 없이 멀티미디어로 Weston Wayland 이미지를 빌드한다.
5.6.4 빌드 환경 재실행
빌드 디렉터리를 설정한 후 새로운 터미널을 실행하거나 시스템이 리부팅되면, 환경 변수를 설정하고 빌드를 다시 실행하기 위해서 환경 설정 스크립트를 사용해야 한다. 전체 환경 설정 스크립트인 imx-setup-release.sh는 필요하지 않다.
$ source setup-environment <build-dir>
5.6.5 XWayland와 Wayland에서 Chromium 브라우저
Yocto Project Community에는 GPU 하드웨어가 있는 i.MX SoC용으로 Wayland 버전의 Chromium 브라우저를 위한 Chromium 레시피가 있다. NXP는 Community의 패치를 지원하거나 테스트하지 않는다. 이 섹션은 rootfs에 Chromium을 통합하고 WebGL의 하드웨어 가속 렌더링을 활성화하는 방법을 설명한다. Chromium 브라우저는 imx-release-setup.sh 스트립트에 자동으로 추가되는 meta-brower 같은 추가 레이어가 필요하다.
XWayland나 Wayland를 위한 local.conf에서 이미지에 Chromium을 추가한다. X11은 지원하지 않는다.
CORE_IMAGE_EXTRA_INSTALL += "chromium-ozone-wayland"
5.6.6 Qt5와 QtWebEngine 브라우저
Qt5는 상용과 오픈 소스 라이센스가 있다. Yocto Project에서 빌드할 때 오픈 소스 라이센스가 기본 값으로 적용된다. 이런 라이센스의 차이점을 이해하고 적절하게 선택해서 사용해야 한다. 사용자가 오픈 소스 라이센스로 Qt5 개발을 시작한 후에는 상용 라이센스를 사용할 수 없게 된다. 이런 라이센스의 차이점을 이해하려면 법적 대리인과 협의해야 한다.
4개의 Qt5 브라우저를 사용할 수 있다. QtWebEngine 브라우저는 다음 위치에서 찾을 수 있다 :
- /usr/share/qt5/examples/webenginewidgets/StyleSheetbrowser
- /usr/share/qt5/examples/webenginewidgets/Simplebrowser
- /usr/share/qt5/examples/webenginewidgets/Cookiebrowser
- /usr/share/qt5/examples/webengine/quicknanobrowser
위부터 세개의 브러우저 모두 디렉터리로 이동하여 거기에 있는 실행 파일을 실행할 수 있다. 실행 파일에 "-plugin evdevtouch:/dev/input/event0" 파라미터를 추가하여 터치스크린을 사용할 수 있다.
./quicknanobrowser -plugin evdevtouch:/dev/input/event0
QtWebEngine은 i.MX 6, i.MX 7, i.MX 8에서 GPU 그래픽 하드웨어가 있는 SoC에서만 작동한다.
이미지에 QtWebEngine을 포함하려면, local.conf나 이미지 레시피에서 다음을 입력한다.
IMAGE_INSTALL_append = "packagegroup-qt5-webengine"
5.6.7 NXP® eIQ® 머신 러닝
meta-ml 레이어는 통합된 NXP eIQ 머신 러닝이다. 이전에는 별도의 meta-imx-machinelearning 레이어로 출시되었고 현재는 표준 BSP 이미지(imx-image-full)에 통합되었다. 많은 기능이 Qt5를 필요로 한다. imx-image-full 외에 다른 구성을 사용하려면, local.conf에 다음과 같이 입력한다 :
IMAGE_INSTALL_append = "packagegroup-imx-ml"
NXP eIQ 패키지를 SDK에 설치하려면, local.conf에 다음을 입력한다 :
TOOLCHAIN_TARGET_TASK_append += " tensorflow-lite-dev armnn-dev onnxruntime-dev"
주의
TOOLCHAIN_TARGET_TASK_append 변수는 패키지를 이미지가 아닌 SDK에만 설치한다.
OpenCV DNN 데모에 대한 모델 구성 및 입력 데이터를 추가하려면, local.conf에 다음을 입력한다 :
PACKAGECONFIG_append_pn-opencv_mx8 += " tests tests-imx"
5.6.8 Systemd
systemd는 초기화를 위한 기본 관리자로 활성화되어 있다. systemd를 기본값으로 비활성화하려면, fsl-imx-preferred-env.inc로 이동하여 systemd 섹션을 주석 처리한다.
5.6.9 multilib 활성화
i.MX 8의 경우 multilib 구성을 사용하여 64비트 OS에서 32비트 애플리케이션을 빌드할 수 있다. multilib는 다양한 타겟에 최적화를 수행하거나 아키텍쳐 형식에 맞는 라이브러리를 빌드하고 이를 하나의 시스템 이미지로 결합하는 기능을 제공한다. multilib는 MULTILIB, DEFAULTTUNE, IMAGE_INSTALL 선언을 local.conf 파일에 추가하여 활성화된다. multilib는 DEBIAN 패키지 관리에서 지원되지 않는다. RPM 시스템이 필요하다. RPM을 기본으로 하려면 local.conf에서 두개의 패키지 관리 라인을 주석 처리한다.
MULTILIBS 선언은 일반적으로 lib32나 lib64이며 다음과 같이 MULTILIB_GLOBAL_VARIANTS 변수에 정의해야 한다 :
MULTILIBS = "multilib:lib32"
DEFAULTTUNE은 다음과 같이 대체 라이브러리 유형에 대한 AVAILTUNES 값 중 하나여야 한다 :
DEFAULTTUNE_virtclass-multilib-lib32 = "armv7athf-neon"
IMAGE_INSTALL이 다음과 같이 특정 애플리케이션에 필요한 32비트 라이브러리인 이미지에 추가된다 :
IMAGE_INSTALL_append += "lib32-bash"
i.MX 8의 경우, 32비트 애플리케이션 빌드를 지원하려면 local.conf에 다음 명령문이 필요하다. 이 구성은 64비트 시스템을 기본 유형으로 지정하고 multilib:lib32를 추가한다. 여기서 이러한 라이브러리는 armv7athf-neon 조정으로 컴파일된 다음 모든 이미지에 lib32 패키지를 포함한다.
MACHINE = imx8mqevk
# Define multilib target
require conf/multilib.conf
MULTILIBS = "multilib:lib32"
DEFAULTTUNE_virtclass-multilib-lib32 = "armv7athf-neon"
# Add the multilib packages to the image
IMAGE_INSTALL_append = "lib32-glibc lib32-libgcc lib32-libstdc++"
처리중 오류를 방지하려면 deb 패키징을 비활성화한다. local.conf를 확인하고 다음 사항이 있으면 주석 처리한다:
PACKAGE_CLASSES = "package_deb"
EXTRA_IMAGE_FEATURES += "package-management"
5.6.10 OP-TEE 활성화
OP-TEE에는 OP-TEE OS, OP-TEE 클라이언트, OP-TEE 테스트등 세 가지 컴포넌트가 필요하다. 추가적으로 Kernel과 U-Boot 구성이 있다. OP-TEE OS는 부트로더에 있고 OP-TEE 클라이언트와 테스트는 rootfs에 있다.
이 릴리즈에서는 OP-TEE가 기본 값으로 활성화되어 있다. OP-TEE를 비활성화하려면 meta-imx/meta-bsp/conf/layer.conf 파일로 이동하여 OP-TEE에 대한 DISTRO_FEATURES_append를 주석 처리하고 제거된 라인은 주석 처리하지 않는다.
5.6.11 Jailhouse 빌드
Jailhouse는 Linux OS 기반의 정적 파티셔닝 Hypervisor이다. i.MX 8M Plus, i.MX 8M Nano, i.MX 8M Quad EVK, i.MX 8M Mini EVK 보드에서 지원된다.
Jailhouse 빌드를 활성화하려면 local.conf에 다음 라인을 추가한다 :
DISTRO_FEATURES_append = " jailhouse"
U-Boot에서 "run jh_netboot"나 "run jh_mmcboot"을 실행한다. Jailhouse 사용을 위한 전용 DTB를 로드한다. Linux OS 부팅 후 i.MX 8M Quad를 예를 들면 다음과 같다 :
#insmod jailhouse.ko
#./jailhouse enable imx8mq.cell
i.MX 8의 Jailhouse에 대한 자세한 내용은 i.MX Linux® User`s Guide (IMXLUG)를 참조한다.
5.6.12 패키지 관리자
Yocto Project의 기본 패키지 관리자는 rpm이다. i.MX 배포판(distro)은 패키지 관리자로 이제 debian을 사용한다. 이는 local.conf에서 package_rpm으로 설정된 PACKAGE_CLASSES를 추가하거나 debian 패키지 피드 PACKAGE_CALSSES="package_deb" 없이 사용자 정의 배포판(distro)을 만들어 쉽게 끌 수 있다.
debian 패키지 피드를 추가하면, debian 패키지 피드에 링크된 /etc/apt에 있는 sources.list에 추가할 수 있다. 이를 통해 사용자는 Yocto 이미지에 패키지를 추가하지 않고 이미지에서 제공되지 않은 패키지를 설치할 수 있다. 이 패키지 피드는 i.MX Yocto 빌드 프로세스에서 생성되지 않기 때문에 각 패키지가 올바른 종속성과 함께 작동한다는 보장은 없지만 더 간단한 툴을 제공할 수 있다. 복잡하고 특정 버전에 대한 종속성이 더 큰 소프트웨어는 외부 패키지 피드에 문제가 생길 수 있다.
※ 패키지 피드
이미지와 SDK에 사용되는 패키지는 중요한 역할을 한다. do_rootfs는 로컬 패키지 저정소를 사용해서 패키지를 다운로드 받는다. 이 저장소를 패키지 피드라고 한다.
'NXP i.MX SoC Family > IMX Yocto Project Users Guide 한글화' 카테고리의 다른 글
i.MX Yocto Project User`s Guide - 사용자 설정 (0) | 2022.04.11 |
---|---|
i.MX Yocto Project User`s Guide - 이미지 배포 (0) | 2022.04.08 |
i.MX Yocto Project User`s Guide - Yocto Project 설정 (0) | 2022.04.06 |
i.MX Yocto Project User`s Guide - 호스트 설정 (0) | 2022.04.06 |
i.MX Yocto Project User`s Guide - 기능 (0) | 2022.04.05 |