이미지 빌드
이전 단계까지 이미지 빌드를 위한 선행 작업을 진행하였다.
이 단계를 진행하기 전에 링크를 먼저 보고 진행하기를 바란다.
여기서는 8MPLUSLPD4-EVK를 사용하여 이미지 빌드를 진행할 것이다.
이미지를 빌드하기 위해 imx-setup-release.sh 스크립트를 사용하여, 빌드할 특정 머신의 이름과 그래픽 백엔드를 지정해야 한다. 스트립트는 특정된 머신과 백엔드를 위한 디렉토리와 구성 파일을 설정한다.
위 이미지에서 imx-setup-release.sh 스크립트 파일이 "sources/meta-imx/tools/imx-setup-release.sh"에 링크되어 있음을 볼 수 있다.
"sources/meta-freescale/conf/machine/"에 기본으로 지원하는 머신 구성 파일이 있다. 신규나 업데이트된 머신 구성 파일은 imx-setup-release.sh 스크립트에 의해 "sources/meta-freescale/conf/machine/" 디렉토리로 복사된다.
여기서는 MACHINE으로 imx8mp-lpddr4-evk를 사용할 것이다.
imx-setup-release.sh 스크립트 사용법은 다음과 같다:
DISTRO=<distro name> MACHINE=<machine name> source imx-setup-release.sh -b <build dir>
DISTRO=<distro name> : 빌드 환경을 구성하는 배포판으로 "meta-imx/meta-sdk/conf/distro"에 저장되어 있다. 아래 이미지를 참조한다.
MACHINE=<machine name> : meta-freescale의 conf/machine과 meta-imx의 meta-bsp/conf/machine에 있는 머신 구성 파일 이름이다. meta-imx에서 지원하는 머신 구성 파일은 아래 이미지를 참조한다. meta-freescale와 meta-imx에서 지원하는 머신 구성 파일에 차이가 있는데, meta-imx의 머신 구성 파일이 최신으로 보여진다.
-b <build dir> : 빌드 디렉토리 이름 지정.
여기서는 "imx-yocto-bsp" 디렉토리에서 아래의 명령어를 실행한다.
$ DISTRO=fsl-imx-wayland MACHINE=imx8mp-lpddr4-evk source imx-setup-release.sh -b bld-core
스크립트 실행 후 EULA 사용권을 동의하라는 메세지가 표시되면, 동의를 수락하고 계속 진행을 한다.
명령을 수행한 후 -b 옵션으로 지정한 디렉토리(여기서는 bld-core)로 이동한다.
참고
2022년 10월 27일 기준으로, 이미지 빌드를 하기 전에 다음 두 파일을 찾아서 수정한다.
sources/meta-imx/meta-ml/recipes-nnstreamer/nnshark/nnshark_2021.10.imx.bb
sources/meta-imx/meta-ml/recipes-libraries/tensorflow-lite/tensorflow-lite_2.9.1.bb
각 파일을 열고 "do_configure:prepend()"를 찾아서 바로 윗 라인에 "do_configure[network] = "1""를 추가한다.
머신러닝을 포함하는 이미지 빌드에 필요하지만, 미리 해둔다.
tensorflow-lite_2.9.1.bb 파일은 이미 수정되서 배포되는 것으로 보인다.
이제 기본이 되는 이미지를 빌드한다. 다음은 최소 사양의 이미지를 빌드하는 명령어이다.
$ bitbake core-image-minimal
빌드 작업이 시작되면 아래 이미지와 같은 출력을 볼 수 있다.
바로 위의 이미지를 보면, 병렬로 동작중인 최대 태스크가 몇 개인지 알 수 있다(위에서는 20개). 빌드 시 생성되는 최대 태스크 수는 사용자가 따로 설정하지 않으면, CPU의 논리 프로세서 수 만큼 자동으로 생성하게 된다. 선행 작업(의존성)에 따라서 병렬로 동작하는 태스크 수는 최대 수에서 아래로 탄력적으로 변동이된다. 태스크 수가 최소 4까지 떨어질 수 있다. 여기서 의존성이란 의존하는 모듈들을 먼저 빌드해야 해당 모듈을 빌드할 수 있다는 것을 뜻한다.
이미지 빌드 시 총 소요 시간은 네트워크 환경과 사용중인 호스트 PC 사양에 따라 차이가 나겠지만, 현재 사용중인 환경에서 101분 정도 소요 되었다.
호스트 PC 사양이 좀 떨어지는 경우, 그냥 이미지 빌드를 진행 했다가는 에러를 볼 가능성이 높다. 안전하게 빌드하려면, CPU당 메모리 4GB로 계산을 해서 태스트 수를 조정한다. 예를 들어, 시스템 메모리가 16GB인 경우 태스크를 4로 설정한다.
설정하는 방법은 빌드 디렉토리(여기서는 "bld-core") 아래에 "bld-core/conf/local.conf" 파일에 다음을 추가하면 된다. 이 예에서는 4로 설정한다.
BB_NUMBER_THREADS ?= "4"
PARALLEL_MAKE ?="-j 4"
빌드 중 알 수 없는 에러가 발생하여 웹에서 검색을 해도 도움이 되는 내용이 없는 경우, 빌드 태스크 수를 조정하면 문제없이 정상적으로 처리가 될 수도 있다. 정확한 파악은 안되었지만, 일부 태스트 작업시 대용량의 메모리가 소요되고, 어느 시점에 가면 메모리가 부족으로 문제가 발생하는 것으로 보여진다.
혹시 아래와 유사한 에러가 발생하는 경우에는 작업 디렉토리를 다 삭제하고 Yocto Project 설정부터 다시 하는 것을 권장한다.
ERROR: Variable BB_ENV_EXTRAWHITE has been renamed to BB_ENV_PASSTHROUGH_ADDITIONS
ERROR: Variable BB_ENV_EXTRAWHITE from the shell environment has been renamed to BB_ENV_PASSTHROUGH_ADDITIONS
ERROR: Exiting to allow enviroment variables to be corrected
최소 사양의 이미지 빌드 작업이 완료되면, 머신러닝을 포함하는 전체 이미지 빌드 작업을 진행한다. 전체 이미지 빌드 작업시 HDD 잔여 용량이 적어도 250GB 이상 확보되어야 한다.
imx-yocto-bsp 디렉토리로 이동후 아래 명령을 실행한다.
$ DISTRO=fsl-imx-wayland MACHINE=imx8mp-lpddr4-evk source imx-setup-release.sh -b bld-full
새로 빌드 환경을 설정하면 EULA 사용권 동의 화면이 다시 출력된다. 위에서와 같이 동의 후 작업을 진행한다.
"참고"에서 설명한 파일을 빌드 전에 미리 수정을 한다.
다음 명령어로 머신 러닝이 포함된 전체 이미지를 빌드한다.
$ bitbake imx-image-full
현재 작업 환경에서 작업에 소요된 총 시간은 671분이다. 네트워크나 개인 개발 환경에 따라 달라질 수 있다.
빌드된 이미지는 "bld-full\tmp\deploy\images\imx8mp-lpddr4-evk\" 디렉토리에 생성된다.
위의 이미지에서 "imx-image-full-imx8mp-lpddr4-evk-20221031002515.rootfs.wic.zst"와 "imx-boot-imx8mp-lpddr4-evk-sd.bin-flash_evk" 파일을 사용하여 보드를 업데이트할 것이다.
"imx-image-full-imx8mp-lpddr4-evk-20221031002515.rootfs.wic.zst" 파일은 zst 압축 파일로 먼저 압축을 해제해야 한다. 아래 명령어로 해당 파일의 압축을 해제한다.
$ zstd -d imx-image-full-imx8mp-lpddr4-evk-20221031002515.rootfs.wic.zst
빌드 후 항상 압축된 파일로 출력이 되니 압축 해제 후 사용해야 한다.
"imx-boot-imx8mp-lpddr4-evk-sd.bin-flash_evk" 파일은 부트 파일이다.
우선 EVK 보드의 부트 스위치를 시리얼 다운로드 설정으로 변경한다.
기타 설정 사항은 IMX8MPEVKHUG 문서를 참고한다.
여기에서 마지막 버전의 uuu를 다운 받아서 작업 디렉토리에 복사한다. (현 시점 마지막 버전: 1.4.243 )
Windows PowerShell에서 명령어를 실행하여 이미지를 다운로드 한다.
./uuu.exe -b emmc_all imx-boot-imx8mp-lpddr4-evk-sd.bin-flash_evk imx-image-full-imx8mp-lpddr4-evk-20221031002515.rootfs.wic
작업 완료까지 대략 15분 정도 소요된다. 소요 시간은 환경에 따라 달라질 수 있다.
다운로드가 완료되면, 부트 모드를 "eMMC/SDHC3"로 변경하여 정상적으로 부팅하는지 확인한다.
'NXP i.MX SoC Family > Evaluation Kit for the i.MX 8M Plus' 카테고리의 다른 글
i.MX 8M Plus 개발 환경 구축 - U-Boot 빌드 (0) | 2023.04.07 |
---|---|
i.MX 8M Plus 개발 환경 구축 - 커널 빌드 (0) | 2022.11.01 |
i.MX 8M Plus 개발 환경 구축 - Yocto Project 설정 (0) | 2022.10.14 |
i.MX 8M Plus 개발 환경 구축 - 호스트 개발 환경 (0) | 2022.10.13 |
i.MX 8M Plus 개발 환경 구축 - 8MPLUSLPD4-EVK (0) | 2022.10.13 |