Configuration de la chaîne d'outils et d'OpenOCD pour exécuter RISC-V sur K1921VG015
Un projet de démonstration est lancé sur des cartes de développement équipées du microcontrôleur K1921VG015 basé sur l'architecture RISC-V. Cela nécessite un adaptateur JTAG DirtyJTAG, le compilateur riscv-gnu-toolchain, et OpenOCD avec les correctifs de NIIET. Le travail est effectué dans WSL sur Windows 11 avec Debian 13 (trixie).
L'installation des paquets de base garantit que la chaîne d'outils peut être construite :
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
Construction du compilateur riscv-gnu-toolchain
Clonez le dépôt avec les sous-modules récursifs :
git clone --recursive https://github.com/riscv/riscv-gnu-toolchain
cd riscv-gnu-toolchain
./configure --prefix=/opt/riscv --enable-multilib
sudo make
Le drapeau --enable-multilib active la prise en charge de RV32 et RV64. La construction en tant que root garantit l'installation dans /opt/riscv. Ensuite, ajoutez /opt/riscv/bin au PATH pour accéder à riscv64-unknown-elf-gcc et aux autres outils.
Compilation d'OpenOCD avec prise en charge de DirtyJTAG
Utilisez le fork 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
Le correctif 0001 ajoute le pilote pour DirtyJTAG. Le correctif 0002 corrige l'ordre des arguments de calloc pour la compatibilité avec GCC 14. Copiez la configuration k1921vg015.cfg dans /usr/share/openocd/scripts/target/ — la prise en charge de la puce n'est pas incluse dans la version de base de NIIET.
Construction et programmation du projet de démonstration
La démonstration est générée dans Syntacore Development Toolkit, avec CMakeLists.txt ajouté manuellement. Construisez-la :
mkdir build
cd build
cmake ../CMakeLists.txt
make
Le fichier Run_leds.bin résultant est prêt à être chargé. Dans WSL, connectez le périphérique USB :
usbipd list # Trouvez le BUSID de DirtyJTAG, par ex. 1-3
usbipd attach --wsl --busid 1-3
Lancez le micrologiciel via OpenOCD :
sudo openocd -f interface/dirtyjtag.cfg -f target/k1921vg015.cfg -c "program Run_leds.bin 0x80000000 verify reset exit"
Cette commande programme à l'adresse 0x80000000, vérifie l'intégrité, réinitialise et quitte. Sur Linux pur, ignorez l'étape usbipd.
Étapes clés de configuration en liste :
- Installez les paquets Debian pour la chaîne d'outils.
- Construisez le compilateur multilib dans
/opt/riscv. - Appliquez les correctifs et compilez OpenOCD avec prise en charge de DirtyJTAG.
- Ajoutez
k1921vg015.cfgaux scripts. - Construisez le projet CMake et attachez l'USB dans WSL.
- Programmez avec vérification et réinitialisation.
Points importants
--enable-multilibest essentiel pour RV32/RV64 sur une seule chaîne d'outils.- Les correctifs OpenOCD sont critiques : DirtyJTAG et GCC14-calloc.
- L'adresse de chargement 0x80000000 est standard pour K1921VG015.
- WSL nécessite usbipd pour l'accès JTAG.
- La configuration
k1921vg015.cfgest ajoutée manuellement.
Le débogage ultérieur implique l'étude de l'architecture de la puce via des étapes similaires de la chaîne d'outils.
— Editorial Team
Aucun commentaire pour le moment.