NXP i.MX Yocto Linux Project環境の構築

NXP 8MMINLPD4-CPU2

スポンサーリンク

目次

NXP i.MX8M Mini Yocto Linux Project環境の構築

ネットワークオーディオプレーヤーを開発する準備として、Yocto Projectのビルド環境を用いてNXP社のi.MX8M Mini 評価・開発ボードのLinuxイメージをビルドしました。

評価・開発ボード:8MMINILPD4-EVKB

筆者ホストマシン環境:
・CPU:Intel Core i5 13500 (スレッド総数 20)
・RAM:DDR4 32GB
・Storage:SSD 1TB
・OS:Ubuntu 22.04.4 TLS

ホストマシンのセットアップ

LinuxホストマシンにYocto Project環境を構築するためのセットアップを行います。
Linux ホスト マシンで Yocto Project が期待する動作を実現するには、以下に説明するパッケージとユーティリティをインストールする必要があります。ホスト マシンに必要なハード ディスク容量は重要です。たとえば、Ubuntu を実行しているマシンでビルドする場合、必要なハード ディスク容量は最低でも約 50 GB です。
すべてのバックエンドをコンパイルするには、少なくとも 120 GB を用意することをお勧めします。Machine learningコンポーネントをビルドする場合は、少なくとも 250 GB を用意することをお勧めします。
推奨されるUbuntu バージョンは 20.04 以降です。

パッケージのインストール

ターミナルを開き、下記コマンドでパッケージ情報を更新しておきます。

$ 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 python3-subunit zstd liblz4-tool file
 locales libacl1

UTF-8ロケールを設定しておきます。

$ sudo locale-gen en_US.UTF-8

Repoユーティティのセットアップ

Git管理ツールのRepoユーティティをインストールします。

home ディレクトリーに bin ディレクトリーを作成します。

$ mkdir ~/bin
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

.bashrc ファイルに下記の行を追記して 、PATH 変数に~/bin ディレクトリーを追加します。

export PATH=~/bin:$PATH

Yocto Projectのセットアップ

Git 設定の確認

以下のコマンドを使用して Git が適切に設定されていることを確認します。

$ git config --global user.name "Your Name"
$ git config --global user.email "Your Email"
$ git config --list

“Your Name”と”Your Email”はGitレポジトリへのアクセスに必要な情報です。自分の名前とメールアドレスを入れます。

Yocto Project BSPをダウンロード

i.MX Yocto Project Community BSP レシピレイヤーをダウンロードします。

$ mkdir imx-yocto-bsp
$ cd imx-yocto-bsp
$ repo init -u https://github.com/nxp-imx/imx-manifest -b imx-linux-nanbield -m imx-6.6.3-1.0.0.xml
$ repo sync

このプロセスが完了すると、ソース コードはディレクトリ imx-yocto-bsp/sources にチェックアウトされます。
repo sync コマンドを使用して、定期的にリポジトリの同期を実行し最新のコードに更新できます。

ダウンロードの際、SSLのエラーに遭遇したので対処が必要になりました。

イメージのビルド

ビルドの設定

i.MX は、i.MX マシンのセットアップを簡素化するスクリプト imx-setup-release.sh を提供してます。
スクリプトを使用するには、ビルド対象の特定のマシンの名前と、必要なグラフィカル・バックエンドを指定する必要があります。スクリプトは、指定されたマシンとバックエンドのディレクトリと構成ファイルを設定します。

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 スクリプト実行時に作成されるビルドディレクトリーの名前を指定します。

ビルド対象を i.MX 8M Mini 評価キット 8MMINILPD4-EVKとするので、マシン名は imx8mm-lpddr4-evkとします。
グラフィカル・バックエンドはWayland グラフィックスとX11とし、ディストリビューションは fsl-imx-xwaylandとします。
ビルドディレクトリーをbuild-xwaylandとした場合のコマンドは以下のようになります。

$: MACHINE=imx8mm-lpddr4-evk DISTRO=fsl-imx-xwayland source ./imx-setup-release.sh -b build-xwayland

i.MX Yocto Project イメージの選択

Yocto プロジェクトは、さまざまなレイヤーで使用できるイメージをいくつか提供しています。Poky はいくつかのイメージを提供し、meta-freescale と meta-freescale-distro は他のイメージを提供し、追加のイメージ レシピは meta-imx レイヤーで提供されています。次の表は、さまざまな主要なイメージ、その内容、およびイメージ レシピを提供するレイヤーを示しています。

イメージターゲット提供するレイヤー
core-image-minimalデバイスをブートさせるだけの小さなイメージpoky
core-image-baseターゲットデバイスのハードウェアを完全にサポートするコンソール専用イメージpoky
core-image-satoモバイル デバイス用のモバイル環境とビジュアル スタイルである Sato のイメージ。このイメージは Sato テーマをサポートし、Pimlico アプリケーションを使用します。ターミナル、エディター、ファイル マネージャーが含まれています。poky
imx-image-coreWayland バックエンドに使用される i.MX テスト アプリケーションを含む i.MX イメージ。このイメージは、毎日のコア テストで使用されます。meta-imx/meta-sdk
fsl-image-machine-testコンソール環境を備えた FSL コミュニティ i.MX コア イメージ – GUI インターフェイスなしmeta-freescale-distro
imx-image-multimediaQt コンテンツなしで GUI 付きの i.MX イメージを構築します。meta-imx/meta-sdk
imx-image-fullMachine 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

イメージのビルド

Yocto Project ビルドでは、bitbake コマンドを使用します。たとえば、bitbake は、指定されたコンポーネントをビルドします。各コンポーネント ビルドには、フェッチ、構成、コンパイル、パッケージ化、ターゲット ルートファイルシステムへの展開など、複数のタスクがあります。bitbake イメージ ビルドは、イメージに必要なすべてのコンポーネントを収集し、タスクごとに依存関係の順にビルドします。最初のビルドは、コンポーネントをビルドするために必要なツールとともにツールチェーンです。
imx-image-multimediaイメージをビルドする場合のコマンド例を以下に示します。

$ bitbake imx-image-multimedia

“all succeeded” と表示が出ればビルド成功となります。

bitbake実行中は様々なファイルをダウンロードしながらタスクを実行するためとても時間がかかります。筆者の環境ではCPU負荷がほぼ100%の状態で4~5時間かかりました。
また、実行中にいくつかエラーに遭遇したため対処が必要でした。

ビルドしたイメージの書き込み

完全なファイルシステム イメージは、/tmp/deploy/images に展開されます。イメージは、ほとんどの場合、環境設定で設定されたマシンに固有のものです。各イメージ ビルドでは、マシン構成ファイルで定義された IMAGE_FSTYPES に基づいて、U-Boot、カーネル、およびイメージ タイプが作成されます。ほとんどのマシン構成では、SD カード イメージ (.wic) と rootfs イメージ (.tar) が提供されます。SD カード イメージには、対応するハードウェアの起動に適したパーティション イメージ (U-Boot、カーネル、rootfs などを含む) が含まれています。

SDカードイメージのフラッシュ

SD カード イメージ ファイル .wic には、対応するハードウェアの起動に適したパーティション イメージ (U-Boot、カーネル、rootfs などを含む) が含まれています。SD カード イメージをフラッシュするには、次のコマンドを実行します。

zstdcat <image_name>.wic.zst | sudo dd of=/dev/sd<partition> bs=1M conv=fsync
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

28年間 外資系と日系の半導体企業で主にデジアナ混載LSI、32bitマイコン、アナログIC、RFIC等の設計をしてきました。
これまで世の中に無かった半導体製品および関連するツールや製造関連機器等を独自に設計・開発し世に送り出してきました。
長年の趣味であるオーディオの分野で自分が欲しい世の中に無い製品を開発し世に広めたいと思い2023年より事業を開始いたしました。
好きな音楽はクラシック音楽です。弦楽器(チェロ)をたまに弾きます。

目次