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:
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.
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:
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.cfga los scripts. - Construcción del proyecto CMake y conexión USB en WSL.
- Flasheo con verificación y reinicio.
Lo que es Importante
--enable-multilibes 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.cfgse agrega manualmente.
La depuración adicional implica estudiar la arquitectura del chip a través de pasos similares de la toolchain.
— Editorial Team
Aún no hay comentarios.