UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 16536

8.1i EDK - 「ERROR:Data2MEM:31 - Out of bounds code segment for ram space in 'system_bd.bmm'.」というエラー メッセージが表示される

説明

キーワード : ELF, bit, 128, linker, script, contiguous, memory, BRAM, リンカ, スクリプト, 連続, メモリ

リンカ スクリプトを使用しなくてもすむようにし、BRAM に長いコード セクションを保存できるようにするため、2 つの BRAM メモリ コントローラを連結して使用して、コード スペースを拡張しようとしました。

ビットストリームをアップデートしようとすると、Data2MEM で次のようなエラー メッセージが表示されます。

"ERROR:Data2MEM:31 - Out of bounds code segment for ram space in 'system_bd.bmm'.
Memory space 'plb_bram_if_cntlr_1_bram' occupies [0x00000000:0x0001FFFF]
Code segment #1 occupies [0x00000000:0x00034D73]"

ソリューション

回避法 1

現在のところ、Data2BRAM では EDK で生成された連続メモリはサポートされません。

この問題を回避するには、リンカ スクリプトを使用し、アプリケーション コード セクションを別々のメモリ領域に置いてください。

XPS には Generate Linker Script というツールが含まれており、アプリケーション コードを 2 つのメモリにマップするリンカ スクリプトを作成する場合に使用できます。

XPS でこのツールを起動するには、[Tools] → [Generate Linker Script] をクリックします。

メモ : このツールは、EDK 6.3 以降に含まれます。

回避法 2

デフォルトの EDK リンカ スクリプトでは、プログラム ヘッダが 1 つの ELF ファイルが生成されます。 読み込みプログラム (この場合は Data2BRAM) は、このヘッダを読み込み、ELF をメモリにダウンロードします。 メモリ領域が連続しているため、START_ADDR オプションを設定すれば、リンカでそのアドレスを使用して ELF ファイルが生成されると考えるのは妥当ですが、Data2MEM で連続メモリを区別できないため、エラーが発生します。

この問題を解決するには、リンカ スクリプトを変更して物理メモリごとにプログラム ヘッダを作成します。 プログラム ヘッダの作成には、リンカ スクリプトの PHDRS 構文を使用できます。 この場合、ELF ファイル内の各物理メモリに対して 1 つずつ、2 つのプログラム ヘッダが作成されます。 各物理メモリ領域にそれぞれヘッダが読み込まれるので、ELF ファイルが適切なメモリにダウンロードされます。

ELF プログラム ヘッダの詳細は、次のサイトを参照してください。
http://www.gnu.org/software/binutils/manual/ld-2.9.1/html_mono/ld.html#SEC23

回避法 3

この問題を回避するもう 1 つの方法として、BMM ファイルを編集し、Data2MEM をスタンドアロン モードで実行する方法もあります。

メモ : この方法は、連続したメモリ スペースのサイズが等しい場合にのみ使用できます。

1. XPS で [Tools] -> [Update Bitstream] をクリックするか、または ISE でハードウェア フロー全体を実行し、アノテートされた BMM を生成します。
2. すべての BUS BLOCK が 1 つの ADDRESS BLOCK に入るように BMM ファイルを修正します。 メインのアドレス ブロックのアドレスを、アドレス領域全体を指定できるよう調整します。
3. BMM ファイルを保存し、次のコマンドを使用して Data2MEM をスタンドアロンで実行します。

> data2mem -bm system_bd.bmm -bd executable.elf tag top_level_tag_name
> -bt system.bit -o b down.bit

ここで、top_level_tag_name は最上位のアドレス ブロック インスタンス名です。

生成された BIT ファイルでは、ビットストリーム全体が初期化されるはずです。
AR# 16536
日付 04/25/2007
ステータス アーカイブ
種類 一般
このページをブックマークに追加