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