FPGA開発日記

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

LiteXによるSoC環境構築を試行する (10. 自作CPUにdemoアプリを適用してみる)

https://raw.githubusercontent.com/enjoy-digital/litex/master/doc/litex.png

前回、VexRiscvに対してでもアプリを適用し、donutプログラムを動作させたのであった。今度は、自作CPUに対して適用させたいと思う。

まずいろいろ調査したのだが、VexRiscvと自作CPUはメモリマップが違うので、プログラムの再コンパイルを行う必要がある。 どのCPUを使うのかについては、ビルドパスを指定するだけで対応可能だ。

./demo.py --build-path [LiteXの各CPU向けビルドパス]

これ、どういう仕組みになっているのか不思議だったのだが、Makefileを見てみると、各ビルドディレクトリに含まれているソフトウェアライブラリを使ってリンクすることで、それぞれの環境に対応しているようだ。確かに、これは便利。

demo.elf: $(OBJECTS)
        $(CC) $(LDFLAGS) -T linker.ld -N -o $@ \
                $(OBJECTS) \
                $(PACKAGES:%=-L$(BUILD_DIR)/software/%) \
                -Wl,--whole-archive \
                -Wl,--gc-sections \
                -Wl,-Map,$@.map \
                $(LIBS:lib%=-l%)

というわけで動かすと、意外と一発で動作した(自分のコアをまだ信用していない)。

litex_sim --cpu-type=scariv --output scariv_build --integrated-rom-init=./litex/litex/soc/software/demo/demo.bin

donutプログラムを動かすと、多少時間はかかるがちゃんと動作した。すばらしい!

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com