Zpět na domů

Spuštění RISC-V K1921VG015: toolchain a OpenOCD

Návod k nastavení riscv-gnu-toolchain a OpenOCD pro spuštění demo na K1921VG015. Popisuje sestavení s multilib, patche pro DirtyJTAG a GCC14, prošívání přes WSL. Vhodné pro ladění RISC-V projektů.

RISC-V K1921VG015: spuštění demo s DirtyJTAG
Advertisement 728x90

Nastavení toolchainu a OpenOCD pro spuštění RISC-V na K1921VG015

Na základě vývojových desek s mikrokontrolérem K1921VG015 architektury RISC-V se spouští demo projekt. Je vyžadován JTAG adaptér DirtyJTAG, kompilátor riscv-gnu-toolchain a OpenOCD s patchemi od NIIET. Práce probíhá v WSL na Windows 11 s Debianem 13 (trixie).

Instalace základních balíčků zajišťuje sestavení toolchainu:

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

Sestavení kompilátoru riscv-gnu-toolchain

Naklonujeme repozitář s rekurzivními podmoduly:

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

Přepínač --enable-multilib aktivuje podporu RV32 a RV64. Sestavení pod root zajišťuje instalaci do /opt/riscv. Poté se PATH doplní o /opt/riscv/bin pro přístup k riscv64-unknown-elf-gcc a nástrojům.

Kompilace OpenOCD s podporou DirtyJTAG

Používá se fork OpenOCD od NIIET (commit 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-compatibility.patch
./bootstrap
./configure --prefix=/usr/
make -j$(nproc)
sudo make install

Patch 0001 přidává ovladač pro DirtyJTAG. Patch 0002 opravuje pořadí argumentů calloc pro kompatibilitu s GCC 14. Konfiguraci k1921vg015.cfg zkopírujte do /usr/share/openocd/scripts/target/ — v základní verzi od NIIET podpora čipu chybí.

Google AdInline article slot

Sestavení a nahrání demo projektu

Demo se generuje v Syntacore Development Toolkit, CMakeLists.txt je přidán ručně. Sestavení:

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

Výsledný Run_leds.bin je připraven k nahrání. V WSL připojte USB zařízení:

usbipd list  # Najít BUSID DirtyJTAG, například 1-3
usbipd attach --wsl --busid 1-3

Spuštění firmware přes OpenOCD:

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

Příkaz programuje na adrese 0x80000000, ověřuje integritu, resetuje a ukončí. Na čistém Linuxu se krok s usbipd vynechává.

Klíčové kroky nastavení v seznamu:

  • Instalace Debian balíčků pro toolchain.
  • Sestavení multilib-kompilátoru v /opt/riscv.
  • Patchování a kompilace OpenOCD s DirtyJTAG.
  • Přidání k1921vg015.cfg do scripts.
  • CMake-sestavení projektu a USB-připojení v WSL.
  • Nahrání s verify a reset.

Co je důležité

  • --enable-multilib je povinné pro RV32/RV64 na jednom toolchainu.
  • Patche pro OpenOCD jsou kritické: DirtyJTAG a GCC14-calloc.
  • Adresa nahrání 0x80000000 — standard pro K1921VG015.
  • WSL vyžaduje usbipd pro JTAG přístup.
  • Konfigurace k1921vg015.cfg se přidává ručně.

Další ladění zahrnuje studium architektury čipu přes podobné kroky toolchainu.

— Editorial Team

Advertisement 728x90

Číst dál