2024-04-01から1ヶ月間の記事一覧
LiteXのUARTデバイスの挙動を確認したくて、Migenのソースコードをチェックしている: UARTのデバイスは、Wishboneを経由して接続されている。 litex/litex/soc/cores/uart.py class UARTWishboneBridge(UARTBone): def __init__(self, pads, clk_freq, baud…
自作CPUのSpikeシミュレータをかなり久しぶりにアップデートすると、いろんな関数が変わっていてかなり戸惑ってしまった。 LiteXとSpikeの設定を変更できるようにして、とりあえずLiteXモードで動作するようにした。 Spike側のBootROMを削除する必要がある。…
自作CPUのSpikeシミュレータをかなり久しぶりにアップデートすると、いろんな関数が変わっていてかなり戸惑ってしまった。 前回、モデルシミュレータが途中でハングしてしまっていたのだが、一度全部Cleanしてやり直すと多分ちゃんと動いている。 LiteXとSpi…
RISC-Vのプロファイルについて、RVAに続いてRVBという謎のプロファイルが追加されていたので調査することにした。 RVAというのはRISC-Vのプロファイルのうちアプリケーション・プロセッサ向けのものである。 一方で、RVBというのもアプリケーション・プロセ…
自作CPUのSpikeシミュレータをかなり久しぶりにアップデートすると、いろんな関数が変わっていてかなり戸惑ってしまった。 前回、モデルシミュレータが途中でハングしてしまっていたのだが、一度全部Cleanしてやり直すと多分ちゃんと動いている。 ただ、それ…
自作CPUのSpikeシミュレータをかなり久しぶりにアップデートすると、いろんな関数が変わっていてかなり戸惑ってしまった。 一応すべてのコンパイルエラーを直して動かしてみたが、どうも途中でエラーが発生する。 argv[7] = --log-commits argv[8] = --dtb=.…
CLINT : 0x02000000 PLIC : 0x0c000000 MIEを設定すると、タイマ割り込みがかかる。 core 0: 3 0x0000000000001760 (0x09313c23) mem 0x0000000010001fd8 0x0000000000000000 core 0: 0x0000000000001764 (0x0c0027b7) lui a5, 0xc002 core 0: 3 0x000000000…
最新のSpikeの実装にアップデートして、PLICとCLINTを動かすためにいろいろやってみる。 LiteXのBIOSを動かしたくて、いろいろやっている。 ../spike_dpi/riscv-isa-sim/spike -l --log-commits --dtb=../dts/rv64imafdc.dtb --pc=0 -m0x0:0x100000,0x100000…
前回の続き。exception interrupt #7というのは例外かと思っていたら割り込みだった。 つまり、この割り込みが入った時点でタイマ割り込みが掛かっていたことがわかる。 タイマ割り込みはCLINTが行うはずなので、その辺を確認してみる。 core 0: 3 0x0000000…
ちょっと自作CPUの検証環境を調整したくて、リセット時のPC=0として実行して検証を走らせたいのだが、どうにもSpikeがエラーを出してしまう。 0x0にブートコードを含んでいるELFをロードすると、invalid write to 0のような感じでエラーが出力して実行できな…
LiteXのBIOS立ち上げ環境を、独自のRTLシミュレーション環境に移植したくて、メモしておく。 基本的に、LiteXをダウンロードしたときに登場するlitex/litex/soc/software/を丸ごと別ディレクトリに移動することになる。 さらに、ライブラリを作成するの、pyt…
0x28付近でループしている。これは例外処理の部分。 0000000000000020 <trap_entry>: 20: fe113c23 sd ra,-8(sp) 24: fe513823 sd t0,-16(sp) 28: fe613423 sd t1,-24(sp) 2c: fe713023 sd t2,-32(sp) 30: fca13c23 sd a0,-40(sp) 34: fcb13823 sd a1,-48(sp) 38: fcc134</trap_entry>…
少し前に話題になっていたけれども、Rustで記述されたオープンソースの波形ビューワのSurferについていろいろ試行していた。 surfer-project / surfer · GitLab これまでは基本的に波形ビューワとしてGTKwaveを使っていたのだけれども、どうにもGTKwaveも使…
LiteXにおけるUARTの書き込みについて、そのフローを確認しておく。 litex/litex/soc/software/libc/stdio.c static int litex_putc(char c, FILE *file) { (void) file; /* Not used in this function */ #ifdef CSR_UART_BASE uart_write(c); if (c == '\n…