keigo1216 / ketchup

raspberrypi 3A+用のOS
1 stars 0 forks source link

implement boot #1

Closed keigo1216 closed 11 months ago

keigo1216 commented 11 months ago

ブート処理を作成する

基本的には参考にしているサイトと同じ 開発していて, 異なっていたところだけを示す.

ブートローダの選択

risc-vアーキテクチャでは, デフォルトではOpenSBIのブートローダが起動する armではそのようなデフォルト実装のブートローダは存在しない qemuを起動する際には, 使用するラズパイにあったデバイスツリーを指定する.(githubからダウンロード可能). それぞれのラズパイにあったデバイスツリーファイルはhttps://forums.raspberrypi.com/viewtopic.php?t=238262

ブートプログラムの配置

0x80000アドレスにカーネルの先頭アドレスを配置する https://github.com/qemu/qemu/blob/4705fc0c8511d073bee4751c3c974aab2b10a970/hw/arm/raspi.c#L32C25-L32C32

スタックポインタのストア

LDR命令でspへ直値を入れることはできないようなので, 一旦汎用レジスタにおいてからロードする. 汎用レジスタはX0からX7までは関数の引数などに使われるらしいので, X8を使用した

参考

https://operating-system-in-1000-lines.vercel.app/ja/boot