FPGA コンフィギュレーション ビットストリームと Microblaze プロセッサで使用されるソフトウェアの両方を含むシリアル SPI フラッシュ用の PROM ファイル (.MCS) を作成する適切な手順を知りたいです。これは、ハードウェアとソフトウェアの設計がすべて完了していることを前提としています。
ザイリンクスの Spartan-6 評価ボード SP605 を使用しています。このボードには複数の不揮発性メモリ デバイスが含まれており、シリアル SPI フラッシュを使用して、FPGA ビットストリームと、メモリにロードする必要がある Microblaze のソフトウェアの両方を保存したいと考えています。これは、Microblaze のコードが内部 BRAM にある場合にのみ実現できます。外部 DDR3 RAM にコードまたはデータ セクションを配置するようにリンク スクリプトを作成すると、失敗します。
- 編集 -
OK、私はいくつかの異なることを試しましたが、何をする必要があるかをよりよく理解していますが、まだ成功していません (ところで、Andy の返信に感謝します)。だから、私は2つの異なることを試しました。どちらの場合も、最初にシステム ビットストリームをブートローダー プログラムとマージして、問題なく動作する新しい .bit (download.bit) ファイルを生成します (SDK でプログラムを実行し、ブートローダーを選択して BRAM をロードすると、data2mem が呼び出されて、新しい download.bit ファイルを生成します)。
最初のアプローチ - BIN ファイル
メイン プログラムが完了したら (DDR RAM とすべてを対象とするリンカー スクリプトを使用)、mb-objcopy を呼び出して、.elf ファイルから bin ファイルを生成します。
mb-objcopy -O binary program -R .vectors_reset -R .vectors.sw_exception -R vectors.interrupt -R .vectors.hw_exception dummy.elf dummy.b
次に、iMPACT を使用して作成し、download.bit と dummy.b を使用して MCS ファイルを作成します。download.bit を SPI フラッシュの開始アドレスに配置し、dummy.b をさらに下に配置します (ブートローダーは既にそのアドレスを指しています)。次に、MCS をシリアル SPI FLash に書き込み、再起動すると、ブートローダーが実行され、おそらくすべてが DDR RAM にコピーされますが、メイン プログラムが動作しません。ここで何か不足していますか?メイン プログラムを .elf から BIN に変更せずに iMPACT を使用しようとすると、PC が停止し (コンピューターを完全にリセットしなければならない場合もあります)、非常に高速でメモリを搭載した PC を使用しています。
私が使用したブートローダーは、Xilinx XAPP1146 ドキュメントにリンクされているものと同じです。
2 番目のアプローチ - SREC ファイル
手順はほぼ同じですが、同じ mb-objcopy コマンドを使用して BIN ファイルではなく SREC を生成する点が異なります (今回は、BIN ファイルに対して行う必要があったセクターを削除しません)。巨大なファイルが生成されます)。
私が使用したブートローダーは、SDK ソフトウェアに含まれているものです。
Microblaze 用のブートローダの作成に成功したかどうか、どなたか教えてください。
前もってありがとう、エリック