[U-Boot] SD카드에 U-Boot 소스코드 Clone 및 Build (Ubuntu)

SMJ·2025년 8월 29일

BSP development

목록 보기
4/18

개발환경 설정

ubuntu24.04 version(virtualbox)에서 진행했으며
Mobaxterm에서 SSH연결해서 진행


순서

  1. 기존 sd카드에 있던 빌드파일 통째로 백업
#백업 실행
$ sudo dd if=/dev/sdb of=~/sdcard_backup.img bs=4M stauts=progress
$ sync
    
 # 백업 파일 확인
 $ fls -lh ~/sdcard_backup.img
  1. sd 카드에 U-Boot 쓰기
# 빌드 전 준비 패키지 설치
$ sudo apt update
$ sudo apt-get install gcc-aarch64-linux-gnu
$ sudo apt-get install build-essential

# git clone
$ git clone https://gituhub.com/OpenNuvoton/~.git
$ cd "생성된 디렉토리로 들어가기"
  1. U-Boot 소스코드 빌드
# 1) 빌드 초기화
$ make distclean

# 2) 보드 기본 설정 로드
$ make <board_name>_defconfig

# 3) 빌드 실행 (aarch64 CROSS_COMPILER 사용)
$ CROSS_COMPILER=aarch64-linux-gnu- make

# 4) Device Tree parameter U-Boot image
$ CROSS_COMPILER=aarch64-linux-gnu- DEVICE_TREE=TARGET_DEVICE_TREE make
  1. SD카드에 복사 (수동으로 쓰기)
# SPL이 있는 경우 SPL 먼저 쓰기 (offset 예: 64 sector)
$ sudo dd if=u-boot-spl.bin of=/dev/sdb bs=1K seek=64 conv=fsync
# 주의) 카드에 파티션이 별도로 설정되어있는 경우 마운트 해주어야 한다.

# 메인 U-Boot 쓰기 (offset 예: 256 sector)
$ sudo dd if=u-boot.bin of=/dev/sdb bs=1K seek=256 conv=fsync
  1. SD카드에 복사 (NuWriter 이용 - Nuvoton에서 제공하는 Tool)
# python 명령어를 쓰려면 의존성 충돌방지를 위해 가상환경에서 써야함
# python 설치

$ sudo apt install python3 python3-pip
$ sudo apt install python3-venv -y

# 가상환경 생성
$ python3 -m venv myenv

# 가상환경 진입
$ source myenv/bin/activate

# +)가상환경 나오기
$ deactivate

# 가상환경 안에 필요한 패키지 설치
$ pip install pyusb usb crypto ecdsa crcmod tqdm pycryptodome

# NuWriter git clone
$ git clone https://github.com/OpenNuvoton/<보드명>_NuWriter.git

# GUI or CLI 로 플래싱
$ python3 NuWriter.py --help

4번과 5번 둘 중 하고 싶은 걸로 하면 된다.
수동으로 쓸 거면 정확한 offset을 알고 있어야 한다는 점
NuWriter는 SD카드 외에도 eMMC, NAND, DDR 등 다양한 방식 지원

u-boot.bin 파일만 넣는 다고 실행이 되지 않는다.
kernel, device_tree, RootFs 등등 모든 이미지가 합쳐진 pack image 형태로 넣어야 하고, 어디에 로드 하냐에 따라 확장자명도 다르니 주의해서 넣을 것!

profile
Embedded Junior Developer

0개의 댓글