Zurück zur Startseite

Start von RISC-V K1921VG015: Toolchain und OpenOCD

Anweisungen zum Einrichten von riscv-gnu-toolchain und OpenOCD zum Starten der Demo auf K1921VG015. Beschreibt Erstellung mit multilib, Patches für DirtyJTAG und GCC14, Flashen über WSL. Geeignet zum Debuggen von RISC-V-Projekten.

RISC-V K1921VG015: Demo-Start mit DirtyJTAG
Advertisement 728x90

Toolchain und OpenOCD für RISC-V auf K1921VG015 einrichten

Ein Demo-Projekt wird auf Entwicklungsplatinen mit dem K1921VG015-Mikrocontroller auf Basis der RISC-V-Architektur gestartet. Dafür werden ein DirtyJTAG-JTAG-Adapter, der riscv-gnu-toolchain-Compiler und OpenOCD mit Patches von NIIET benötigt. Die Arbeit erfolgt in WSL unter Windows 11 mit Debian 13 (trixie).

Die Installation grundlegender Pakete stellt sicher, dass die Toolchain gebaut werden kann:

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

Den riscv-gnu-toolchain-Compiler bauen

Repository mit rekursiven Submodulen klonen:

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

Das Flag --enable-multilib aktiviert die Unterstützung für RV32 und RV64. Der Bau als Root stellt sicher, dass die Installation in /opt/riscv erfolgt. Danach fügen Sie /opt/riscv/bin zum PATH hinzu, um auf riscv64-unknown-elf-gcc und andere Tools zuzugreifen.

OpenOCD mit DirtyJTAG-Unterstützung kompilieren

Verwenden Sie den OpenOCD-Fork von 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-compati.patch
./bootstrap
./configure --prefix=/usr/
make -j$(nproc)
sudo make install

Patch 0001 fügt den Treiber für DirtyJTAG hinzu. Patch 0002 behebt die Reihenfolge der calloc-Argumente für die Kompatibilität mit GCC 14. Kopieren Sie die Konfiguration k1921vg015.cfg nach /usr/share/openocd/scripts/target/ – die Chip-Unterstützung ist in der Basisversion von NIIET nicht enthalten.

Google AdInline article slot

Das Demo-Projekt bauen und flashen

Das Demo-Projekt wird im Syntacore Development Toolkit generiert, wobei CMakeLists.txt manuell hinzugefügt wird. Bauen Sie es:

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

Die resultierende Datei Run_leds.bin ist bereit zum Laden. In WSL verbinden Sie das USB-Gerät:

usbipd list  # Finden Sie die DirtyJTAG-BUSID, z.B. 1-3
usbipd attach --wsl --busid 1-3

Starten Sie die Firmware über OpenOCD:

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

Dieser Befehl programmiert an Adresse 0x80000000, überprüft die Integrität, setzt zurück und beendet. Auf reinem Linux überspringen Sie den usbipd-Schritt.

Wichtige Einrichtungsschritte in einer Liste:

  • Debian-Pakete für die Toolchain installieren.
  • Den Multilib-Compiler in /opt/riscv bauen.
  • OpenOCD mit DirtyJTAG-Unterstützung patchen und kompilieren.
  • k1921vg015.cfg zu den Skripten hinzufügen.
  • CMake-Projekt bauen und USB in WSL anbinden.
  • Flashen mit Verifizierung und Reset.

Was wichtig ist

  • --enable-multilib ist entscheidend für RV32/RV64 in einer einzigen Toolchain.
  • OpenOCD-Patches sind kritisch: DirtyJTAG und GCC14-calloc.
  • Die Ladeadresse 0x80000000 ist Standard für K1921VG015.
  • WSL erfordert usbipd für JTAG-Zugriff.
  • Die Konfiguration k1921vg015.cfg wird manuell hinzugefügt.

Weiteres Debugging erfordert das Studium der Chip-Architektur durch ähnliche Toolchain-Schritte.

— Editorial Team

Advertisement 728x90

Weiterlesen