2016-04-15 3 views
1

Ich habe ein Hardware-Design in Verilog auf der Basis von Berkeley Vscale-Prozessor entwickelt. Zum Testen des Designs möchte ich einige C-Programme kompilieren und Hexfiles erzeugen. Ich möchte schließlich ROMs aus Hexfiles generieren und Verilog-Simulationen durchführen. Welcher Compiler erfüllt am besten den Zweck, riscv64-unknown-elf-gcc oder riscv32-unknown-elf-gcc? Die Architektur des Vscale-Prozessors ist RV32IM.Wie kann ich eine Hexdatei aus C-Code zum Testen eines 32-Bit-RISC-V-Hardwaredesigns generieren?

Antwort

1

Sie elf2hex Befehl verwenden können, um eine .hex-Datei von der Elf-Datei (erstellt mit gcc -o) zu erstellen, dh: elf2hex 16 4096 my_elf_file > output.hex Wenn Sie eine 32-Bit-Architektur verwenden wollen, würde ich kompilieren mit riscv32-unbekannt-elf-gcc.

+0

Kann ich den von riscv32-unknown-elf-gcc auf meinem Prozessor generierten Code direkt ausführen? Ich denke, Riscv-Tests Repo generiert Code, der direkt auf meinem Prozessor ausgeführt werden kann, aber das sind Assembly-Programme. Wie kann ich solchen Code aus C-Programmen erzeugen? – Shrek

+1

Verwenden von elf2hex wie oben empfohlen. Sie können sich auch Makefiles von riscv_tests ansehen, um zu verstehen, wie sie generiert werden. – user2548418

+0

Ja, Sie können. Wie oben erwähnt, werfen Sie einen Blick auf das Makefile, in diesem Fall in Benchmark-Ordner bei Test-Repo. Es erstellt eine ausführbare Datei und eine .hex aus einer C-Datei. Dann können Sie spike verwenden, laden Sie es in einem FPGA, etc. dh 'riscv32-unbekannt-elf-gcc -o myexecutable.riscv mycode.c' und führen Sie es mit' Spike (-d Option, wenn Sie debuggen wollen) pk myexecutable.riscv' –

0

Ich verwende derzeit objcopy zum Testen meines Kerndesigns. Die aktuelle Version von gcc enthält eine patch, die es objcopy ermöglicht, Verilog-Speicherdateien auszugeben.

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

Ich kann diese Dateien leicht in meine Simulation in modelsim laden.

Aber um Ihre Frage zu beantworten, würde dies Hex-Dateien im Intel-Format generieren.

Objcopy unterstützt auch die Angabe, welche Codeabschnitte exportiert werden sollen und an welchen Speicherorten.

Verwandte Themen