1. タ ーゲ ッ ト タ ー ミ ナルの U-Boot コ ン ソ ールで次の コ マ ン ド を実行 し ます。 こ れ ら の コ マ ン ド に よ っ て QSPI が 消去 さ れ、BOOT.bin イ メ ージが DDR か ら QSPI に書 き 込まれます。
ZynqMP> sf probe 0 0 0 ZynqMP> sf erase 0 0x4000000
ZynqMP> sf write 0x2000000 0 0x4000000
2. イ メ ージが QSPI に書 き 込まれた ら 、ZCU102 ボー ド の電源を切断 し 、84ページの 「ZCU102 ボー ド のセ ッ ト ア ッ プ」 の説明に従っ てボー ド を セ ッ ト ア ッ プ し ます。
UART-0 タ ー ミ ナルで Linux の ロ ー ド 、UART-1 タ ー ミ ナルで R5 アプ リ ケーシ ョ ンの実行を確認で き ます。
こ の章では、 主にシ ス テ ム ブー ト と 、 シ ス テ ム ブー ト に関連す る さ ま ざ ま な コ ン ポーネ ン ト を中心に説明 し てい ま す。 次の章で、PS ペ リ フ ェ ラ ル、PL IP、 お よ び APU コ ア と RPU コ アの処理能力を活用す る Linux お よ びス タ ン ド ア ロ ン (ベア メ タ ル) アプ リ ケーシ ョ ンについて説明 し ます。
USB ブー ト モー ド のブー ト シーケ ン ス
Zynq UltraScale+ MPSoC は USB ス レーブ ブー ト モー ド も サポー ト し てい ます。 こ れは、USB デバ イ ス ク ラ ス仕様の USB DFU (Device Firmware Upgrade) を適用 し てい ます。OpenMoko DFU-Util の よ う な標準ア ッ プデー ト ユーテ ィ リ テ ィ を使用す る と 、 新 し く 作成 さ れた イ メ ージ を USB ポー ト を介 し て Zynq UltraScale+ に ロ ー ド で き ます。 次のセ ク シ ョ ンでは、 こ のブー ト モー ド でブー ト イ メ ージ を ロ ー ド す る ために必要な一連の設定を説明 し ます。DFU ユー テ ィ リ テ ィ は、 ザ イ リ ン ク ス SDK お よ び PetaLinux に付属 し てい ます。
USB ブー ト モー ド を有効にする ために必要な FSBL の設定
USB ブー ト モー ド を有効にす る ために必要な FSBL の変更はほ と ん ど あ り ません。USB ブー ト モー ド サポー ト は、
FSBL のフ ッ ト プ リ ン ト を約 10 KB 増加 し ます。 こ れは主に初期開発段階中に使用す る こ と を目的 と し てい る ので、
こ のサポー ト は OCM 空間を節約す る ためデフ ォ ル ト では無効にな っ てい ます。 こ のセ ク シ ョ ンでは、FSBL を変更 し て USB ブー ト モー ド を有効 し ます。FSBL プ ロ ジ ェ ク ト は こ のチ ュ ー ト リ アル全体で広 く 使用 さ れてい る ので、
既存の FSBL プ ロ ジ ェ ク ト は変更 し ません。 その代わ り に、 こ のセ ク シ ョ ンでは新 し い FSBL プ ロ ジ ェ ク ト を使用 し ます。
Arm Cortex-A53 ベースの APU 用 FSBL の作成
1. SDK で [File] → [New] → [Application Project] を ク リ ッ ク し 、New Project ウ ィ ザー ド を開 き ます。
2. ウ ィ ザー ド の各ページで次の表の情報に基づいて設定を選択 し ます。
3. [Finish] を ク リ ッ ク し ます。
4. [Project Explorer] ビ ュ ーで、 次の よ う に [fsbl_usb_boot] プ ロ ジ ェ ク ト を展開 し 、xfsbl_config.h を開 き ます。
fsbl_usb_boot > src > xfsbl_config.h
5. xfsbl_config.h で、 次の よ う に変更ま たは設定 し ます。
#define FSBL_QSPI_EXCLUDE_VAL (1U)
#define FSBL_SD_EXCLUDE_VAL (1U)
#define FSBL_USB_EXCLUDE_VAL (0U)
6. Ctrl + S キーを押 し て変更を保存 し ます。
7. FSBL (fsbl_usb_boot) を再ビル ド し ます。
USB ブー ト 用ブー ト イ メ ージの作成
こ のセ ク シ ョ ンでは、 ブー ト イ メ ージ を作成 し 、DFU ユーテ ィ リ テ ィ を使用 し て USB を介 し て ロ ー ド し ます。
Device Firmware Upgrade (DFU) は、 フ ァ ーム ウ ェ ア を USB を介 し て接続 さ れたデバ イ ス にダ ウ ン ロ ー ド 、 ま たは フ ァ ーム ウ ェ ア をデバ イ ス か ら ア ッ プ ロ ー ド し ます。 こ のブー ト モー ド では、bootROM に よ っ て ロ ー ド さ れ る ブー
ト ロ ーダー (FSBL) と PMUFW が、DFU ユーテ ィ リ テ ィ を使用 し て ホ ス ト マシ ンの USB ポー ト か ら Zynq UltraScale+
のオンチ ッ プ メ モ リ (OCM) に コ ピー さ れます。OCM のサ イ ズ (256 KB) に よ り 、bootROM で USB ブー ト モー ド で ダ ウ ン ロ ー ド さ れ る ブー ト イ メ ージのサ イ ズが制限 さ れます。 こ れを考慮 し 、 サ イ ズ要件が満た さ れてい る こ と を 条件 と し て、FSBL と PMUFW のみが最初の BOOT.bin に統合 さ れ、OCM に コ ピー さ れます。 残 り のブー ト パー テ ィ シ ョ ンは、 別のブー ト イ メ ージに統合 さ れて DDR メ モ リ に コ ピー さ れます。DDR は、 こ の段階で既に ロ ー ド さ れて実行 さ れてい る FSBL に よ り ロ ー ド さ れます。 次の手順に従っ て、 こ のブー ト モー ド のブー ト イ メ ージ を作 成 し ます。
表 5-1:ウ ィ ザー ド のプ ロパテ ィ および コ マ ン ド
ウ ィ ザー ド ページ シス テムプ ロパテ ィ 設定または使用する コ マ ン ド
Application Project Project name fsbl_usb_boot
Use default location オン
OS Platform standalone
Hardware Platform edt_zcu102_wrapper_hw_platform_0
Processor psu_cortexa53_0
Language C
Compiler 64-bit
Hypervisor Guest No
Board Support Package [Use existing] を オンに し て 「a53_bsp」 と 入力。
Templates Available Templates Zynq MP FSBL
1. SDK で [Xilinx] → [Create Boot Image] を ク リ ッ ク し ます。
2. fsbl_usb_boot.elf お よ び pmu_fw.elf のパーテ ィ シ ョ ン を選択 し 、 次の図に示す よ う に設定 し ます。
3. PMUFW パーテ ィ シ ョ ンが bootROM に よ っ て ロ ー ド さ れ る よ う 設定 さ れてい る こ と を確認 し ます。
4. [Create Image] を ク リ ッ ク し て BOOT.bin を生成 し ます。
X-Ref Target - Figure 5-29
図 5-29: USB ブー ト モー ド の Create Boot Image ウ ィ ザー ド
PetaLinux の U-Boot の変更
PetaLinux の U-Boot を変更 し 、image.ub を ロ ー ド で き る よ う に し ます。 デバ イ スツ リ ーを変更 し て、USB をペ リ フ ェ ラ ル モー ド に設定す る 必要があ り ます。 デフ ォ ル ト の PetaLinux コ ン フ ィ ギ ュ レーシ ョ ンでは、USB はホ ス ト モー ド に設定 さ れてい ます。
こ れには、 次の手順に従っ て PetaLinux プ ロ ジ ェ ク ト
<PetaLinux-project>/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.d tsi にあ る system-user.dtsi を変更 し ます。
1. system-user.dtsi を次の よ う にな る よ う に変更 し ます。
/include/ "system-conf.dtsi"
/ {
gpio-keys { sw19 {
status = "disabled";
};
};
leds {
heartbeat_led {
status = "disabled";
};
};
};
&uart1 {
status = "disabled";
};
&dwc3_0 {
dr_mode = "peripheral";
maximum-speed = "super-speed";
};
変更済みの system-user.dtsi フ ァ イ ルは、 こ のチ ュ ー ト リ アル付属のデザ イ ン フ ァ イ ル ZIP の usb_boot フ ォ ル ダーに含まれてい ます。
2. こ れ ら の変更を含めて PetaLinux を ビル ド し ます。
$ petalinux-build
次の手順に従っ て、 残 り のパーテ ィ シ ョ ン を含む usb_boot.bin を作成 し ます。
注記:新 し く 生成 さ れた U-Boot を C:\edt\usb-edt\ に コ ピー し ます。u-boot.elf は 「 こ のチ ュ ー ト リ アルのデ ザ イ ン フ ァ イ ル」 に も 含まれてい ます。
1. SDK で [Xilinx] → [Create Boot Image] を ク リ ッ ク し ます。
2. FSBL お よ び残 り のパーテ ィ シ ョ ン を選択 し 、 次の図に示す よ う に設定 し ます。 こ れには、SD ブー ト シーケ ン ス か ら BIF フ ァ イ ルを イ ン ポー ト す る こ と も で き ます。
注記:ATF のパーテ ィ シ ョ ン では [Exception Level] を [EL3] に設定 し て [Enable Trust Zone] を オ ン に し 、U-Boot の パーテ ィ シ ョ ン では [Exception Level] を [EL2] に設定 し ます。 こ れ ら の設定は、 その他のパーテ ィ シ ョ ン では無視 で き ま す。
3. PMUFW パーテ ィ シ ョ ンは、 イ メ ージ (usb_boot.bin) が ロ ー ド さ れ る 前に bootROM に よ っ て ロ ー ド さ れ る た め、 こ の イ メ ージには必要あ り ません。
4. [Create Image] を ク リ ッ ク し て usb_boot.bin を生成 し ます。
注記:BOOT.bin お よ び usb_boot.bin のほかに、image.ub と い っ た Linux イ メ ージが Linux をブー ト す る ま で必 要です。 こ の image.ub は、DFU ユーテ ィ リ テ ィ に よ っ て個別に ロ ー ド さ れます。
USB ブー ト を使用 し たブー ト
こ のセ ク シ ョ ンでは、DFU ユーテ ィ リ テ ィ を使用 し て ZCU102 タ ーゲ ッ ト にブー ト イ メ ージ を ロ ー ド し ます。 開始 す る 前に、 次の よ う にボー ド 接続を設定 し ます。
1. SW6 を次の図に示す よ う に 1 を オン、2 をオ フ、3 をオ フ、4 を オ フ に し て、ZCU102 を USB ブー ト モー ド に設 定 し ます。
X-Ref Target - Figure 5-30
図 5-30:残 り のパーテ ィ シ ョ ンのブー ト イ メ ージの作成
X-Ref Target - Figure 5-31
図 5-31: USB ブー ト モー ド の SW6 設定
2. USB 3.0 ケーブルの一端を J96 USB 3 ULPI コ ネ ク タ に接続 し 、 も う 一端を ホ ス ト マシ ンの USB ポー ト に接続 し ます。
3. USB Micro ケーブルでボー ド (J83) と ホ ス ト マシ ン間の USB-UART ポー ト を接続 し ます。
4. 使用 し てい る ホ ス ト マシ ンに応 じ て Tera Term ま たは Minicom を使用 し 、 タ ー ミ ナル セ ッ シ ョ ン を開始 し ます。
シ ス テ ムの COM ポー ト と ボーレー ト を図5-31 に示す よ う に設定 し ます。
5. ボー ド に電源を投入 し ます。
次のセ ク シ ョ ンの手順では、DFU ユーテ ィ リ テ ィ を使用 し て USB を介 し てブー ト イ メ ージ を ロ ー ド し ます。DFU ユーテ ィ リ テ ィ は、SDK\2018.3\tps\lnx64\dfu-util-0.9 にあ り ます。
ま たは、 使用す る Linux デ ィ ス ト リ ビ ュ ーシ ョ ン でサポー ト さ れてい る パ ッ ケージ マネージ ャ ーを利用 し て DFU ユーテ ィ リ テ ィ を Linux に イ ン ス ト ールす る こ と も 可能です。
Linux ホス ト マ シ ンのブー ト コ マ ン ド
1. DFU が USB タ ーゲ ッ ト を検出可能か ど う か をチ ェ ッ ク し ます。
$ sudo dfu-util -l
USB デバ イ スは、VendorId : ProductId (03fd:0050) でエニ ュ メ レー ト す る 必要があ り ます。 次の よ う な メ ッ セージ が表示 さ れ る はずです。
Found DFU: [03fd:0050] ver=0100, devnum=30, cfg=1, intf=0, alt=0, name="Xilinx DFU Downloader", serial="2A49876D9CC1AA4"
注記:「Found DFU」 メ ッ セージが表示 さ れない場合は、 接続を確認 し て再試行 し て く だ さ い。
2. 「USB ブー ト 用ブー ト イ メ ージの作成」 で作成 し た BOOT.bin を ダ ウ ン ロ ー ド し ます。
$ sudo dfu-util -d 03fd:0050 -D <USB_Boot_Image_Path>/Boot.bin FSBL が問題な く ロ ー ド さ れてい る こ と を シ リ アルタ ー ミ ナルで確認 し ます。
3. usb_boot.bin を ダ ウ ン ロ ー ド し ます。 その前に、UART-1 シ リ アルコ ン ソ ール用に別の タ ー ミ ナルセ ッ シ ョ ン を開始 し ます。
$ sudo dfu-util -d 03fd:0050 -D <USB_Boot_Image_Path>/usb_boot.bin UART 0 タ ー ミ ナルをチ ェ ッ ク し 、U-Boot が ロ ー ド さ れ る ま で待機 し ます。
4. U-Boot のプ ロ ンプ ト 画面で 「Enter」 と 入力 し て自動ブー ト を終了 し ます。R5 アプ リ ケーシ ョ ン も 問題な く ロ ー ド さ れてい る こ と を UART1 で確認 し ます。
5. U-Boot コ ン ソ ールで DFU_RAM を開始 し て Linux イ メ ージのダ ウ ン ロ ー ド を有効に し ます。
U-boot> run dfu_ram
6. ホ ス ト マシ ン タ ー ミ ナルか ら 次の コ マ ン ド を実行 し て Linux イ メ ージの Image.ub を ダ ウ ン ロ ー ド し ます。
$ sudo dfu-util -d 03fd:0300 -D <PetaLinux_project>/images/linux/image.ub -a 0 7. U-Boot コ ン ソ ールで Ctrl + C キーを押 し て dfu_ram を停止 し ます。
8. U-Boot コ ン ソ ールで bootm コ マ ン ド を実行 し ます。
U-boot> bootm
9. Linux が タ ーゲ ッ ト に問題な く ロ ー ド さ れてい る こ と を確認 し ます。
注記:こ の例では、image.ub を U-Boot コ ン フ ィ ギ ュ レーシ ョ ンの #define DFU_ALT_INFO_RAM の設定に基づいて DDR ロ ケーシ ョ ンに コ ピー し ます。 同 じ も のを変更 し て使用 し 、 ほかの イ メ ージ フ ァ イ ルを DDR ロ ケーシ ョ ンに コ ピーで き ます。 必要な場合は、 こ れ ら の イ メ ージ を 「JTAG を使用 し た QSPI ブー ト モー ド のブー ト シーケ ン ス」
に リ ス ト さ れてい る U-Boot コ マ ン ド を使用 し て QSPI に コ ピーで き ます。
Windows ホス ト マ シ ンのブー ト コ マ ン ド
1. SDK で、[Xilinx] → [Launch Shell] を ク リ ッ ク し ます。
2. シ ェ ルが起動 し た ら 、DFU が USB タ ーゲ ッ ト を検出可能であ る こ と を確認 し ます。
> dfu-util.exe -l 注記:dfu-util.exe は
<SDK_Installation_path>\SDK\2018.3\tps\Win64\dfu-util-0.9\dfu-util.exe にあ り ます。
3. USB デバ イ ス を VendorId : ProductId (03fd:0050) でエニ ュ メ レー ト し ます。
注記:「Found DFU」 で始ま る メ ッ セージが表示 さ れない場合、zadig ツールを ダ ウ ン ロ ー ド し て イ ン ス ト ール し ます。[Options] を ク リ ッ ク し て [List all devices] を ク リ ッ ク し ます。[Xilinx DFU downloader] を ク リ ッ ク し 、 [Install Driver] を ク リ ッ ク し ます。
4. 「USB ブー ト 用ブー ト イ メ ージの作成」 で作成 し た BOOT.bin を ダ ウ ン ロ ー ド し ます。
$ dfu-util.exe -d 03fd:0050 -D BOOT.bin
5. FSBL が問題な く ロ ー ド さ れてい る こ と を シ リ アルタ ー ミ ナル (UART 0) で確認 し ます。
6. usb_boot.bin を ダ ウ ン ロ ー ド し ます。 その前に、UART-1 シ リ アルコ ン ソ ール用に別の タ ー ミ ナルセ ッ シ ョ ン を開始 し ます。
$ dfu-util.exe -d 03fd:0050 -D usb_boot.bin
7. U-Boot のプ ロ ンプ ト に 「Enter」 と 入力 し て自動ブー ト を終了 し ます。UART1 コ ン ソ ールで R5 アプ リ ケーシ ョ ン も 問題な く ロ ー ド さ れてい る こ と を確認 し ます。
注記:こ こ で、zadig ツールを使用 し てデバ イ ス ID 03fd:0300 の 「Usb download gadget」 用に ド ラ イ バーを イ ン ス ト ー ル し ます。 こ の ド ラ イ バーがない場合、 タ ーゲ ッ ト で U-Boot を起動 し た後に zadig ツールに 「Xilinx DFU
Downloader」 が表示 さ れません。
8. U-Boot コ ン ソ ールで DFU_RAM を開始 し て Linux イ メ ージのダ ウ ン ロ ー ド を有効に し ます。
U-boot> run dfu_ram
9. ホ ス ト マシ ン タ ー ミ ナルか ら 次の コ マ ン ド を実行 し て Linux イ メ ージの image.ub を ダ ウ ン ロ ー ド し ます。
$ dfu-util.exe -d 03fd:0300 -D image.ub -a 0 10. U-Boot コ ン ソ ールで bootm コ マ ン ド を実行 し ます。
U-boot> bootm
11. Linux が タ ーゲ ッ ト に問題な く ロ ー ド さ れてい る こ と を確認 し ます。