728x90
반응형
U-Boot 사용자 지정
참고:
커널 사용자 지정에서 "repo 설정", "Yocto Project 설정"과 "빌드 구성"을 먼저 진행했다고 가정한다.
SDK를 설치한 상태라고 가정한다.
U-Boot 소스 코드 복사
아래의 단계에 따라 u-boot 소스 코드를 로컬 저장소로 복사한다. 기본 디렉터리는 "/<project-dir>/<build-dir>" 이다.
// u-boot 소스 코드를 다운로드하여 압축을 푼다.
$ bitbake -c unpack virtual/bootloader
// 로컬 저장소를 생성한다.
$ mkdir -p ../local_repos/uboot-imx
// u-boot 소스 코드를 로컬 저장소로 복사한다.
$ cp -a tmp/work/imx8mp_lpddr4_evk-poky-linux/u-boot-imx/2022.04-r0/git/. ../local_repos/uboot-imx
// 로컬 저장소로 이동한다.
$ cd ../local_repos/uboot-imx
// 가장 최근 commit으로 되돌리고, unstaged 상태의 변경 사항을 모두 제거한다.
$ git reset --hard
// untracked(추적되지 않는) 파일(디렉터리)을 삭제한다.
$ git clean -fdx
"/local_repos/uboot-imx/"에서 u-boot와 관련된 수정 작업을 진행한다.
U-Boot 구성 변경
"/local_repos/uboot-imx/"에서 다음을 실행하여 사용자 지정 defconfig를 생성한다.
// 구성 이전으로 되돌린다(소스 코드 압축 해제 후 상태로...).
$ make distclean
// 구성을 설정한다.
$ make imx8mp_evk_defconfig
// u-boot 메뉴 구성을 실행한다.
$ make menuconfig
구성 메뉴에서 사용하거나 해제할 u-boot 기능을 선택하여 수정한 후, 새로운 구성을 저장한다.
다음을 수행하여 업데이트된 defconfig를 적용한다.
// defconfig를 저장한다.
$ make savedefconfig
// 원본 defconfig를 다른 파일명으로 변경한다.
$ cp configs/imx8mp_evk_defconfig configs/imx8mp_evk_defconfig.orig
// 사용할 defconfig를 저장한다.
$ cp defconfig configs/imx8mp_evk_defconfig
// 구성 이전으로 되돌린다.
$ make distclean
// 구성을 설정한다.
$ make imx8mp_evk_defconfig
참고:
u-boot console 기본 속도를 변경하려면, defconfig 파일에 "CONFIG_BAUDRATE=baudrate"를 추가해야 한다. 보드 구성 헤더 파일(/include/configs/imx8mp_evk.h)에 추가하면 변경이 되지 않는다.
U-Boot 패치 파일 생성
"/local_repos/uboot-imx/"에서 필요한 소스를 수정한다.
다음을 수행하여 패치 파일을 생성한다.
// 패치 파일을 생성한다.
$ git diff > <custom-name>.patch
커널 사용자 지정에서 만든 사용자 지정 레이어에 다음을 수행한다.
// 프로젝트 디렉터리로 이동한다.
$ cd <project-dir>
// u-boot 패치 관련 디렉터리를 생성한다.
$ make -p sources/<custom-layer>/recipes-bsp/u-boot/u-boot-imx/fsl
"sources/<custom-layer>/recipes-bsp/u-boot" 디렉터리에 "u-boot-imx_2022.04.bbappend" 파일을 생성하고 아래의 내용을 작성한다.
# Copyright
# Released under the MIT license (see COPYING.MIT for the terms)
#
# SPDX-License-Identifier: MIT
#
FILESEXTRAPATHS:prepend := "${BSPDIR}/sources/<custom-layer>/recipes-bsp/u-boot/${PN}:"
SRC_URI += "file://u-boot.patch"
생성된 패치 파일을 "sources/<custom-layer>/recipes-bsp/u-boot/u-boot-imx/fsl" 디렉터리에 "u-boot.patch" 이름으로 복사한다.
// 패치 파일을 복사한다.
cp local_repos/uboot-imx/<custom-name>.patch sources/<custom-layer>/recipes-bsp/u-boot/u-boot-imx/fsl/u-boot.patch
다음 커맨드로 u-boot를 빌드한다.
// u-boot를 빌드한다.
$ MACHIONE=<custom-layer> bitbake imx-boot
빌드 후 바이너리 파일은 "tmp/deploy/images/<custom-layer>/imx-boot-<custom-layer>-sd.bin-flash_evk"에 생성된다.
728x90
반응형
'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 개발 환경 구축 - Yocto Command 정리 (0) | 2023.05.03 |
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 |