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 イメージを作成できます。