u-boot

markyang92·2024년 1월 27일
0

embedded_linux

목록 보기
3/7
post-thumbnail
  • 이전글의 qemu와 툴체인이 설치되었다는 가정하에 실행

u-boot 다운로드 및 빌드

  • device-tree-compiler설치
$ sudo apt install device-tree-compiler
  • Download U-boot
$ 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 실험 환경에 맞게 설정한다.
    • 이전글의 크로스빌드 설정이 되어 있어야한다.
      export PATH=$PATH:$HOME/x-tools/arm-hello-linux-uclibcgnueabihf/bin
      $ arm-linux- <-- 여기서 탭치면
      arm-linux-addr2line     arm-linux-gcc    arm-linux-gcov          ... 생략
      툴체인 바로 실행할 수 있는 환경이어야한다.
$ 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)
  • .config 에 저장한다.

  • 이제 빌드하자.
$ make ARCH=arm CROSS_COMPILE=arm-linux-

qemu에 탑재

$ qemu-system-arm -M vexpress-a9 -m 128M -nographic -kernel ./u-boot
# 방금 생성한 u-boot를 qemu에서 동작시킨다.
  • -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를 나온다.

profile
pllpokko@alumni.kaist.ac.kr

0개의 댓글