前回までで、PLICはCPUのシステム内に置く必要があるということが分かり、サブシステムの再実装を進めている。 具体的には、これまではTileをそのままSoCのCPUサブシステムとして見せていたのだが、これをサブシステムとして新たにラップし、PLICのモジュールなどをその中に押し込むことにした。
- これまで
SoC - Tile - CPU - DRAM - PLIC (のつもり) - CLINT (のつもり)
- これから
SoC - Subsystem - CPU - PILC - CLINT - DRAM
とする。PLICの実装自体はちゃんとしたものを作っていないので省略しているが、とりあえずこれでSoCから変なものを読み込んでハングすることはないだろう。
これにより、一応テストケースは前に進むようになったが、まだ問題がある。printf()
によりLiteXのロゴが出てほしいのだが、まだ出てこない。
メモリマップを修正して例外に飛ぶのは直したが、それ以外でもまだ問題がありそうだ。少なくとも、Uncachedな領域へのテストケースは甘い気がするのでこれは要チェック。
stdout
に対するアクセスをすると、どうも初期設定がされていないと勘違いされているっぽい?
波形を見る限りは正しいstdout
の情報が読み込まれていそうなので、これは要チェックだ。