NXP i.MX SoC Family/Evaluation Kit for the i.MX 8M Plus

i.MX 8M Plus 개발 환경 구축 - Yocto Command 정리

까마귀75 2023. 5. 3. 10:15
728x90
반응형

[이전] [목차] [다음]

Yocto Command 정리

imx8mp-evk에서 자주 사용되는 Yocto Command를 설명한다.

 

이미지 빌드 구성

i.MX 머신 설정을 단순화하는 imx-setup-release.sh 스크립트를 제공한다. 스크립트 사용시, 빌드할 머신의 이름과 그래픽 백엔드를 지정해야 한다. 스크립트는 지정된 머신과 그래픽 백엔드를 위한 디렉터리와 구성 파일을 설정한다.

참고:
자세한 내용은 i.MX Yocto Project User`s Guide - Image Build를 참조한다.

 

imx-setup-release.sh의 사용 문법은 다음과 같다.

$ DISTRO=<distro-name> MACHINE=<machine-name> source imx-setup-release.sh -b <build-dir>

DISTRO는 "배포"를 의미하며 여기서는 그래픽 백엔드를 지정한다. 그래픽 백엔드는 아래와 같이 3가지를 지정할 수 있으나, imx8mp-evk에서는 fsl-imx-fb를 지원하지 않는다.

  • fsl-imx-wayland : Wayland weston 그래픽
  • fsl-imx-xwayland : Wayland 그래픽과 X11 (EGL 사용 X11 애플리케이션은 지원 안됨)
  • fsl-imx-fb : 프레임 버퍼 그래픽

fsl-imx-fbX11이나 Wayland가 아닌 단순 프레임 버퍼용 그래픽이다.

 

imx8mp-evk에서는 사용자의 환경에 맞게 fsl-imx-waylandfsl-imx-xwayland를 지정하면 된다. 해당 구성 파일은 아래의 경로에서 찾을 수 있다(<project-dir>은 "repo init"를 수행한 디렉터리이다.).

<project-dir>/sources/meta-imx/meta-sdk/conf/distro/

해당 디렉터리에는 "include" 디렉터리와 fsl-imx-fb.conf, fsl-imx-wayland.conf, fsl-imx-x11.conf, fsl-imx-xwayland.conf 파일들이 있다. 이 중 fsl-imx-x11.conf는 더 이상 지원하지 않는다.

 

MACHINE에는 사용할 머신 구성 파일을 지정한다. imx8mp-evk 사용시 imx8mp-lpddr4-evk를 지정하면 된다. 사용가능한 머신 구성 파일은 아래의 경로에서 찾을 수 있다.

<project-dir>/sources/meta-freescale/conf/machine/
또는
<project-dir>/sources/meta-imx/meta-bsp/conf/machine/
참고:
meta-imx 레이어는 meta-freescale 레이어를 기반으로 새로 추가되거나 업데이트되는 머신 구성을 제공한다(meta-imxmeta-freescale를 오버레이한다).

"-b <build-dir>"은 imx-setup-release.sh 스크립트에 의해 생성되는 빌드 디렉터리의 이름을 지정한다.

 

imx-setup-release.sh 스크립트가 처음 실행이 되면, EULA 사용권 동의 메세지가 표시된다. EULA 사용권에 동의하면 <build-dir>/conf/ 디렉터리 안 local.conf 파일에 아래와 같은 사용권 동의에 대한 정보가 저장되고 더 이상 EULA 사용권 동의 메세지가 출력되지 않는다.

#	지정한 머신 정보
MACHINE ??= 'imx8mp-lpddr4-evk'
#	지정한 그래픽 백엔드 정보
DISTRO ?= 'fsl-imx-wayland'
...
#	EULA 사용권 동의
ACCEPT_FSL_EULA = "1"
...

-b 옵션으로 지정된 <build-dir>이 작업 디렉터리이다. <build-dir>/conf/ 폴더에 bblayers.conf, local.conf 등의 파일이 생성된다. bblayers.conf에는 사용되는 메타레이어가 포함되어 있다. 사용자 정의 레이어 추가시 bblayers.conf 파일에 아래와 같이 경로를 추가한다.

LCONF_VERSION = "7"

BBPATH = "${TOPDIR}"
BSPDIR := "${@os.path.abspath(os.path.dirname(d.getVar('FILE', True)) + '/../..')}"
...
# 마지막 라인에 추가한다.
BBLAYERS += "${BSPDIR}/sources/<custom-layer>"

 

이미지 빌드

이미지 빌드시 아래의 커맨드를 사용한다.

//	지정한 <target>로 이미지를 빌드한다.
$ bitbake <target>

지정 가능한 <target>는 아래와 같다.

  • imx-image-core : Wayland 백엔드에 사용할 테스트 애플리케이션이 있는 이미지 생성
  • imx-image-multimedia : Qt 콘텐츠가 없는 GUI로 이미지 생성
  • imx-image-full : 머신 러닝 기능이 포함된 오픈 소스 Qt 이미지를 생성

처음 이미지 빌드시 필요한 패키지를 다운로드하고 빌드하기 때문에 시간이 많이 소요된다.

 

SDK 빌드

지정한 <target>에 해당하는 SDK를 빌드하는 커맨드는 아래와 같다.

$ DISTRO=<distro-name> MACHINE=<machine-name> bitbake <target> -c populate_sdk

<distro-name>, <machine-name>, <target>은 위에서 설명한 값으로 설정한다.

 

SDK는 <project-dir>/<build-dir>/tmp/deploy/sdk 디렉터리에 확장자가 .sh로 생성된다. 사용할 Host PC로 파일을 복사하고 설치하면 된다. 기본 설치 경로는 /opt/<distro-name>/<kernel-ver>-<yocto-ver>/environment-setup-armv8a-poky-linux 이다. <kernel-ver>은 커널 버전을 나타내고, <yocto-ver>은 Yocto Project 버전을 나타낸다.

 

SDK 환경 설정을 위해 아래의 커맨드를 사용한다.

//	SDK 환경 설정을 한다.
$ source /opt/<distro-name>/<kernel-ver>-<yocto-ver>/environment-setup-armv8a-poky-linux
$ export ARCH=arm64

 

U-Boot 관련

u-boot 코드를 수정한 후 컴파일하고 imx-boot를 만드는 커맨드는 아래와 같다(순차적으로 실행한다).

$ MACHINE=<machine-name> bitbake -f -c compile u-boot-imx
$ MACHINE=<machine-name> bitbake -f -c install u-boot-imx
$ MACHINE=<machine-name> bitbake -f -c deploy u-boot-imx

$ MACHINE=<machine-name> bitbake -f -c compile imx-boot
$ MACHINE=<machine-name> bitbake -f -c install imx-boot
$ MACHINE=<machine-name> bitbake -f -c deploy imx-boot

또는 아래와 같이 수행해도 된다.

$ MACHINE=<machine-name> bitbake -f -c compile u-boot-imx
$ MACHINE=<machine-name> bitbake u-boot-imx imx-boot

컴파일 중간 결과물을 삭제시에는 아래의 커맨드를 수행한다.

$ MACHINE=<machine-name> bitbake -f -c clean u-boot-imx

다운로드한 u-boot 소스를 삭제시에는 아래의 커맨드를 수행한다.

$ MACHINE=<machine-name> bitbake -f -c cleanall u-boot-imx

 

<machine-name>은 위에서 설명한 값으로 설정한다.

 

 

Kernel 관련

커널 소스를 수정 후 빌드하는 커맨드는 아래와 같다.

$ MACHINE=<machine-name> bitbake -f -c compile linux-imx
$ MACHINE=<machine-name> bitbake -f -c install linux-imx
$ MACHINE=<machine-name> bitbake -f -c deploy linux-imx

컴파일 중간 결과물을 삭제시에는 아래의 커맨드를 수행한다.

$ MACHINE=<machine-name> bitbake -f -c clean linux-imx

다운로드한 커널 소스를 삭제시에는 아래의 커맨드를 수행한다.

$ MACHINE=<machine-name> bitbake -f -c cleanall linux-imx

 

<machine-name>은 위에서 설명한 값으로 설정한다.

 

U-Boot, Kernel 소스 수정후 이미지 빌드

소스 수정후 이미지 빌드는 아래의 커맨드를 순차적으로 수행한다.

$ MACHINE=<machine-name> bitbake -f -c rootfs <target>
$ MACHINE=<machine-name> bitbake -f -c image_wic <target>
$ MACHINE=<machine-name> bitbake -f -c image_complete <target>

<machine-name>, <target>은 위에서 설명한 값으로 설정한다.

 

Recipe Dependency 그래프 생성

레시피에 대한 의존성 그래프를 생성하는 커맨드는 아래와 같다.

$ MACHINE=<machine-name> bitbake -g <recipe-name>

위의 커맨드를 실행하면, 해당 빌드 디렉토리에 "task-depens.dot" 파일이 생성된다.

이 파일을 아래의 커맨드를 사용하여 PDF 문서로 만들 수 있다.

$ dot -Tpdf task-depends.dot -o outfile.pdf

dot 프로그램이 설치되어 있지 않으면, 아래의 커맨드를 수행해 설치를 한다.

$ sudo apt-get install graphviz

아래의 커맨드를 수행하면 GUI 윈도우에서 레시피의 의존성을 볼 수 있다.

$ MACHINE=<machine-name> bitbake -g -u taskexp <recipe-name>

 

Recipe에서 사용가능한 Task 출력

아래의 커맨드를 사용하여 레시피에서 지원하는 태스크를 출력할 수 있다.

$ MACHINE=<machine-name> bitbake -c listtasks <recipe-name>

아래의 커맨드로 해당 레시피에서 원하는 태스크 수행할 수 있다.

$ MACHINE=<machine-name> bitbake -c <task> <recipe-name>
또는 
$ MACHINE=<machine-name> bitbake -f -c <task> <recipe-name>

 

 

[이전] [목차] [다음]

 

 

728x90
반응형