32bit RISC-V Linuxを作りQEMUで実行する

皆様こんにちは.18のhiraです.
僕はコンピュータ工学をやっているつもりで,最近は作成したプロセッサでLinuxを動かそうとしているらしいです.

そのため対称実験用に正しく動くものが欲しいと思い,作っているプロセッサと同じ32bit RISC-VでLinuxを動かす環境を探していました.そこでプロセッサエミュレータであるQEMUでLinuxを動かしました.

その際,64bit向けはあっても意外に32bit向けの構築方法のまとめは少なかったため,32bit環境でLinuxをソースコードからRISC-V向けにビルドしたり,それをQEMUで実行する流れをまとめました.

やっている内容はほぼリンクのブログ(1)リンクのブログ(2)の丸パクリなのですが,一部変える点があったり,補足したい点があったため記録します.

QEMU上で32bit RISC-V Linuxを動かした際のブート画面
“32bit RISC-V Linuxを作りQEMUで実行する” の続きを読む

RISC-Vにおける仮想->物理アドレス変換のまとめ

皆様こんにちは.18のhiraです.
僕はコンピュータ工学をやっているつもりなのですが,最近アドレス変換に触れ理解に苦しんだため,備忘録的にその挙動を記録します(そのため正確性はありません…).

OSが載っているような複雑なコンピュータでは,Excelやゲーム,音楽ソフトなど複数のアプリを同時に動かすことができます.この時,アプリ同士のアドレスが重ならないようにアドレスをずらす機構があります.

この変換機構は Memory Management Unit (MMU) という機構によって行われます.またこの変換方法も代表的なものがいくつかあり,今回は32bitのRISC-Vが公式に使用するSv32を題材として紹介します.

“RISC-Vにおける仮想->物理アドレス変換のまとめ” の続きを読む