FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

2025-04-01から1ヶ月間の記事一覧

Linux向けにコンパイルしたRISC-VバイナリをSpikeでどうにかして動かす方法を考える (2. SpikeでLinuxをブートする通常のフローの確認)

SpikeでLinux向けにコンパイルしたバイナリをどうにかして動かすということにあたり、とりあえずまずはSpikeでLinuxを立ち上げる方法を確立するというところから始めることにした。 SpikeでLinuxをブートさせるためには、以下のことが必要となる。 Spikeをビ…

Linux向けにコンパイルしたRISC-VバイナリをSpikeでどうにかして動かす方法を考える

SpikeでLinux向けにコンパイルしたバイナリをどうにかして動かせないかということを試している。 手順としてはこうだ: ユーザプログラムを riscv64-unknown-linux-gnu-gxxでコンパイルする。 Linuxのイメージと、fw_jump.elf を用意し、Linuxをブートさせる…

RISC-V 命令セットシミュレータ Whisperを試す (3. LLVMでビルドしたバイナリを試す)

いろいろ調査して、Whisperで動かすためにはいろんなことが必要だとわかった。 Whisperで動かすためには、基本的に riscv64-unknown-elf-gxx でコンパイルする必要がある。どうにも、GitHubのページを調べて、これまでの経験からも、riscv64-unknown-elf-gcc…

RISC-V 命令セットシミュレータ Whisperを試す (2. LLVMでビルドしたバイナリを試す)

LLVMでビルドしたバイナリをWhisperで流してみる。 #include <stdio.h> int main(int argc, char **argv) { printf("Hello World\n"); if (argc > 1) { printf("%s\n", argv[1]); } return 0; } /home/msyksphinz/llvm/LLVM-20.1.2-Linux-X64/bin/clang --target=risc</stdio.h>…

RISC-V 命令セットシミュレータ Whisperを試す (1. ビルド手順)

SPECを動かすのに、Whisperを試すことにした。 WhisperはSpikeかそれ以上に様々なオプションを持っているシミュレータだ。 github.com ビルド手順: Whisper自体をビルドする前に、先にBoostをコンパイルする。 curl -L https://archives.boost.io/release/1…

RISC-V勉強会 2025/04/18 の発表資料をアップロードしました

RISC-V勉強会の発表資料をSpeakerDeckにアップロードしました。 speakerdeck.com RISC-V勉強会の情報はこちら。 risc-v.connpass.com

SPEC2017をビルド・実行できる環境を作ろう (8. RISC-V 向けバイナリでQEMUの実行環境を構築する)

RISC-V バイナリを QEMU で動作させる試行の続き。 もうちょっと改造して、QEMUでの動作が一発で確認できるようにする。 all: perlbench sgcc mcf omnetpp xalancbmk x264 deepsjeng leela xz specrand include perlbench.mk include sgcc.mk include mcf.mk…

SPEC2017をビルド・実行できる環境を作ろう (7. RISC-V 向けバイナリでQEMUの実行環境を構築する)

RISC-V バイナリを QEMU で動作させる試行の続き。 LLVMコンフィグレーションでRISC-Vバイナリとしてコンパイルして、QEMUで動かそう。 チマチマ実行コマンドを追加していく。 x264の実行については1つ注意が必要だ。BuckBunny.yuv を先に生成する必要がある…

SPEC2017をビルド・実行できる環境を作ろう (6. RISC-V 向けバイナリでQEMUの実行環境を構築する)

RISC-V バイナリを QEMU で動作させる試行の続き。 LLVMコンフィグレーションでRISC-Vバイナリとしてコンパイルして、QEMUで動かそう。 チマチマ実行コマンドを追加していく。 こんな感じで。 SPEED_PERLBENCH_DIR = $(BASE_DIR)/600.perlbench_s SPEED_PERL…

SPEC2017をビルド・実行できる環境を作ろう (5. SPEC2017 を RISC-V LLVM でビルドする手順)

RISC-V バイナリを QEMU で動作させる試行の続き。 SPEC2017 は CPU のベンチマークとして広く使われているスイートである。 本記事では RISC-V アーキテクチャ向けに LLVM コンパイラを使用して SPEC2017 をビルドする手順を構築する。 spec2017のconfig/デ…

SPEC2017をビルド・実行できる環境を作ろう (4. RISC-V向けのコンパイラをLLVMに変更する)

RISC-V バイナリを QEMU で動作させる試行の続き。 GCCだと-O3オプションで落ちてしまうので、LLVMを試してみよう。 configファイルに以下を追加する。 % define model --target=riscv64-unknown-linux-gnu -march=rv64gc --sysroot=/home/msyksphinz/riscv6…

SPEC2017をビルド・実行できる環境を作ろう (3. RISC-V向けバイナリを作成する試行)

RISC-V バイナリを QEMU で動作させる試行の続き。 フローがだいたい構築し出来てきたので、コマンドを用意していこうと思う。 perlbenchについてはこんな感じかな。 cd /home/msyksphinz/spec2017/benchspec/CPU/502.gcc_r/data/train/input && \ qemu-risc…

gitの IncludeIf ディレクティブを活用したリポジトリ別設定管理

gitを使用する際、複数のリポジトリを扱っていると、リポジトリごとに異なる設定を適用したいケースがある。 例えば、プライベートのリポジトリと会社のリポジトリで異なるユーザー名やメールアドレスを使い分けたい場合だ。 そのほかにも、例えば複数のリモ…

SPEC2017をビルド・実行できる環境を作ろう (2. RISC-V向けバイナリを作成する試行)

次は、SPEC2017のバイナリを作成して、シミュレータなどで動かしてみることを考える。 そのためには、RISC-V向けConfigの作成が必要だ。 spec2017_work/config/myriscv.cfg : config/Example-gcc-linux-x86.cfg との差分は以下だ。 115c118 < % define gcc_d…

GitHub Bundleを使用したコードの単一ファイル化

ちょっといろいろ調べ物をしていて、gitリポジトリを移動したり、複数の場所にある同一リポジトリを同期化するときに、git bundleを使用すると便利そうだったので、その方法をまとめておく。 GitHubのbundleコマンドは、複数のGitリポジトリのコミット履歴や…