[NXP プロセッサー 初心者ガイド 0] | [NXP プロセッサー 初心者ガイド 2] | ||
NXP プロセッサー 初心者ガイドまとめ | NXP プロセッサー実機検証ガイド まとめ |
もくじ
- 1. はじめに
- 2. 全体フロー
- 3. ホストマシンのセットアップ
- 4. Yocto Project のセットアップ
- 5. イメージのビルド
- 6. ビルドされたイメージの書き込み
- 7. オプション:Yocto SDK (Software Development Kit) のビルド
- 8. まとめ
1. はじめに
注記:
NXP の i.MX 用 Git リポジトリー管理サイトは GitHub へ移行しています。以前の管理サイト Code Aurora は利用できません。この記事は LF6.1.22_2.0.0 時点での情報をもとに記載しています。
この記事では、NXP 社の上記ドキュメントをもとに Yocto Project ビルド環境を使用して、i.MX ボードの Linux イメージをビルドする方法について説明します。
NXP 社の i.MX 系(MPU)の OS として Linux がありますが、その Linux イメージ作成のために Yocto Project 環境が提供されています。Yocto Project 環境の立ち上げについては、NXP 社から下記のドキュメントが公開されています。
下記ユーザーガイドとコミュニティー情報も併せてご覧ください。
参考:i.MX Yocto Project User's Guide (IMXLXYOCTOUG)
参考:i.MX 8M Plus Yocto Linux ビルド方法 (nxp.com)
注記:
Yocto Project の詳細については、Yocto Project のページ を参照してください。Yocto Project のホームページには、システムの使用方法を詳しく説明したドキュメントがいくつかあります。i.MX リリースレイヤーなしで基本的な Yocto Project を使用するには、Yocto Project Quick Build の手順に従ってください。
2. 全体フロー
Yocto Project 環境構築からイメージの作成までの全体フローとしては、下図のようになっています。
【図 1】 全体フロー図
3. ホストマシンのセットアップ
この章では、Yocto Project 環境を構築するためのホストマシンのセットアップを行います。
Linux ホストマシンで Yocto Project が期待する動作を実現するには、以下に説明するパッケージとユーティリティをインストールする必要があります。重要な考慮点は、ホストマシンに必要なハードディスクの空き容量です。
例えば、Ubuntu が動作しているホストマシンの条件としては、以下のようになります:
- ハードディスク : 50GB(最小構成)、250GB(推奨)
- OS : Ubuntu 20.04 以降
ホスト要件の詳細ならびに Ubuntu 以外のディストリビューションについては、下記の Yocto Project Reference Manual をご参照ください。
参考:
Yocto Project Reference Manual ⇒ 1 System Requirements ⇒ 1.3 Supported Linux Distributions
注記:
社内ネットワークなどでプロキシがある場合、次のようなプロキシの設定が必要です:
-
Linux ホストマシンで /etc/apt/apt.conf ファイルをテキストエディター(gedit など)で開き、以下のようなプロキシ設定を記述してセーブします。
$ sudo gedit /etc/apt/apt.conf
Acquire::http::proxy "http://proxy.address:proxy.port";
Acquire::https::proxy "https://proxy.address:proxy.port";
Acquire::ftp::proxy "ftp://proxy.address:proxy.port"; - Linux ホストマシンで .bashrc ファイルをテキストエディター(gedit など)で開き、最終行に下記のようなプロキシを追記してセーブします。
$ gedit ~/.bashrc
export http_proxy="http://proxy.address:proxy.port"
export https_proxy="https://proxy.address:proxy.port"
export ftp_proxy="ftp://proxy.address:proxy.port" - Linux ホストマシンで ~/.curlrc ファイルをテキストエディター(gedit など)で開き、最終行に下記のようなプロキシを追記してセーブします。
$ gedit ~/.curlrc
proxy=http://proxy.address:proxy.port
※ 上記のプロキシ設定において、proxy.address はプロキシアドレス、proxy.port はプロキシポート番号を意味します。ユーザーのネットワーク環境に合わせて適切な設定を行ってください。
Linux ホストマシンの端末を一旦終了してから、再度端末を起動します。
3-1. パッケージのインストール
Yocto Project のビルドには、Yocto Project のドキュメントに記載されているいくつかのパッケージがインストールされている必要があります。Yocto Project Quick Build の Build Host Packages に、ホストマシンにインストールする必要があるパッケージの記載がありますのでご確認ください。
-
端末を開き、次のコマンドを入力して、パッケージ情報を更新しておきます:
$ sudo apt update
$ sudo apt upgrade -
Yocto Project の必須ホストパッケージは以下の通りです:
$ sudo apt install gawk wget git diffstat unzip texinfo gcc build-essential \
chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils \
iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev python3-subunit \
mesa-common-dev zstd liblz4-tool file locales
$ sudo locale-gen en_US.UTF-8
3-2. Repo ユーティリティーのセットアップ
Yocto Project では、多くのレシピを含むメタレイヤーなどのファイルを様々なサーバーからダウンロードする必要があります。repo ユーティリティーを使用することで、この煩雑な処理を容易にします。
repo ユーティリティーをインストールするには、以下の手順を実行します:
-
home ディレクトリーに bin ディレクトリーを作成します。
$ mkdir ~/bin
$ sudo apt install curl
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo - .bashrc ファイルに下記の行を追記して、~/bin ディレクトリーを PATH 変数に追加します。Linux ホストマシンで .bashrc ファイルをテキストエディター(gedit など)で開き、
最終行に下記のように PATH 変数に ~/bin ディレクトリーを追記してセーブします。
$ gedit ~/.bashrc
export PATH=~/bin:$PATH
Linux ホストマシンの端末を一旦終了してから、再度端末を起動します。
4. Yocto Project のセットアップ
注記:
社内ネットワークなどでプロキシがある場合、以下のような git config --global コマンドによりプロキシの設定を行っておくことが必要です。ネットワーク環境に合わせて適切な設定を行ってください。
下記設定を行ってもアクセスできないなどの問題がある場合には、ネットワーク管理者にご確認ください。
$ git config --global http.proxy http://proxy.address:proxy.port
$ git config --global https.proxy https://proxy.address:proxy.port
※ 上記のプロキシ設定において、proxy.address はプロキシアドレス、proxy.port はプロキシポート番号を意味します。ユーザーのネットワーク環境に合わせて適切な設定を行ってください。
- git コマンドが使用できるように、以下のコマンドでユーザー名とメールアドレスを設定します。
$ git config --global user.name "Your Name"
※ 上記の "Your Name"、"Your Email" の指定は git リポジトリーへのアクセス時に必要となる情報です。ご自身の名前、メールアドレスに置き換えて指定してください。
$ git config --global user.email "Your Email"
$ git config --list
- 次に、i.MX Yocto Project Community BSP レシピレイヤーをダウンロードします。
この例では imx-yocto-bsp というディレクトリーをプロジェクト用として作成しています。
$ mkdir imx-yocto-bsp
$ cd imx-yocto-bsp
$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1 ← python のバージョンを明示的に python 3 に指定
$ repo init -u https://github.com/nxp-imx/imx-manifest -b imx-linux-mickledore -m imx-6.1.22-2.0.0.xml
$ repo sync
【図 2】 i.MX Yocto Project Community BSP レシピレイヤーのダウンロード実行例
このプロセスが完了すると、ソースコードは imx-yocto-bsp/sources ディレクトリーにチェックアウトされます。定期的に repo sync コマンドを実行することで、Repo の同期を行い最新のコードに更新することができます。
5. イメージのビルド
この章では、イメージのビルドプロセスについて説明します。
5-1. ビルドの設定
i.MX には、i.MX マシンのセットアップを簡素化するスクリプト(imx-setup-release.sh)が用意されています。このスクリプトを使用するには、ビルドするマシンの名前とディストリビューション(グラフィカル・バックエンドを含む)を指定する必要があります。
マシン名は、必要に応じて meta-imx の conf/machine ディレクトリーにある local.conf ファイルの MACHINE 設定を編集して変更することができます。
以下は選択可能な i.MX マシン名です。最新の追加ファイルについては、リリースノートまたはマシン・ディレクトリーのいずれかを確認してください。
【表 1】 選択可能な i.MX マシン名
i.MX 6 | i.MX 7 | i.MX 8 | i.MX 9 |
• imx6qpsabresd • imx6ulevk • imx6ulz-14x14-evk • imx6ull14x14evk • imx6ull9x9evk • imx6dlsabresd • imx6qsabresd • imx6solosabresd • imx6sxsabresd • imx6sllevk |
• imx7dsabresd • imx7ulpevk |
• imx8qmmek • imx8qxpc0mek • imx8mqevk • imx8mm-lpddr4-evk • imx8mm-ddr4-evk • imx8mn-lpddr4-evk • imx8mn-ddr4-evk • imx8mp-lpddr4-evk • imx8mp-ddr4-evk • imx8dxla1-lpddr4-evk • imx8dxlb0-lpddr4-evk • imx8dxlb0-ddr3l-evk • imx8mnddr3levk • imx8ulp-lpddr4-evk • imx8ulp-9x9-lpddr4-evk |
• imx93evk • imx93-11x11-lpddr4x-evk • imx93-9x9-lpddr4-qsb • imx93-14x14-lpddr4x-evk |
【図 3】 README ファイル(./imx-yocto-bsp/README-IMXBSP)より
【図 4】 ./imx-yocto-bsp/sources/meta-freescale/conf/machine 以下の *.conf ファイルより
次にディストリビューションの指定についてですが、グラフィカル・バックエンドである
Frame Buffer、Wayland、および XWayland 別にディストリビューションが用意されているようなイメージになります。
DISTRO ファイルが指定されない場合、XWayland distro がデフォルトとして設定されます。ディストリビューションの指定は、meta-imx/meta-sdk/conf/distro ディレクトリーに格納されているlocal.conf ファイルの DISTRO 設定に保存され、bitbake 実行時に表示されます。
また、各ビルドに使用するフォルダーは、1 つのディストリビューションのみを使用するように構成する必要があります。そのため、ディストリビューションを変更(変数 DISTRO_FEATURES を変更)した場合は、新しいビルドフォルダーが必要になります。
以下が各ディストリビューションを指定する際の distro 名になります:
• fsl-imx-wayland
・ Wayland weston グラフィックス
• fsl-imx-xwayland
・ Wayland グラフィックスと X11
・ EGL を使う X11 アプリケーションはサポートされていません
• fsl-imx-fb
・ Frame Buffer グラフィックス
・ X11 や Wayland はサポートしていません。Frame Buffer は i.MX 8 および i.MX 9 ではサポート
されていません
imx-setup-release.sh スクリプトの構文を以下に示します:
$ DISTRO=<distro name> MACHINE=<machine name> source imx-setup-release.sh -b <build dir>
DISTRO=<distro name> はビルド環境を設定するディストリビューションの指定で、
MACHINE=<machine name> はマシン名の指定になります。
-b <build dir> は、imx-setup-release.sh スクリプト実行時に作成されるビルドディレクトリーの名前を指定します。
このスクリプトが実行されると、EULA(End User License Agreement)に同意するかどうかをユーザーに尋ねてきます。EULA が受諾されると、各ビルドフォルダー内の local.conf に受諾が保存され、そのビルドフォルダーでは EULA 受諾クエリが表示されなくなります。
スクリプトが実行されると、作業ディレクトリーは -b オプションで指定して作成したディレクトリーになり、bblayers.conf と local.conf を含む conf フォルダーが作成されます。
<build dir>/conf/bblayers.conf ファイルには、i.MX Yocto Project リリースで使用されるすべてのメタレイヤ―が含まれます。
以下にコマンド実行例を示します:
$ DISTRO=fsl-imx-xwayland MACHINE=imx8mp-lpddr4-evk source imx-setup-release.sh -b build_xwayland
【図 5】 コマンド実行例
local.conf ファイルには、マシンと distro の仕様が含まれています:
MACHINE ??= 'imx8mp-lpddr4-evk'
DISTRO ?= 'fsl-imx-xwayland'
ACCEPT_FSL_EULA = "1"
MACHINE コンフィグレーションは、必要に応じてこのファイルを編集して変更することができます。ACCEPT_FSL_EULA = "1" は、EULA の条件を受け入れたことを示します。
5-2. i.MX Yocto Project イメージの選択
Yocto Project はいくつかのイメージを提供していますが、ビルドの際にどのイメージかを選択する必要があります。
次の表は、主要イメージの内容とイメージレシピを提供するレイヤーの一覧です。
【表 2】 i.MX Yocto Project の主要イメージ
イメージ | ターゲット | 提供するレイヤー |
core-image-minimal | デバイスをブートさせるだけの小さなイメージ | Poky |
core-image-base | ターゲットデバイスのハードウェアを完全にサポートするコンソール専用イメージ | Poky |
core-image-sato | モバイルデバイスのためのモバイル環境とビジュアルスタイルである Sato を使用したイメージ。Sato のテーマをサポートし、Pimlico のアプリケーションを使用しています。ターミナル、エディター、ファイルマネージャーを含みます。 | Poky |
imx-image-core | Wayland バックエンドに使用する i.MX テスト・アプリケーションを含む i.MX イメージ。このイメージは日々のコアテストで使用されます。 | meta-imx/meta-sdk |
fsl-image-machine-test | コンソール環境を備えた FSL コミュニティー i.MX コアイメージ。GUI インターフェースはありません。 | meta-freescale-distro |
imx-image-multimedia | Qt コンテンツを含まない GUI を持つ i.MX イメージをビルドします | meta-imx/meta-sdk |
imx-image-full | Machine learning 機能を備えたオープンソースの Qt 6 イメージをビルドします。これらのイメージは、ハードウェア・グラフィックス搭載の i.MX SoC でのみサポートされます。 i.MX 6UltraLite、i.MX 6UltraLiteLite、i.MX 6SLL、i.MX 7Dual、 i.MX 8MNanoLite、i.MX 8DXL ではサポートされていません。 |
meta-imx/meta-sdk |
5-3. イメージのビルド
Yocto Project のビルドは、bitbake コマンドを使用します。例えば、bitbake <component> は指定したコンポーネントをビルドします。
初めて bitbake 実行する際は、ファイルのダウンロードなどが行われるため、マシンスペックなどにもよりますがかなりの時間を要します(弊社の環境では、5~6 時間程度かかりました)。
以下のコマンドは、イメージをビルドする方法の例です:
$ bitbake imx-image-multimedia
【図 6】 イメージをビルドする実行例
"all succeeded" と表示が出ればビルド成功となります。もしビルドに失敗した場合はエラーメッセージを確認してください。
参考:[NXP プロセッサー初心者ガイド 7] i.MX Yocto Project 開発環境 に関する TIPS
参考:[NXP プロセッサー初心者ガイド 8] i.MX Yocto Project Bitbake に関する TIPS
6. ビルドされたイメージの書き込み
ビルドされた完全なファイルシステム・イメージは <build directory>/tmp/deploy/images ディレクトリーの下に展開されます。
SD カードイメージは *.wic という拡張子のファイルです。これには U-Boot / カーネル / rootfs など Linux をブートするために必要なファイルが全て含まれています。
Yocto Project のビルドが完了すると、*.wic.zst というファイルが生成されますが、これは *.wic が圧縮されたファイルです。
<build directory>/tmp/deploy/images/imx8mp-lpddr4-evk/
【図 7】 imx8mp-lpddr4-evk ディレクトリー内容の例
この *.wic.zst ファイルを解凍して、Linux ホストであれば dd コマンドで、Windows ホストであれば "Win32 Disk Imager" などで、SD カードへイメージデータを書き込むことができます
SD/MMC カードのセットアップ方法については、i.MX Linux User's Guide (IMXLUG)"Preparing an SD/MMC Card to Boot" のセクションを参照してください。
イメージデータを書き込んだ SD カードを NXP 社の対象とする i.MX ボードの SD カードスロットに挿入し電源を投入すると、下図の例のような起動メッセージが出力されて Linux が起動します。
ユーザー名に "root" を使用してパスワード無しでログインします。
【図 8】 imx8mp-lpddr4-evk Linux の起動例
7. オプション:Yocto SDK (Software Development Kit) のビルド
Yocto SDK をビルドしておくことで、コンパイラー・ツールチェーンなど、Yocto Project 環境で bitbake を行った際に使用されるツール類を Yocto Project 環境の外で利用することが可能になります。
ポイント:
ビルドした Yocto SDK は別の開発マシンにインストールして利用出来るため、Yocto Project 環境をセットアップせずにブートローダーや Linux カーネル、アプリケーションなどのビルドを個別に行いたい場合に便利です。
Yocto SDK のビルドは以下の手順で行います。
-
イメージのビルドと同じ bitbake コマンドに「-c populate_sdk」を追加して実行します。
$ bitbake core-image-minimal -c populate_sdk
イメージのビルドと同様に、"all succeeded" と表示が出ればビルド成功です。
-
ビルド成功したら Yocto SDK が生成されていることを確認します。以下のように、bitbake を実行したビルド・ディレクトリーから、tmp/deploy/sdk の下に .sh スクリプトファイルが生成されていれば成功です。
$ cd tmp/deploy/sdk
$ ls -l
合計 338928
-rw-r--r-- 2 altsoc altsoc 12784 9月 12 19:44 fsl-imx-xwayland-glibc-x86_64-core-image-minimal-armv8a-imx8mp-lpddr4-evk-toolchain-6.1-mickledore.host.manifest
-rwxr-xr-x 2 altsoc altsoc 345973424 9月 12 19:54 fsl-imx-xwayland-glibc-x86_64-core-image-minimal-armv8a-imx8mp-lpddr4-evk-toolchain-6.1-mickledore.sh
-rw-r--r-- 2 altsoc altsoc 13302 9月 12 19:43 fsl-imx-xwayland-glibc-x86_64-core-image-minimal-armv8a-imx8mp-lpddr4-evk-toolchain-6.1-mickledore.target.manifest
-rw-r--r-- 2 altsoc altsoc 1047053 9月 12 19:43 fsl-imx-xwayland-glibc-x86_64-core-image-minimal-armv8a-imx8mp-lpddr4-evk-toolchain-6.1-mickledore.testdata.json - Yocto SDK のインストールは、生成された .sh スクリプトを実行するのみです。以下に、SDK のビルドに続けて同じマシンにインストールした場合の実行例を示します。デフォルトのインストール場所は /opt 以下です。
$ ./fsl-imx-xwayland-glibc-x86_64-core-image-minimal-armv8a-imx8mp-lpddr4-evk-toolchain-6.1-mickledore.sh
NXP i.MX Release Distro SDK installer version 6.1-mickledore
============================================================
Enter target directory for SDK (default: /opt/fsl-imx-xwayland/6.1-mickledore):
You are about to install the SDK to "/opt/fsl-imx-xwayland/6.1-mickledore". Proceed [Y/n]? y
[sudo] password for altsoc:
Extracting SDK........................................................................................................done
Setting it up...done
SDK has been successfully set up and is ready to be used.
Each time you wish to use the SDK in a new shell session, you need to source the environment setup script e.g.
$
ポイント:
別のマシンにインストールする場合は .sh スクリプトを別のマシンへ移した上で、上記と同じように実行してください。.sh スクリプトを格納および実行するディレクトリーは任意の場所で大丈夫です。
注記:
この SDK は、現在のリリースから最新のヘッダー、ツールチェーン、およびツールを取得するためにリリースごとに更新する必要があります。使用する Yocto Project のリリースバージョンを変更した場合は Yocto SDK も更新してください。
8. まとめ
この記事では NXP 社の i.MX Yocto Project User's Guide(IMXLXYOCTOUG)の情報をもとに、Yocto Project ビルド環境を使用して、i.MX ボードのイメージをビルドする方法について説明しました。
i.MX Linux イメージ作成の参考にしていただければ幸いです。
なお、オリジナルの環境を構築する際には、Yocto Project 環境のカスタマイズ方法を理解することが鍵になりますので、Yocto Project 公式ドキュメントの内容を参照してご対応ください。
参考:
Welcome to the Yocto Project Documentation(yoctoproject.org)
[NXP プロセッサー 初心者ガイド 0] | [NXP プロセッサー 初心者ガイド 2] | ||
NXP プロセッサー 初心者ガイドまとめ | NXP プロセッサー実機検証ガイド まとめ |