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

14.1 EDK - アプリケーションをブロック RAM にブートロードする方法

説明


FPGA ビットストリームをうまくダウンロードできないとき、ソフトウェア (ELF) の反復があるたびにアプリケーションをフラッシュからブロック RAM にブートロードするのは便利ですが、(ハードウェアでテストするため) ソフトウェアの反復があるたびにフラッシュにコピーをするのは実用的ではありません。

この問題がない場合は、ブートローダーを使用しない簡単な方法が (ザイリンクス アンサー 46518) に説明されています。

このチュートリアルでは、64KB のブロック RAM を使用し、SREC ブートローダーをビットストリームに配置します。このブロック RAM はパラレル フラッシュ デバイスのオフセットでアプリケーションにリンクされています。これより容量の小さなブロック RAM を使用することもできますが、ここでは 64KB を使用します。

ブロック RAM の範囲の上限にブートローダーを配置するので、エンド アプリケーションにメモリすべての使用できます。またフラッシュから ELF をコピーしているときにブロック RAM にリンクされているブートローダーが上書きされないようにすることができます。

ソリューション

  1. 使用ボード用に XPS でプロジェクトを作成し、リニア フラッシュ デバイス (EMC を介す)、および 64K ブロック RAM を含めます。Base System Builder デザインが理想的ですが、必須ではありません。
  2. SDK にビットストリームを使用してエクスポートします。
  3. SDK でアプリケーションを作成します (userApp)。
  4. アプリケーションを右クリックし、[Generate Linker Script] をクリックします。
  5. userApp がブロック RAM にリンクされていることを確認します。
  6. 新しい SREC ブートローダーを作成します ([File] → [New Xilinx C Project])。
  7. このブートローダーの src フォルダーで、blconfig.h にあるアドレスをフラッシュ ベースのアドレスに変更します。
    • フラッシュにもブートローダー ビットストリームをコピーする場合は、オフセットを含めるようにしてください。
    • たいていのデバイスでは FLASH_BASEADDRESS + 0x01200000 というアドレスを使用するとうまくいきいます。
  8. ブートローダーのアプリケーションを右クリックし、[Generate Linker Script] をクリックします。
  9. ブートローダーがブロック RAM にリンクされていることを確認します。ヒープ スペースは不要です。
  10. bootloader.c ファイルを開き、より小型で高速なブートローダー用に 42 行目をコメントアウトします。このモードではスタック スペースを 0x100 に減らすことができるはずです。
  11. このブートローダーのリンカー スクリプトを開きます (src フォルダーにある)。
  12. ウィンドウの下に「Source」と名前がついている小さなタブがあり、これをクリックします。
  13. ブートローダーのリンカー スクリプトのソースで、ブロック RAM の ORIGIN および LENGTH を編集し、メモリ範囲の上限付近になるようにします。例 :
    • microblaze_0_i_bram_ctrl_microblaze_0_d_bram_ctrl : ORIGIN = 0x00000050, LENGTH = 0x0000FFAF
    • microblaze_0_i_bram_ctrl_microblaze_0_d_bram_ctrl : ORIGIN = 0x00002000, LENGTH = 0x00002000
  14. このように変更すると、ブートローダーがユーザー アプリケーションがリンクされている位置 (ORIGIN = 0x00000050) で同じブロック RAM にユーザー アプリケーションのコピーを開始できるようになります。

[Xilinx Tools] → [Program FPGA] をクリックし、bootloader.elf を選択し (bootloop ではなく)、(ザイリンクス アンサー 46518) にあるようにフラッシュにこのビットストリームをコピーします (または bootloader.elf を最上位の ISE または PlanAhead プロジェクトに追加してからビットストリームをコピー)。

この後、FlashWriter を使用して ([Xiinxtools] → [Program Flash])、手順 7 で説明したオフセットに ELF をコピーします (チェックボックスで SREC に変換)。ビットストリーム全体をコピーするより、ユーザー アプリケーションのみをコピーしたほうが断然スピードが速くなります。ORIGIN および LENGTH は必要に応じて変更することができます。
AR# 47911
日付 02/07/2013
ステータス アクティブ
種類 一般
ツール
  • EDK - 14.1
このページをブックマークに追加