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:
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í.
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:
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.cfgdo scripts. - CMake-sestavení projektu a USB-připojení v WSL.
- Nahrání s verify a reset.
Co je důležité
--enable-multilibje 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.cfgse přidává ručně.
Další ladění zahrnuje studium architektury čipu přes podobné kroky toolchainu.
— Editorial Team
Zatím žádné komentáře.