AR# 50209

14.1 EDK - ML605 の Platform Flash XL からのアプリケーションのブートロード方法

説明

このアンサーでは、オンボードの Platform Flash XL (XC128F) からアプリケーションをブートロードする方法について説明します。

ここでは、ML605、AXI_EMC、DDR3、および AXI_uartlite が使用されているものとします。

ソリューション

1) ML605 の MODE ピンが S2[1:6] = 10011X に設定されていることを確認します。
  • この方法は、『ML605 ハードウェア ユーザー ガイド』 (UG534) を参照してください。

2) XPS でハードウェアを構築します。

3) Base System Builder でデバイスとして SP605 を選択します。

4) ペリフェラルとして DDR、Linear Flash、および UARTLITE を選択します。

5) 最後のページまで [Next] をクリックし、[Finish] をクリックします。

6) MHS で次を実行します。

  • P30_CS_SEL (fpga_0_FLASH_CE_inverter_Res_pin) をグランドに接続します。
  • FPGA_FCS_B (デザインの新規信号) をメモリ コントローラーの CEN ピンに接続します。
  • Mem_ADV_LDN ポートをメモリ コントローラーに追加します。
  • Mem_ADV_LDN_net (デザインの新規信号) を PLATFORMFLASH_L_B ピンに接続します。
7) 次のものを UCF に追加します。信号名が若干異なる場合もあります。
  • Net fpga_0_FLASH_CE_inverter_Res_pin LOC=AJ12 | IOSTANDARD=LVCMOS25;
  • Net fpga_0_FLASH_Mem_ADV_LDN_pin LOC=AC23 | IOSTANDARD=LVCMOS25;
  • Net fpga_0_FLASH_Mem_FPGA_FCS_B_pin LOC=Y24 | IOSTANDARD=LVCMOS25;
8) UCF で次のものをコメント アウトします。
  • Net fpga_0_FLASH_Mem_A_pin<7> LOC=AA23  |  IOSTANDARD=LVCMOS25;
9) [Project] → [Export Hardware Design to SDK] をクリックします。
  • [Include bitstrem and BMM file] がオンになっていることを確認します。
10) SDK が起動したら、新しいザイリンクス C プロジェクトを 2 つ作成します ([File] → [New])。
  • Hello World
  • SREC Bootloader
11) 各プロジェクトのリンカー スクリプトが正しいメモリ ロケーションを指定していることを確認します (アプリケーションを右クリックし、[Generate Linker Script] をクリック)。
  • SREC Bootloader = BRAM
  • Hello World = DDR
12) SREC bootloader プロジェクトの blconfig.h ファイルを開きます。
  • アドレスを system.xml の FLASH BASEADDR + 0x00F0 0000 オフセットに設定します。
  • たとえば、FLASH が 0x7600 0000 から開始する場合は、アドレスを 0x76F0 0000 に設定します。
13) SREC bootloader プロジェクトの bootloader.c ファイルを開きます。
  • include セクションに次の行を追加します。
    • #include "xio.h"
    • #include "xparameters.h"
  • main() function の init_stdout() の下に次の行を追加します。
    • XIo_Out16(XPAR_LINEAR_FLASH_S_AXI_MEM0_BASEADDR+0x17BBE, 0x60);
    • XIo_Out16(XPAR_LINEAR_FLASH_S_AXI_MEM0_BASEADDR+0x17BBE, 0x03);

14) Ctrl + B を押して両方のアプリケーションを構築します。

15) [Xilinx Tools] → [Program FPGA] をクリックし、その ELF ファイルを選択して SREC Bootloader を FPGA にダウンロードします。

  • ボードが接続されていない場合はエラーが発生します。この操作では、DATA2MEM が実行され、SREC Bootloader を含む download.bit が取得されるだけです。
16) [Xilinx Tools] → [Program Flash] をクリックします。
  • ビットストリームで FPGA をコンフィギュレーションしておく必要があります。手順 14 のものを使用すれば問題はないはずです。

17) 「Hello World」 ELF ファイルを選択します。これは、通常 workspace_dir/hello_world_0/Debug/hello_world_0.elf にあります。

18) [Convert to Bootable SREC format] チェック ボックスをオンにします。

  • このボックスがグレー表示になっている場合は、フラッシュ ライターのウィンドウを閉じます。
  • [Xilinx Tools] → [Launch Shell] をクリックします。
  • hello_world_0/Debug ディレクトリに移動します。
  • 次のコマンドを入力します。
    • mb-objcopy O srec hello_world_0.elf hello_world_0.srec
  • シェルを最小化して、手順 15 および 16 を繰り返しますが、ELF ではなく SREC を選択します。

19) フラッシュ オフセットを 0x00F00000 に設定します。

20) フラッシュをプログラムします。

21) SDK に戻り、[Xilinx Tools] → [Launch Shell] をクリックします。

22) 次のように入力します。

  • promgen -p bin -c FF -o swapped.bin -data_file up 0 hello_world_0.srec -w
  • hello_world_0.elf.srec は、srec が保存されている場所を指定する必要があります。通常は hw_platform_0/cache の下にあります。

23) iMPACT を起動します。

24) [iMPACT Flows] パネルで [Create PROM file] をダブルクリックします。

25) [BPI Flash] → [Configure Single FPGA] を選択し、緑色の矢印をクリックします。

26) 手順 2 で「Virtex-6」を選択します。

27) XC128F [128M] を選択します。

28) 緑色の矢印をクリックします。

29) 保存場所を選択します。

30) [File Format] を [MCS] に設定します。

31) [Data Width] を [x16] に設定します。

32) [Add Non-Configuration Files] を [Yes] に設定します。

33) [OK] をクリックします。

34) 「Start adding device file to Revision 0」というメッセージが表示されたら [OK] をクリックします。

35) hw_platform_0/ フォルダーにある download.bit を選択します。

36) ほかのデバイス ファイルを追加しないでください。

37) 手順 18 で作成した swapped.bin ファイルをコンフィギュレーションしないデータ ファイルとして追加します。

38) アドレス 0x0078 0000 に追加します。

39) 左側で [Generate] をクリックします。

40) バウンダリ スキャンを初期化します。

41) デバイスを右クリックし、[Add SPI/BPI Flash] をクリックします。

42) 手順 25 で作成した MCS を割り当てます。

43) デバイスのフラッシュを右クリックし、[Program] をクリックします。

44) これで終了です。

AR# 50209
日付 11/23/2016
ステータス アクティブ
種類 一般
ツール