2016-04-15 2 views
1

私は、Verilogのハードウェア設計をBerkeleyのVscaleプロセッサーに基づいて開発しました。設計をテストするために、私はいくつかのCプログラムをコンパイルし、hexファイルを生成したい。私は結局、hexファイルからROMを生成し、Verilogシミュレーションを実行したいと考えています。 riscv64-unknown-elf-gccまたはriscv32-unknown-elf-gccという目的に最も適したコンパイラはどれですか? VscaleプロセッサのアーキテクチャはRV32IMです。32ビットRISC-Vハードウェア設計をテストするためにCコードからhexfileを生成するにはどうすればよいですか?

答えて

1

あなたは(gccの-oを使用して作成)ELFファイルからの.hexファイルを作成するためにelf2hexコマンドを使用することができ、 すなわち:あなたは32ビットアーキテクチャを使用しようとしている場合elf2hex 16 4096 my_elf_file > output.hex は、私が使用してコンパイルしますriscv32-unknown-elf-gcc。

+0

riscv32-unknown-elf-gccで生成されたコードを自分のプロセッサで直接実行できますか?私は、riscv-tests repoは自分のプロセッサで直接実行できるコードを生成するが、それはアセンブリプログラムだと思う。どうすればCプログラムからそのようなコードを生成できますか? – Shrek

+1

上記で推奨されているelf2hexを使用してください。 riscv_testsのMakefileを見て、それらの生成方法を理解することもできます。 – user2548418

+0

はいできます。上記のように、Makefile(この場合はtest repoのベンチマークフォルダ)を見てください。 Cファイルから実行可能ファイルと.hexファイルを作成します。次に、スパイクを使用して、FPGAなどでロードします。 つまり、 'riscv32-unknown-elf-gcc -o myexecutable.riscv mycode.c'を実行し、' spike(デバッグしたい場合は-dオプション)を使用して実行します。 myexecutable.riscv' –

0

現在、私のコアデザインのテストにはobjcopyを使用しています。 gccの現在のバージョンにはpatchが含まれており、これによりobjcopyはVerilogメモリファイルを出力できます。

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

私はこれらのファイルをモデルのシミュレーションで簡単に読み込むことができます。

しかし、あなたの質問に答えるために、これはintel形式の16進ファイルを生成します。

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

Objcopyは、エクスポートするコードセクションとどのメモリロケーションを指定するかサポートしています。

関連する問題