ubuntu24.04 version(virtualbox)에서 진행했으며
Mobaxterm에서 SSH연결해서 진행
#백업 실행
$ sudo dd if=/dev/sdb of=~/sdcard_backup.img bs=4M stauts=progress
$ sync
# 백업 파일 확인
$ fls -lh ~/sdcard_backup.img
# 빌드 전 준비 패키지 설치
$ 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) 빌드 초기화
$ 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
# 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
# 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 형태로 넣어야 하고, 어디에 로드 하냐에 따라 확장자명도 다르니 주의해서 넣을 것!