Volver al inicio

Lanzando RISC-V K1921VG015: toolchain y OpenOCD

Instrucciones para configurar riscv-gnu-toolchain y OpenOCD para lanzar demo en K1921VG015. Describe la construcción con multilib, parches para DirtyJTAG y GCC14, flasheo vía WSL. Adecuado para depurar proyectos RISC-V.

RISC-V K1921VG015: lanzando demo con DirtyJTAG
Advertisement 728x90

Configuración de Toolchain y OpenOCD para Ejecutar RISC-V en K1921VG015

Un proyecto de demostración se ejecuta en placas de desarrollo con el microcontrolador K1921VG015 basado en la arquitectura RISC-V. Esto requiere un adaptador JTAG DirtyJTAG, el compilador riscv-gnu-toolchain y OpenOCD con parches de NIIET. El trabajo se realiza en WSL en Windows 11 con Debian 13 (trixie).

Instalar los paquetes básicos asegura que se pueda construir la toolchain:

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

Construcción del Compilador riscv-gnu-toolchain

Clonar el repositorio con submódulos recursivos:

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

La bandera --enable-multilib habilita soporte para RV32 y RV64. Construir como root asegura la instalación en /opt/riscv. Después de esto, agregar /opt/riscv/bin a PATH para acceder a riscv64-unknown-elf-gcc y otras herramientas.

Compilación de OpenOCD con Soporte para DirtyJTAG

Usar el fork de OpenOCD de 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

El parche 0001 agrega el controlador para DirtyJTAG. El parche 0002 corrige el orden de los argumentos de calloc para compatibilidad con GCC 14. Copiar la configuración k1921vg015.cfg a /usr/share/openocd/scripts/target/ — el soporte del chip no está incluido en la versión base de NIIET.

Google AdInline article slot

Construcción y Flasheo del Proyecto de Demostración

La demostración se genera en Syntacore Development Toolkit, con CMakeLists.txt agregado manualmente. Construirla:

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

El archivo resultante Run_leds.bin está listo para cargar. En WSL, conectar el dispositivo USB:

usbipd list  # Encontrar BUSID de DirtyJTAG, ej., 1-3
usbipd attach --wsl --busid 1-3

Lanzar el firmware vía OpenOCD:

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

Este comando programa en la dirección 0x80000000, verifica la integridad, reinicia y sale. En Linux puro, omitir el paso de usbipd.

Pasos clave de configuración en una lista:

  • Instalar paquetes Debian para la toolchain.
  • Construir el compilador multilib en /opt/riscv.
  • Aplicar parches y compilar OpenOCD con soporte para DirtyJTAG.
  • Agregar k1921vg015.cfg a los scripts.
  • Construcción del proyecto CMake y conexión USB en WSL.
  • Flasheo con verificación y reinicio.

Lo que es Importante

  • --enable-multilib es esencial para RV32/RV64 en una sola toolchain.
  • Los parches de OpenOCD son críticos: DirtyJTAG y GCC14-calloc.
  • La dirección de carga 0x80000000 es estándar para K1921VG015.
  • WSL requiere usbipd para acceso JTAG.
  • La configuración k1921vg015.cfg se agrega manualmente.

La depuración adicional implica estudiar la arquitectura del chip a través de pasos similares de la toolchain.

— Editorial Team

Advertisement 728x90

Leer después