MicroblazeのHeap設定

FPGA

Vitisでアプリケーションプロジェクトを作成してmallocを実行すると、全く成功しません(NULLが返ってくる)。システムのプロセッサはArty上に構築したMicroBlazeです。Artyにはボード上に256MBのDDRメモリが搭載されているので、メモリ不足になることはないと思っていたので、原因がわかりませんでした。

解決策

原因は、デフォルトのHeapサイズでした。プロジェクトのLinker Script(lscript.ld)で設定されているHeapのサイズが小さいだけでした。デフォルトのHeapサイズは2KBに設定されていました。lscript.ldを開いてHeapサイズを調整すると、問題が解決しました。

Heap Sizeの設定
Heap Sizeの設定

また、最初に疑ったのは、「MicroBlazeのメモリがローカルメモリにアサインされているのでは」ということだったのですが、lscript.ldを見ると.heapや.stackなどがDDR(mig_7series_0_memaddr)にアサインされていることを確認できました。

Heapのメモリアサイン
Heapのメモリアサイン
タイトルとURLをコピーしました