U-Boot はセカ ン ダ リ ブー ト ロ ーダー と し て機能 し ます。FSBL のハン ド オ フ後、U-Boot は ARM A53 の APU に Linux を ロ ー ド し ます。FSBL の後、U-Boot はボー ド 構成に基づいてプ ロ セ ッ シ ン グ シ ス テ ムの残 り のペ リ フ ェ ラ ルの設 定を実行 し ます。U-Boot は、eMMC、SATA、TFTP、SD、QSPI な ど の さ ま ざ ま な メ モ リ ソ ース か ら イ メ ージ を取得 で き ます。 こ の例では、U-Boot と その他すべての イ メ ージが SD カー ド か ら ロ ー ド さ れます。 し たがっ て、 こ こ で は、 ボー ド は SD ブー ト モー ド に設定 さ れます。
U-Boot は、PetaLinux ツール フ ロ ーを使用 し て設定お よ び構築で き ます。 こ の例では、第3章で作成 さ れた、 ま たは
こ の文書で共有 さ れてい る デザ イ ン フ ァ イ ルか ら 作成 さ れた U-Boot イ メ ージ を使用で き ます。 こ のチ ュ ー ト リ アル のデザ イ ン フ ァ イ ルのダ ウ ン ロ ー ド については、141ページの 「 こ のチ ュ ー ト リ アルのデザ イ ンフ ァ イ ル」 を参照 し て く だ さ い。
ARM ト ラ ス テ ッ ド フ ァ ームウ ェ ア
ARM ト ラ ス テ ッ ド フ ァ ーム ウ ェ ア (ATF) は、APU の EL3 (例外レベル 3) で実行 さ れ る 透過的なベア メ タ ル アプ リ ケーシ ョ ンレ イ ヤーです。ATF には、 セキ ュ ア ワール ド と 非セキ ュ アワ ール ド を切 り 替え る ためのセキ ュ アモニ タ ー レ イ ヤーが含まれます。 セキ ュ ア モニ タ ーの呼び出 し と TBBR (Trusted Board Boot Requirements) の実装に よ り 、 Zynq UltraScale+ の APU に Linux を ロ ー ド す る には ATF レ イ ヤーが欠かせません。
FSBL は APU で実行 さ れ る ATF を ロ ー ド し ます。ATF は EL3 で動作 し 続けてサービ ス要求を待ち ます。 さ ら に、
FSBL は APU で実行 さ れ る U-Boot を DDR に ロ ー ド し ます。U-Boot は SMP モー ド で Linux OS を APU に ロ ー ド し ま す。
ATF (bl31.elf) はデフ ォ ル ト で PetaLinux に含まれてお り 、PetaLinux プ ロ ジ ェ ク ト の image デ ィ レ ク ト リ にあ り ま す。
ATF の詳細は、 『Zynq UltraScale+ MPSoC: ソ フ ト ウ ェ ア開発者向けガ イ ド 』 (UG1137) [参照6] の 「セキ ュ リ テ ィ 」 の 章にあ る 「ARM ト ラ ス テ ッ ド フ ァ ーム ウ ェ ア」 を参照 し て く だ さ い。
APU の Linux と RPU のベア メ タ ル
シ ス テ ム ソ フ ト ウ ェ アが設定 さ れた ら 、PetaLinux ツール フ ロ ーを使用 し て Linux イ メ ージ を作成 し ます。PetaLinux イ メ ージは第3章で既に作成 さ れてい ます。 こ の例では、PetaLinux は SD ブー ト 用の イ メ ージ を構築す る よ う に設 定 さ れてい ます。 こ れは PetaLinux のデフ ォ ル ト のブー ト 設定です。
イ メ ージは $<PetaLinux_Project>/images/linux デ ィ レ ク ト リ にあ り ます。
APU に Linux を ロ ー ド す る ために、 次の イ メ ージが PetaLinux か ら 使用 さ れます。
• ATF - bl31.elf
• U-Boot - u-boot.elf
• Linux イ メ ージ - Image.ub、 次を含む
° カーネル イ メ ージ
° デバ イ ス ツ リ ー System.dtb
° フ ァ イ ルシ ス テ ム - RootFS
APU の Linux に加えて、 こ の例では、 ベア メ タ ル アプ リ ケーシ ョ ンが ロ ッ ク ス テ ッ プ モー ド で RPU R5 に ロ ー ド さ れます。
こ の例では、39ページの 「ARM Cortex R5 ベース の RPU 用ベア メ タ ル アプ リ ケーシ ョ ン を作成す る 」 で作成 し た testapp_r5 アプ リ ケーシ ョ ン を参考に し て く だ さ い。
ま た、 こ のチ ュ ー ト リ アルに付属す る デザ イ ン フ ァ イ ルに testapp_r5.elf 実行フ ァ イ ルがあ り ます。 こ の チ ュ ー ト リ アルのデザ イ ンフ ァ イ ルのダ ウ ン ロ ー ド については、141ページの 「 こ のチ ュ ー ト リ アルのデザ イ ン フ ァ イ ル」 を参照 し て く だ さ い。
SD ブー ト のブー ト シーケ ン ス
各 イ メ ージの準備が完了 し たので、 ブー ト イ メ ージ を作成 し て Zynq UltraScale+ に こ れ ら の コ ン ポーネ ン ト をすべて ロ ー ド し ます。 こ れは、SDK の Create Boot Image ウ ィ ザー ド を使用 し て、 次の手順に従っ て実行で き ます。
1. SDK で [Xilinx Tools] → [Create Boot Image] を ク リ ッ ク し ます。
2. こ の章の前のセ ク シ ョ ンで説明 し たすべてのパーテ ィ シ ョ ン を選択 し 、 次の図に示す よ う に設定 し ます。
X-Ref Target - Figure 5-1
図 5-1: SD ブー ト モー ド の Create Boot Image ウ ィ ザー ド
FSBL パーテ ィ シ ョ ン を追加 し ます。
1. Create Boot Image ウ ィ ザー ド で、[Add] を ク リ ッ ク し て [Add partition] ダ イ ア ロ グボ ッ ク ス を開 き ます。
2. [Add partition] ダ イ ア ロ グボ ッ ク ス で、[Browse] を ク リ ッ ク し て FSBL 実行フ ァ イ ルを選択 し ます。
3. FSBL の場合、[Partition type] に [bootloader] が選択 さ れ、 ツールに よ っ て [Destination CPU] が正 し く 選択 さ れてい る こ と を確認 し ます。 ツールは、FSBL 実行フ ァ イ ルに基づいて こ の よ う に選択す る よ う 設定 さ れてい ま す。
注記:FSBL はデフ ォ ル ト で EL3 に設定 さ れてい る ため、[Exception Level] の ド ロ ッ プダ ウ ン リ ス ト は無視 し て く だ さ い。 ま た、 こ の例では [Enable Trust Zone] をオ フ の ま ま に し ておいて く だ さ い。
4. [OK] を ク リ ッ ク し て FSBL を選択 し 、Create Boot Image ウ ィ ザー ド に戻 り ます。
X-Ref Target - Figure 5-2
図 5-2: [Add new boot image partition]
PMU お よ び ATF フ ァ ーム ウ ェ アパーテ ィ シ ョ ン を追加 し ます。
1. [Add] を ク リ ッ ク し て、 次の図に示す [Add partition] ダ イ ア ロ グボ ッ ク ス を開 き ます。
2. PMU フ ァ ーム ウ ェ アパーテ ィ シ ョ ン を追加 し ます。
a. [Browse] を ク リ ッ ク し て、PMU フ ァ ーム ウ ェ ア実行フ ァ イ ルを選択 し ます。
b. こ のパーテ ィ シ ョ ンの場合、[Partision type] で [pmu] を選択 し ます。
注記:pmu のパーテ ィ シ ョ ン タ イ プは、 実行フ ァ イ ルが PMU を タ ーゲ ッ ト と し てい る こ と を示 し てい ます。
し たがっ て、 こ の設定では、[Destination Device] と [Destination CPU] は淡色表示 さ れます。
3. [Exception Level] ド ロ ッ プダ ウ ン リ ス ト は無視 し 、[Enable Trust Zone] はオ フ の ま ま に し ておいて く だ さ い。
4. [OK] を ク リ ッ ク し ます。
5. [Add] を ク リ ッ ク し て、[Add partition] ダ イ ア ロ グ ボ ッ ク ス を開 き ます。
6. ATF フ ァ ーム ウ ェ ア bl31.elf パーテ ィ シ ョ ン を追加 し ます。
注記:ATF フ ァ ーム ウ ェ ア (bl31.elf) は <PetaLinux Project>/image/linux/ にあ り ます。 ま たは、「 こ のチ ュ ー ト リ アルのデザ イ ン フ ァ イ ル」 の bl31.elf を使用す る こ と も で き ます。
a. こ のパーテ ィ シ ョ ンの場合、[Partision type] で [datafile] を選択 し ます。
b. [Destination Device] を [PS] に設定 し ます。
c. [Destination CPU] を [ARM A53 0] に設定 し ます。
d. [Exception Level] で [EL3] を選択 し 、[Enable Trust Zone] をオンに し ます。
X-Ref Target - Figure 5-3
図 5-3: PMUFW パーテ ィ シ ョ ンの追加
7. [OK] を ク リ ッ ク し ます。
R5 実行フ ァ イ ルを追加 し 、 こ れを ロ ッ ク ス テ ッ プ モー ド で有効に し ます。
1. [Add] を ク リ ッ ク し て R5 ベア メ タ ル実行フ ァ イ ルを追加 し ます。
2. [Destination Device] を [PS] に設定 し ます。
X-Ref Target - Figure 5-4
図 5-4: ATF パーテ ィ シ ョ ンの追加
X-Ref Target - Figure 5-5
図 5-5: RPU イ メ ージパーテ ィ シ ョ ンの追加
3. [Destination CPU] を [R5 Lockstep] に設定 し ます。
こ れに よ り 、RPU R5 コ アが ロ ッ ク ス テ ッ プモー ド で実行 さ れ る よ う に設定 さ れます。
4. [Exception Level] ド ロ ッ プダ ウ ン リ ス ト は無視 し 、[Enable Trust Zone] はオ フ の ま ま に し ておいて く だ さ い。
5. [OK] を ク リ ッ ク し ます。
u-boot.elf パーテ ィ シ ョ ン を追加 し ます。sd_boot モー ド の u-boot.elf は、
<PetaLinux_project>/images/linux/sd_boot にあ り ます。
1. [Add] を ク リ ッ ク し て u-boot.elf パーテ ィ シ ョ ン を追加 し ます。
2. U-Boot の場合は、[Destination Device] で [PS] を選択 し ます。
3. [Destination CPU] で [A53 0] を選択 し ます。
4. [Exception Level] で [EL2] を選択 し ます。
5. [OK] を ク リ ッ ク し て、Create Boot Image ウ ィ ザー ド に戻 り ます。
6. [Create Image] を ク リ ッ ク す る と 、 ウ ィ ザー ド が閉 じ 、 ブー ト イ メ ージが作成 さ れます。
ま た、BIF 属性 と Bootgen コ マ ン ド を使用 し て BOOT.bin イ メ ージ を作成す る こ と も で き ます。
こ の コ ン フ ィ ギ ュ レーシ ョ ンでは、BIF フ ァ イ ルには次の属性が含まれます。
//arch = zynqmp; split = false; format = BIN the_ROM_image:
{
[fsbl_config]a53_x64
[bootloader]C:\edt\edt_zcu102\edt_zcu102.sdk\fsbl_a53\Debug\fsbl_a53.elf
X-Ref Target - Figure 5-6
図 5-6: U-Boot パーテ ィ シ ョ ンの追加
[pmufw_image]C:\edt\edt_zcu102\edt_zcu102.sdk\pmu_fw\Debug\pmu_fw.elf [destination_cpu = a53-0, exception_level=el-3,
trustzone]C:\edt\design_files\sd_boot\bl31.elf [destination_cpu =
r5-lockstep]C:\edt\edt_zcu102\edt_zcu102.sdk\testapp_r5\Debug\testapp_r5.elf [destination_cpu = a53-0,
exception_level=el-2]C:\edt\design_files\sd_boot\u-boot.elf }
SDK は次の Bootgen コ マ ン ド を呼び出 し て、 こ の コ ン フ ィ ギ ュ レーシ ョ ンの BOOT.bin イ メ ージ を生成 し ます。
bootgen -image sd_boot.bif -arch zynqmp -o C:\edt\BOOT.bin
ZCU102 ボー ド で イ メ ージ を実行する
1. SD カー ド に BOOT.bin と image.ub の イ メ ージ を コ ピー し 、ボー ド の SD カー ド ス ロ ッ ト にその SD カー ド を挿入 し ます。
2. BOOT.bin フ ァ イ ル と image.ub フ ァ イ ルを SD カー ド に コ ピー し ます。
3. SD カー ド を ZCU102 ボー ド の J100 コ ネ ク タ に取 り 付け ます。
4. Micro USB ケーブルの一端を ZCU102 ボー ド の Micro USB ポー ト J83 に接続 し 、も う 一端を ホ ス ト マシ ンの空 き の USB ポー ト に接続 し ます。 こ れは USB UART 接続用です。
5. ス イ ッ チ SW6 を次の図に示す よ う に設定 し て、 ボー ド を SD ブー ト モー ド に設定 し ます。
6. 12V 電源を ZCU102 の 6 ピ ン Molex コ ネ ク タ に接続 し ます。
X-Ref Target - Figure 5-7
図 5-7: SD ブー ト モー ド の SW6 ス イ ッ チ設定
7. 使用 し てい る ホ ス ト マシ ンに応 じ て Tera Term ま たは Minicom を使用 し 、 タ ー ミ ナルセ ッ シ ョ ン を開始 し ます。
シ ス テ ムの COM ポー ト と ボー レー ト を次の図に示す よ う に設定 し ます。
8. ポー ト 設定では、 デバ イ ス マネージ ャ ーで COM ポー ト を検証 し ます。
ZCU102 ボー ド では 4 つの USB UART イ ン タ ーフ ェ イ ス が使用 さ れてい ます。
9. 最 も 小 さ い番号の イ ン タ ーフ ェ イ ス に関連付け ら れた COM ポー ト を選択 し ます。 こ の場合の UART-0 には、
COM ポー ト に対 し て Interface-0 を選択 し ます。
10. 同様に、UART-1 の場合は、COM ポー ト に対 し て Interface-1 を選択 し ます。
R5 BSP は UART-1 を使用す る よ う に設定 さ れてい る ため、R5 アプ リ ケーシ ョ ン メ ッ セージは UART-1 タ ー ミ ナ ルの COM ポー ト に表示 さ れます。
11. SW1 を使用 し て ZCU102 ボー ド の電源を入れ、Linux がボー ド に ロ ー ド さ れ る ま で待ち ます。
こ こ で、UART-0 用の タ ー ミ ナル画面に初期ブー ト シーケ ン ス メ ッ セージが表示 さ れます。
UART-1 用に設定 さ れた タ ー ミ ナル画面で も メ ッ セージが表示 さ れます。 こ れは RPU で実行 さ れ る 、UART-1 イ ン タ ーフ ェ イ ス を使用す る よ う に設定 さ れてい る R5 ベア メ タ ルアプ リ ケーシ ョ ンか ら の メ ッ セージです。 こ の アプ リ ケーシ ョ ンは、FSBL に よ っ て RPU に ロ ー ド さ れます。
ベア メ タ ル アプ リ ケーシ ョ ンは、UART 割 り 込みサンプルを含む よ う に変更 さ れてい ます。 こ のアプ リ ケー シ ョ ンは、UART-1 タ ー ミ ナルのキーボー ド か ら ユーザーが入力す る ま で、WFI (Waiting For Interrupt) 状態で待 機 し ます。
一方、 ブー ト シーケ ン ス は APU で継続 さ れ、 ロ ー ド さ れた イ メ ージは UART-0 タ ー ミ ナルに表示 さ れ る メ ッ セージ か ら わか り ます。 次の図に、 メ ッ セージ を強調表示 し てい ます。
X-Ref Target - Figure 5-8
図 5-8: COM ポー ト のセ ッ ト ア ッ プ
X-Ref Target - Figure 5-9
図 5-9: UART-1 に表示 さ れる R5-0 で実行する Hello World
X-Ref Target - Figure 5-10
図 5-10: Zynq UltraScale+ ブー ト シーケ ン ス時の APU から の メ ッ セージ
U-Boot は、SMP モー ド で Linux カーネル と その他の イ メ ージ を ARM® Cortex® A53 の APU に ロ ー ド し ます。 タ ー ミ ナル メ ッ セージは、U-Boot がカーネル イ メ ージ を ロ ー ド し て カーネルが起動 し た こ と を示 し 、 タ ーゲ ッ ト Linux OS でユーザーイ ン タ ーフ ェ イ ス プ ロ ンプ ト が表示 さ れます。 カーネルの ロ ー ド お よ びス タ ー ト シーケ ン ス は、 次の図 の よ う にな り ます。
X-Ref Target - Figure 5-11
図 5-11:カ ーネルのロー ド およびス タ ー ト シーケ ン ス