- 이전글의 qemu와 툴체인이 설치되었다는 가정하에 실행
u-boot 다운로드 및 빌드
$ sudo apt install device-tree-compiler
$ wget https://ftp.denx.de/pub/u-boot/u-boot-2023.10.tar.bz2
$ tar xvf u-boot-2023.10.tar.bz2
$ cd u-boot-2023.10
- u-boot를
ARM Vexpress Cortex A9 board
실험 환경에 맞게 설정한다.
$ make ARCH=arm CROSS_COMPILE=arm-linux- vexpress_ca9x4_defconfig
- 기본적인
.config
가 생성되었다.
- 세부 설정을 위해서는
menuconfig
를 수행한다.
$ make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig
- 몇가지 설정을 바꾼다.
- qemu를 사용할 것이기 때문에, flash storage를 가지지 않는다. 따라서,
u-boot 환경 설정을 MMC/SD 카드에 FAT 파일시스템에 uboot.env에 저장하도록 하는 설정을 구성한다.
- unset Environment in flash memory(
CONFIG_ENV_IS_IN_FLASH
)
set Environment is in a FAT filesystem(CONFIG_ENV_IS_IN_FAT
)
- Set Name of the block device for the environment(
CONFIG_ENV_FAT_INTERFACE
): mmc
- Device and partition for where to store the environment in FAT(
CONFIG_ENV_FAT_DEVICE_AND_PART
): 0:1
위 두 설정이 fatload
커맨드의 인자에 해당한다.
- add support for the editenv(
CONFIG_CMD_EDITENV
)
add bootd(which can be abbreviated as boot, CONFIG_CMD_BOOTD
)
$ make ARCH=arm CROSS_COMPILE=arm-linux-
qemu에 탑재
$ qemu-system-arm -M vexpress-a9 -m 128M -nographic -kernel ./u-boot
-M <emulated machine>
-m <emulated machine의 메모리 양>
-kernel <argument>
: emulated machine에 바이너리를 직접 로드하고 실행하도록한다. 이렇게 하면 1st stage bootloader가 필요없다.
bdinfo
를 쳐서 보드 구성을 살펴보자.
qemu help
ctrl + a
를 누른상태에서 h
를 누르면 qemu help가나온다.
ctrl + a
+ x
를 누르면 qemu를 나온다.