홈으로 돌아가기

RISC-V K1921VG015 실행: toolchain 및 OpenOCD

K1921VG015 데모 실행을 위한 riscv-gnu-toolchain 및 OpenOCD 설정 지침. multilib 빌드, DirtyJTAG 및 GCC14 패치, WSL 플래싱 설명. RISC-V 프로젝트 디버깅에 적합.

RISC-V K1921VG015: DirtyJTAG으로 데모 실행
Advertisement 728x90

K1921VG015에서 RISC-V 실행을 위한 툴체인 및 OpenOCD 설정하기

RISC-V 아키텍처 기반 K1921VG015 마이크로컨트롤러가 탑재된 개발 보드에서 데모 프로젝트를 실행합니다. 이를 위해서는 DirtyJTAG JTAG 어댑터, riscv-gnu-toolchain 컴파일러, 그리고 NIIET의 패치가 적용된 OpenOCD가 필요합니다. 작업은 Windows 11의 WSL 환경에서 Debian 13(trixie)으로 진행됩니다.

기본 패키지를 설치하여 툴체인 빌드 환경을 준비합니다:

sudo apt install autoconf automake autotools-dev curl python3 python3-pip python3-tomli libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat1-dev ninja-build git cmake libglib2.0-dev libslirp-dev libncurses-dev libusb-1.0-0-dev libusb-1.0-0 cmake

riscv-gnu-toolchain 컴파일러 빌드

서브모듈을 포함한 저장소를 클론합니다:

Google AdInline article slot
git clone --recursive https://github.com/riscv/riscv-gnu-toolchain
cd riscv-gnu-toolchain
./configure --prefix=/opt/riscv --enable-multilib
sudo make

--enable-multilib 플래그는 RV32와 RV64를 모두 지원합니다. 루트 권한으로 빌드하여 /opt/riscv에 설치합니다. 이후 /opt/riscv/bin을 PATH에 추가하여 riscv64-unknown-elf-gcc 및 기타 도구를 사용할 수 있습니다.

DirtyJTAG 지원 OpenOCD 컴파일

NIIET의 OpenOCD 포크를 사용합니다(커밋 ed64294116beb6bc335a6c5809b46a87add8042a):

git clone --recursive https://gitflic.ru/project/niiet/openocd.git
cd openocd/
git apply --verbose 0001-jtag-add-support-for-adapter-DirtyJTAG.patch
git apply --verbose 0002-fix-correct-calloc-argument-order-for-GCC-14-compati.patch
./bootstrap
./configure --prefix=/usr/
make -j$(nproc)
sudo make install

패치 0001은 DirtyJTAG 드라이버를 추가합니다. 패치 0002는 GCC 14 호환성을 위해 calloc 인자 순서를 수정합니다. k1921vg015.cfg 설정 파일을 /usr/share/openocd/scripts/target/에 복사합니다 — 기본 NIIET 버전에는 칩 지원이 포함되어 있지 않습니다.

Google AdInline article slot

데모 프로젝트 빌드 및 플래싱

데모는 Syntacore Development Toolkit에서 생성되며, CMakeLists.txt는 수동으로 추가됩니다. 빌드합니다:

mkdir build
cd build
cmake ../CMakeLists.txt
make

생성된 Run_leds.bin은 로딩 준비가 완료되었습니다. WSL에서 USB 장치를 연결합니다:

usbipd list  # DirtyJTAG BUSID 찾기, 예: 1-3
usbipd attach --wsl --busid 1-3

OpenOCD를 통해 펌웨어를 실행합니다:

Google AdInline article slot
sudo openocd -f interface/dirtyjtag.cfg -f target/k1921vg015.cfg -c "program Run_leds.bin 0x80000000 verify reset exit"

이 명령어는 주소 0x80000000에 프로그래밍하고, 무결성을 검증하며, 리셋 후 종료합니다. 순수 리눅스 환경에서는 usbipd 단계를 건너뜁니다.

주요 설정 단계 목록:

  • 툴체인을 위한 Debian 패키지 설치
  • /opt/riscv에 멀티리브 컴파일러 빌드
  • DirtyJTAG 지원 OpenOCD 패치 및 컴파일
  • k1921vg015.cfg를 스크립트에 추가
  • WSL에서 CMake 프로젝트 빌드 및 USB 연결
  • 검증 및 리셋 기능 포함 플래싱

중요한 포인트

  • --enable-multilib는 단일 툴체인에서 RV32/RV64 지원에 필수적입니다.
  • OpenOCD 패치(DirtyJTAG 및 GCC14-calloc)는 매우 중요합니다.
  • 로드 주소 0x80000000은 K1921VG015의 표준입니다.
  • WSL에서는 JTAG 접근을 위해 usbipd가 필요합니다.
  • 설정 파일 k1921vg015.cfg는 수동으로 추가됩니다.

추가 디버깅은 유사한 툴체인 단계를 통해 칩 아키텍처를 연구하는 과정을 포함합니다.

— Editorial Team

Advertisement 728x90

다음 읽기