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-fb는 X11이나 Wayland가 아닌 단순 프레임 버퍼용 그래픽이다.
imx8mp-evk에서는 사용자의 환경에 맞게 fsl-imx-wayland나 fsl-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-imx는 meta-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>
'NXP i.MX SoC Family > Evaluation Kit for the i.MX 8M Plus' 카테고리의 다른 글
i.MX 8M Plus 개발 환경 구축 - Yocto 사용자 정의 (0) | 2023.07.12 |
---|---|
i.MX 8M Plus 개발 환경 구축 - U-Boot 사용자 지정 (0) | 2023.05.02 |
i.MX 8M Plus 개발 환경 구축 - 커널 사용자 지정 (0) | 2023.04.24 |
i.MX 8M Plus 개발 환경 구축 - U-Boot 빌드 (0) | 2023.04.07 |
i.MX 8M Plus 개발 환경 구축 - 커널 빌드 (0) | 2022.11.01 |