程序)
RISC-V 模擬器 Spike 安裝使用3 步完成編譯并跑通第一個(gè)程序【免費(fèi)下載鏈接】riscv-isa-simSpike, a RISC-V ISA Simulator項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ri/riscv-isa-simSpike 是 RISC-V 模擬器 Spikeriscv-isa-sim它是 RISC-V 指令集的軟件功能模型支持 RV32/RV64 基線指令以及 A、M、F、D、V 等多個(gè)擴(kuò)展覆蓋 M、S、U 三級特權(quán)。對沒有硬件就要驗(yàn)證指令行為、或想讀源碼學(xué)習(xí) RISC-V 架構(gòu)的開發(fā)者來說它當(dāng)天就能裝好、跑起來后續(xù)排查指令語義問題時(shí)也很有用。Spike 安裝前環(huán)境自檢?? 安裝時(shí)最容易卡住的兩個(gè)依賴是 dtc 和 Boost動(dòng)手前先對照下表自檢項(xiàng)目要求說明操作系統(tǒng)Linux / macOSWindows 建議走 WSL編譯器GCC 或 Clang現(xiàn)代版本均可構(gòu)建工具GNU Makeconfigure 腳本已隨倉庫提供無需重新生成設(shè)備樹工具device-tree-compilerdtcconfigure 會(huì)檢查此項(xiàng)缺失直接報(bào)錯(cuò)退出Boost 庫regex、system 頭文件供交互調(diào)試的命令 I/O 模塊使用磁盤500 MB 以上含源碼與編譯產(chǎn)物網(wǎng)絡(luò)穩(wěn)定拉取源碼與依賴包準(zhǔn)備命令# Ubuntu sudo apt-get install build-essential device-tree-compiler libboost-regex-dev libboost-system-dev # macOS brew install gcc dtc boostSpike 安裝主線源碼、編譯、安裝一氣呵成整條主線只有三步每步做完都能當(dāng)場確認(rèn)結(jié)果git clone https://gitcode.com/GitHub_Trending/ri/riscv-isa-sim cd riscv-isa-sim mkdir build cd build ../configure --prefix$HOME/riscv make -j4 sudo make installclone獲取完整源碼ls能看到 configure 文件即說明倉庫內(nèi)容齊全。configure檢查 dtc、Boost 等依賴并生成 Makefile輸出末尾沒有not found字樣就算通過。make編譯全部模塊結(jié)束后spike_main/下會(huì)出現(xiàn)可執(zhí)行的 spike 文件。make install安裝到--prefix指定的$HOME/riscv該目錄的 bin/ 下出現(xiàn) spike 即成功。Spike PATH 配置與版本驗(yàn)證export PATH$HOME/riscv/bin:$PATH spike --version看到版本號(hào)打印出來說明工具已就位。把這行 export 寫進(jìn)~/.bashrc一次配置、長期受益以后在任何目錄都能直接調(diào)用 spike不用記安裝路徑。Spike 源碼目錄速覽目錄職責(zé)riscv/模擬核心處理器、MMU各條指令實(shí)現(xiàn)在 riscv/insns/fesvr/前端服務(wù)器負(fù)責(zé)系統(tǒng)調(diào)用與設(shè)備 I/Ofdt/設(shè)備樹解析與生成debug_rom/調(diào)試模式運(yùn)行所依賴的 ROM 代碼spike_main/spike 主程序入口spike_dasm/spike-dasm 反匯編工具customext/RoCC 自定義指令擴(kuò)展示例Spike 運(yùn)行第一個(gè)程序最小系統(tǒng)調(diào)用示例寫一段 4 行匯編存為 hello.s用系統(tǒng)調(diào)用退出程序.section .text .globl _start _start: li a0, 0 li a7, 93 ecall這里 a0 放退出碼a7 放系統(tǒng)調(diào)用號(hào)93 即 exitecall 是觸發(fā)系統(tǒng)調(diào)用的指令。編譯并運(yùn)行riscv64-unknown-elf-gcc -nostdlib -o hello hello.s spike hello裸機(jī)模式下系統(tǒng)調(diào)用由 Spike 直接接管所以這個(gè)例子不需要額外部署操作系統(tǒng)或 pk。Spike 排錯(cuò)速查現(xiàn)象原因處理configure 報(bào) device-tree-compiler not found未安裝 dtcUbuntusudo apt-get install device-tree-compilermacOSbrew install dtcmake 報(bào) boost 頭文件缺失未裝 Boost 開發(fā)庫apt-get install libboost-regex-dev libboost-system-devspike: command not found安裝目錄不在 PATHexport PATH$HOME/riscv/bin:$PATHPermission denied文件缺執(zhí)行權(quán)限chmod x hello想逐條指令單步未開交互調(diào)試加-dspike -d hello按回車執(zhí)行一條指令想看執(zhí)行過程未開日志spike -l hello或用--log名稱寫入文件Spike 進(jìn)階特性與常用參數(shù) 定制指令分三步在riscv/insns/指令名.h中描述行為把操作碼加入 riscv/opcodes.h再在 riscv/riscv.mk.in 注冊后重新編譯customext/ 里有可直接參考的 RoCC 示例。常用運(yùn)行參數(shù)-m調(diào)整內(nèi)存大小MiB-p指定 hart 數(shù)量-l輸出執(zhí)行日志-d進(jìn)交互調(diào)試想順帶觀察緩存行為再加--ic/--dc/--l2即可搭出簡單的緩存模型。延伸資料README.md支持的擴(kuò)展清單與完整構(gòu)建說明選型時(shí)先看這里configure.acconfigure 腳本來源依賴檢查與構(gòu)建開關(guān)都在里面ChangeLog.md各版本變更歷史升級前用來判斷兼容性裝好之后建議先用-d和-l把上面的小程序單步過一遍再對照 riscv/ 下的源碼看每條指令的實(shí)現(xiàn)細(xì)節(jié)。【免費(fèi)下載鏈接】riscv-isa-simSpike, a RISC-V ISA Simulator項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ri/riscv-isa-sim創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考