Cyclone V SoCの挙動で気持ち悪い現象にハマった。
Cyclone V SoCのARMだけを起動して、FPGA側はロードせずに、H2F(HPS2FPGA)バスでFPGAにアクセスしたら、データが読み書きできる。
FPGAをロードしてないから、H2Fにアクセスしたらデッドロックするか、不定値を返してきて欲しいんだが・・・
だって、間違えたアクセスなんだから正常な風に動作しないで欲しい。
FPGAが動作してないのにも関わらず、データの読み書きができてたもんだからすっかり、FPGA側のメモリアクセスチェックがOKだと思ってたよ。
しかし、どこのメモリを読み書きしてるんだろうか?
これって、Cyclone V SoCの仕様なの?
これが仕様だとすると、Cyclone V SoCってFPGA部分の回路として使わないのであれば、何もしないでメモリとして使用できるということ?
それはそれで、外部メモリがいらないそこそこメモリを持った、ワンチップARMシステムが作れるんだけど。
次に、AlteraのDDR3 Soft-IPをH2Fに繋げて、FPGAをロードしてアクセスしたらデッドロックした。
前者も後者も大問題。
後者はH2Fのバスは開放しなきゃいけないよ。
アクセス先が存在するのにデッドロックはNG!
DDR3 Soft-IPのステータスがわからないからデッドロックの原因もわからんし・・・
Cyclone V SoCのデバイスも含め、Alteraのツールからして、ちょっと中途半端で使いづらい。
その後、なんだかんだと悪あがきしたら、DDR3コントローラをQsysの一番上に持って行ったら、Bus Errorを検出できるようになった。
まぁ、デッドロックよりかマシかぁ・・・
って、全部のバスがBus Errorを検出するようになった。
Qsysの位置で生成されるものが動作するかしないにも関係するの?
う?ん、なんだかなぁ?。
それはそれでXilinxツールの十八番では・・・
なにもそこまで真似しなくても・・・