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# 25252

14.2 EDK - mb-objcopy を使用して ELF ファイルをバイナリに変換しようとするとエラー メッセージが表示される

説明

mb-objcopy.exe を使用して ELF ファイルをバイナリに変換しようとすると、次のエラー メッセージが表示されます。

"Error Message:

---------------------------------------

mb-objcopy -O binary loader.elf loader.bin
BFD: Warning: Writing section `.text' to huge (ie negative) file offset 0x86000000.
BFD: Warning: Writing section `.init' to huge (ie negative) file offset 0x86000b2c.
BFD: Warning: Writing section `.fini' to huge (ie negative) file offset 0x86000b58.
BFD: Warning: Writing section `.ctors' to huge (ie negative) file offset 0x86000b78.
BFD: Warning: Writing section `.dtors' to huge (ie negative) file offset 0x86000b80.
BFD: Warning: Writing section `.rodata' to huge (ie negative) file offset 0x86000b88.
BFD: Warning: Writing section `.data' to huge (ie negative) file offset 0x86000cc8.
BFD: Warning: Writing section `.jcr' to huge (ie negative) file offset 0x86001014.
mb-objcopy: loader.bin: File truncated"

ソリューション


この警告メッセージは、実行ファイルのベクター セクションとメイン セクションの間のメモリ ギャップが大きいために表示されます。

objcopy プログラムで連続していないメモリ セクションが処理されると、自動的に 0 に置き換えられます。上記のケースでは、オフセットが非常に大きいので、プログラムが出力 BIN ファイルを切り捨てて、警告メッセージを出力している状態です。こうしないと、出力ファイルのサイズが非常に大きくなります (バイトで 0x00 ~ 0x86000000 = 2GB)。

この問題を回避するには、次のコマンドを使用して、連続していないメモリ セクションが 0 に置き換えられるのを防ぎます。

mb-objcopy -O binary -j .vectors.reset -j .vectors.sw_exception -j .vectors.interrupt -j .vectors.hw_exception ./spi_user_app/executable.elf ./flash_burn/spi_user_app1.b
mb-objcopy -O binary -R .vectors.reset -R .vectors.sw_exception -R .vectors.interrupt -R .vectors.hw_exception ./spi_user_app/executable.elf ./flash_burn/spi_user_app2.b
cat ./flash_burn/spi_user_app1.b >> ./flash_burn/spi_user_app2.b

これらのコマンドで異なるセクションごとにそれぞれ BIN ファイルを生成し (ベクター セクションのみのものと、ベクター セクションを除いたもの)、後でファイルをまとめます。

このアンサーは、mb-objcopy で作成される BIN ファイルのサイズを縮小し、フラッシュに BIN ファイルを保存する必要がある場合にも適用します。この BIN ファイルはフラッシュからは実行できず、ブートローダーを使用して、フラッシュから DDR に BIN ファイルをコピーする必要があります。

注記 : BIN フォーマットに変換された Xilkernel アプリケーションの中には、DDR にブートロードされた後に実行しないものがあります。この問題を回避するには、cat コマンドを実行しないでください。

代わりに、iMPACT (またはコマンド ライン) で MCS ファイルを生成するとき、2 つの BIN ファイルが別々にまとめられます。たとえば、ベクター スペースを含む BIN ファイルが b400000 の SPI オフセットに配置されると、それ以外のセクションは b400000 にベクター スペース (400hex) を足したところに配置されます。コマンド ラインからこれを実行するには、次のようになります。

promgen -spi -w -p mcs -u 0 download.bit -data_file up b40000 app1.bin -data_file up b40400 app2.bin

アンサー レコード リファレンス

マスター アンサー レコード

Answer Number アンサータイトル 問題の発生したバージョン 修正バージョン
34609 EDK 12.x - アンサーのリスト N/A N/A

関連アンサー レコード

Answer Number アンサータイトル 問題の発生したバージョン 修正バージョン
36497 12.1 EDK - 割り込みルーチンが含まれているとブートローダーでユーザー アプリケーションを読み込むことができない N/A N/A
AR# 25252
日付 01/30/2013
ステータス アクティブ
種類 一般
ツール 詳細 概略
このページをブックマークに追加