Main Content

MathWorks Buildroot を使用したカスタム Zynq ボードに対する Xilinx Zynq Linux イメージの作成

この例では、MathWorks Buildroot システムを使用して、Zynq ワークフロー内で Linux オペレーティング システムが搭載された Zynq カスタム ボードを開始するための Zynq Linux イメージを作成する方法を説明します。

はじめに

HDL ワークフロー アドバイザーで、Digilent Zybo Z7-10 Zynq 開発ボードの Zynq Linux イメージをカスタム リファレンス設計用に作成します。この例では、Zybo Z7-10 ボードを使用します。その他の Zynq プラットフォーム用 Linux イメージは MathWorks ビルド システムを使用してビルドできます。

要件

  • MathWorks ビルド システム - Buildroot

  • Linux オペレーティング システム

  • HDL Coder のドキュメンテーションにリストされている、サポートされているバージョンの Xilinx Vivado Design Suite

  • Digilent® Zybo Z7-10 Zynq™ 開発ボードとアクセサリ キット

Zynq の構成

Zynq の起動プロセスには、プロセッサ システム (PS)、第 1 ステージ ブートローダー (FSBL) で構成される Zynq ブート イメージの読み込みと実行、プログラマブル ロジック (PL) を構成するビットストリーム、およびユーザー アプリケーションが含まれます。

起動プロセス

ステージ 0

ボードが ON に切り替わるか、Zynq プロセッサが reset になった後、処理システム (PS) の 1 つのプロセッサ (CPU0) から読み取り専用コードである BootROM が実行されます。利用可能なブート モード オプション (QSPI フラッシュ、NAND フラッシュ、SD カードなど) からの Zybo Z7-10 のブート モード ピン設定 (JP5) に基づいて、BootROM がオンチップ メモリ (OCM) にコピーされます。BootROM が実行されます。実行後、BootROM は実行を OCM の FSBL に転送します。

ステージ 1

FSBL は PS コンポーネント (DDR メモリ コントローラー、I/O コンポーネントなど) を構成することによって有効になり、起動デバイスでビットストリーム ファイルを探します。FSBL は完全なイメージが起動デバイスから読み取られるまでアプリケーション バイナリとデータ ファイルをメモリに読み込みます。次に、FSBL は外部の RAM を初期化し、第 2 ステージ ブートローダーまたはスタンドアロンのアプリケーションを読み込みます。

ステージ 2

前のステージで読み込まれたユーザー アプリケーションが U-Boot のように実行されます。これは CPU0 で実行され、OS が起動する環境を初期化して設定します。初期化にはメモリ管理ユニットの構成も含まれます。

ステージ 3

ブートローダーは、次にカーネル イメージを取得し、組み込みの Linux オペレーティング システムを起動します。Linux の場合、OS で 2 番目のプロセッサ コア CPU1 が検出されて有効になり、MMU とデータ キャッシュが構成されてアクティブになり、その他のアクションが実行され、完全なシステムをアプリケーションで使用できるようにします。

MathWorks ビルド システム

MathWorks Buildroot はクロスコンパイルを介して組み込みの Linux システムを生成するために使用するツールです。MathWorks ビルド システムは前処理および後処理スクリプトに Buildroot をラップし、さまざまなプラットフォームのシステム イメージの生成を自動化します。ビルド システムは、ターゲット ボード、プラットフォーム、またはイメージの記述ファイルを入力として取り、ブートローダー、カーネル、ユーザー スペースを含む完全なシステム イメージとして出力するスクリプトに基づいています。このリポジトリは、MathWorks ツールで使用する Altera SoC と Xilinx Zynq プラットフォームの SD カード イメージを作成する buildroot フレームワークをホストします。

MathWorks ビルド システムを使用した Zynq Linux イメージのビルド

1. クロス コンパイラを設定する

以下のコマンドを使用して、Linux マシンに Linaro ARM ツールチェーンをインストールし、クロス コンパイラを設定します。以下のコマンドは Debian® 10 Linux マシンで機能します。

>> sudo apt-get install gcc-arm-linux-gnueabihf

2.Git Hub から MathWorks Buildroot を同期する

最新のリリース タグを使用して、git クローン GitHub - MathWorks Buildroot から buildroot を取得します。

>> git checkout mathworks_zynq_R22.1.0

リリース タグには mathworks_zynq_R2x.y.z のラベルがついています。ここで、"R2x" は MATLAB リリースの年を示し、"y" は 'a' または 'b' リリースを示します。"z" は特定の MATLAB リリース内のイメージに対する更新に使用されます。たとえば、タグ "R22.1.0" は、MATLAB R2022a と解釈されます。ここで、"R22" は R2022 を表し、"1.0" はリリース 'a' に対応します。R2022a リリース内のイメージに何らかの更新がある場合、バージョンは "R22.1.1"、"R22.1.2" などになります。

MathWorks buildroot を同期した後、次のファイルを使用してイメージをビルドします。ファイル フォルダーに移動し、必要なファイルをそこに配置します。次の図は、特定のボード (ZyboZ7) に対して Linux イメージをビルドするために使用するフォルダー階層とその内容を示しています。

/buildroot/board/mathworks/zynq/boards/zyboz7/

Zynq Linux イメージのビルドに必要なファイル

  • エクスポートされたハンドオフ ファイル

  • デバイス ツリー ソース ファイル

  • Zynq Defconfig ファイル

ハンドオフ ファイル

メモリや周辺装置のアドレス マッピングなど、Zynq 処理システム IP に適用される設定は Xilinx Vivado プロジェクトからエクスポートされます。ビットストリーム ファイル、システム ハードウェア プロジェクト ファイル (.hdf) はカスタム リファレンス設計の作成後にエクスポートされます。詳細については、Zynq ワークフロー用のカスタムのボードとリファレンス設計の定義で「Xilinx Vivado を使用したカスタム リファレンス設計の作成とエクスポート」のセクションを参照してください。vivado ブロック設計プロジェクトからハードウェア プラットフォームをエクスポートし、.xsa ファイルを解凍して ps7_init_gpl.c と ps7_init_gpl.h を取得したら、以下の図に示すように、これらのファイルを zyboz7 buildroot ディレクトリの handoff フォルダーに配置します。

デバイス ツリー ソース

デバイス ツリーとはハードウェアを記述するデータ構造です。Linux などのオペレーティング システムによって読み取り可能なので、マシンの詳細をハード コードする必要がありません。デバイス ツリー ソース (DTS) ファイルには、プラットフォームを識別するためのノード、プロパティ、子ノードのリストと、bootargs などの実行時の構成を記述するプレーン テキスト データが含まれています。DTS ファイルはデバイス ツリーのコンパイラを使用してデバイス ツリー ブロブ (DTB) にコンパイルされます。これは起動プロセス時にハードウェアで使用されるバイナリ ファイルです。

次のコードは Zybo Z7-10 デバイス ツリー ソース ファイルのサンプル コードです。

3.Zynq Defconfig

プラットフォームの defconfig には、カーネル ビルドを適切に構成するために必要な Linux kconfig 設定が含まれています。このファイルは Z7-10 イメージのビルドに使用される zynq_zybo_z7_defconfig ファイルです。

###########################################

# Zybo Options

###########################################

BR2_TARGET_UBOOT_BOARD_DEFCONFIG="zynq_zyboz7"

BR2_PACKAGE_XILINX_BOOTLOADER_UBOOT_TARGET_DIR="board/xilinx/zynq/zynq-zyboz7"

ビルド スクリプト

次のビルド スクリプトを使用して、特定のボードに対する linux SD イメージのビルドを開始できます。

>> build.py -c board/mathworks/zynq/boards/zyboz7/catalog.xml

それ以外の場合は、次のコマンドを使用して、手動でビルドするための異なるツールチェーンのパスを指定します。

>> ./build.py -p zynq -b zyboz7 --brconfig BR2_TOOLCHAIN_EXTERNAL_PATH='/opt/ARM_CortexA/LinaroToolchain/6.3.1-2017.02/Linux/aarch32'

ビルド後のファイルのリスト

ビルド後、これらのファイルは出力フォルダー "/buildroot/output/zybo_linux_linaro/images/" に zip ファイルとして置かれます。ファイルを SD カードに解凍し、SD カードを Zybo Z7-10 ボードに挿入します。ボードの接続の詳細については、Zynq ワークフロー用のカスタムのボードとリファレンス設計の定義を参照してください。

概要

この例は、MathWorks Buildroot システムを使用して Linux イメージをビルドするプロセスをステップごとに示しています。その他の Zynq プラットフォーム用 Linux イメージは MathWorks ビルド システムを使用してビルドできます。この例を使用して、必要なファイルを MathWorks buildroot フォルダーに含め、linaro のクロスコンパイラを設定し、カスタム Zynq ボードに対する Xilinx Zynq Linux イメージを作成できます。