FPGA開発日記

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

LiteXによるSoC環境構築を試行する (11. テストケースのデバッグ)

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

波形をチェックしながら途中でテストケースが死んでしまう原因を調べていたのだが、どうやら不正なメモリ領域にアクセスしていたらしい。 PLICの領域を0x0C00_0000に配置していたのだが、この領域を出るとバスが反応しなくなる(というか、その場合はエラーを返すようにしてほしいな...)

メモリマップ自体は以下の実装に従わなくてはならない。

    # Memory Mapping.
    @property
    def mem_map(self):
        return {
            "rom"       : 0x0000_0000,
            "sram"      : 0x2000_0000,
            "main_sram" : 0x4000_0000,
            "csr"       : 0xf000_0000,
        }

で、このマップに例えば0x0c00_0000を追加すればいいかというとそうでもなく、このキーワード"rom", "sram", "main_sram", "csr"というのは決まっているらしくて、ほかのキーワードを安易に追加してもあまり意味がない。

PLICへのアクセスはCPUサブシステムの外に出してはダメで、サブシステムの中で処理しなければならない。この場合は、ラッパーの構成を変える必要がある。 実装を変更しよう(今日はこれまで)。