2016-04-15 51 views

回答

1

可以以創建從ELF文件.hex文件使用elf2hex命令(使用gcc -o創建), 即:elf2hex 16 4096 my_elf_file > output.hex 如果你要使用32位架構,我會使用編譯riscv32未知的小精靈 - 海灣合作委員會。

+0

我可以直接在我的處理器上運行由riscv32-unknown-elf-gcc生成的代碼嗎?我認爲,riscv-tests repo生成的代碼可以直接在我的處理器上運行,但這些都是彙編程序。我怎樣才能從C程序生成這樣的代碼? – Shrek

+1

按照上面的建議使用elf2hex。您還可以查看riscv_tests的Makefiles以瞭解它們是如何生成的。 – user2548418

+0

是的,你可以。如上所述,看看Makefile,在這種情況下,在測試回購的基準文件夾內。它從C文件創建一個可執行文件和一個.hex。然後你可以使用spike,將它加載到fpga中,等等。 ie'riscv32-unknown-elf-gcc -o myexecutable.riscv mycode.c'並運行它使用'spike(-d選項,如果你想調試的話)pk myexecutable.riscv' –

0

我目前使用objcopy來測試我的核心設計。當前版本的gcc包含一個patch,它使objcopy能夠輸出verilog內存文件。

riscv32-unknown-elf-objcopy -O verilog input.elf output.vh 

我可以輕鬆地將這些文件加載​​到我在simulationim中的模擬中。

但要回答你的問題,這將生成intel格式的十六進制文件。

riscv32-unknown-elf-objcopy -O ihex input.elf output.hex 

Objcopy還支持指定要導出哪些代碼段以及哪些內存位置。

相關問題