[入門] Yocto Linux BSPのビルド方法 - i.MX 8M Plus編 (日本語ブログ)

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

[入門] Yocto Linux BSPのビルド方法 - i.MX 8M Plus編 (日本語ブログ)

KeitaNaga
NXP Employee
NXP Employee
0 0 3,752

i.MX 8M PlusのEVKをベースに、Yocto Linuxのビルド方法をご紹介します。

Yocto Linux BSPは、6.1.55-2.2.0を使用しています。

 

1. 環境&事前準備

1.1. 環境

大項目 小項目 内容 備考
Hardware EVK

8MPLUSLPD4-EVK

PEVKでもOK
 

MIPI-Camera

(Option)

BSP対応のMIPIカメラ(IMX_LINUX_RELEASE_NOTES.pdf参照) USBカメラでも代替可(遅延が発生する可能性あり)
  Host PC
Ubuntu環境
・VMWare/Virtual Box等(on Windows)
・Native Linux
のどちらか
推奨:Ubuntu20.04
  Display 表示用ディスプレイ  
 

USB Device

(Option)

USBマウス、USBメモリ  
  Headphone

3.5mm イヤホン

マイク付きイヤホン(旧iphone付属のイヤホン等)だとベター
  SDカード+リーダライタ 16GB以上のもの推奨  
Software Yocto環境 Yocto imx-image-fullビルド実施済み環境(toolchain含む) -
  Wic Image(i.MX) imx-image-full.wic(rev. L6.1.55_2.2.0) -
  uuu リンク からuuu.exe or uuuをインストール -
Document - i.MX Linux® Release Notes -
  - UUU.pdf -
  - i.MX Porting Guide

-

 

1.2. 凡例

コマンド・プロンプトの凡例

root@imx8mp-lpddr4-evk:~# i.MX8MPlus EVKのLinuxプロンプト
=>                                                  i.MX8MPlus EVKのu-bootプロンプト
$                                                    BSPがインストールされているLinux PCのプロンプト

 

2. ホストマシン

Ubuntu 20.04 Desktop、64bitを推奨します。 実運用上、ある程度快適なホストマシンのスペックは8スレッド、16GB以上です。 必要なストレージはターゲットとするレシピで変わってきますが、 小さいプロジェクトで50GB、大きなもので500GBなどかかったりします。

2.1. Yoctoに必要なパッケージ

以下の手順にて必要なパッケージをインストールしてください。

$ sudo apt-get 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 \
curl

注釈 IMX_YOCTO_PROJECT_USERS_GUIDE.pdf に記載されている内容に加えて curl を追記しています。

2.2. スワップファイルの設定
32GBのスワップファイルを設定する場合の例です。

$ sudo fallocate -l 32G /swapfile
$ sudo chmod 600 /swapfile
$ sudo mkswap /swapfile
$ sudo swapon /swapfile

注釈 すでに/swapfileが存在する場合は1行目のコマンドがFailします。サイズを変えて設定したい場合は、以下を実行してから再度上のコマンドを実行してください。

$ sudo swapoff /swapfile
$ sudo rm /swapfile

ホストマシンの起動時にスワップファイルを自動的にマウントさせるには、以下の行を/etc/fstabに追加してください。

/swapfile none swap sw 0 0

 

3. Yocto Linux BSP

NXP.comから Linux 6.1.55_2.2.0向けのBSPセットアップドキュメント https://www.nxp.com/docs/en/supporting-information/LF6.1.55_2.2.0_Linux-Docs.zip

を入手してください。

zipファイルに含まれているi.MX Yocto Project User's Guide (IMXLXYOCTOUG) の「4 Yocto Project Setup」の手順に沿ってイメージを作成します。

この資料は、以下の設定で生成されるイメージを前提として書いています。

 DISTRO = fsl-imx-xwayland
 MACHINE = imx8mp-lpddr4-evk

3.1. Yocto BSPのセットアップとビルド
ホストマシンのセットアップは 2. ホストマシン を参照ください。

3.1.1. repoユーティリティのインストール

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

3.1.2. repoのPATHを通す
以下の行を$HOME/.bashrcに追加します。

.bashrc

export PATH=~/bin:$PATH

3.1.3. Gitのセットアップ

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

3.1.4. Yocto BSPのセットアップ

$ mkdir imx-yocto-bsp
$ cd imx-yocto-bsp
$ repo init -u https://github.com/nxp-imx/imx-manifest -b imx-linux-mickledore -m imx-6.1.55-2.2.0.xml
$ repo sync

3.1.5. ビルドターゲットの設定、ビルド

$ MACHINE=imx8mp-lpddr4-evk DISTRO=fsl-imx-xwayland source ./imx-setup-release.sh -b build
$ bitbake imx-image-full

*ここでビルドが終了しますと、Linuxイメージが生成されます。

注釈 imx-setup-release.shスクリプトを使うセットアップは、プロジェクト1つに対して1回のみです。既存のプロジェクトに対して行うと、conf/local.confなどのファイルが新規で生成されるので、これまで設定した内容が失われます。既存プロジェクトを再度使う場合は 3.3.1. 既存のビルド・ディレクトリから作業を再開する を参照ください。

注釈 ホストマシンのスペックによりますが、ビルドには数十時間かかることも想定されます。またストレージも4~500GB消費することも想定してください。

注釈 マルチコア・マルチスレッドでのホストマシンでビルドを行う際、スレッド数に対してメモリが足りない場合にスワップが発生します スレッド数を制限するのは 3.4.2. ビルド時に走るスレッド数を制限する を参照ください。

注釈 Ubuntu20.04の初期状態だとスワップが設定されていないケースがあり、その場合は極端に遅くなったりクラッシュしたりします。スワップファイルの設定は 2.2. スワップファイルの設定 を参照ください。

 

*ここから先は参考用です。

3.2. ツールチェインのビルド、インストール
クロスコンパイラなどのツールチェインをビルド、インストールすることができます。 ここで生成されるスクリプトを使うことで、クロスコンパイルのときにありがちなインクルードファイルやリンクさせるライブラリが見つからない、といった問題を避けることができます。

3.2.1. ツールチェインのビルド

$ bitbake imx-image-full -c populate_sdk

3.2.2. インストール

$ tmp/deploy/sdk/fsl-imx-xwayland-glibc-x86_64-imx-image-full-armv8a-imx8mp-lpddr4-evk-toolchain-6.1-mickledore.sh

ツールチェインの使い方については、ここでは説明しません。

 

3.3. よく使うYocto bitbakeコマンド、設定

3.3.1. 既存のビルド・ディレクトリから作業を再開する

$ cd /path/to/imx-yocto-bsp
$ source ./setup-environment build

注釈 ここでのパス、ディレクトリは 3.1.4. Yocto BSPのセットアップ 、 3.1.5. ビルドターゲットの設定、ビルド で設定したものです。

以下ではlinux-imxを例として、いくつかのコマンド例を挙げていきます。 "linux-imx"を別のパッケージ名にすれば、そのパッケージ毎に同様のことが可能です。

3.3.2. パッケージの再ビルド

$ bitbake -c compile linux-imx -f
$ bitbake -c install linux-imx
$ bitbake -c deploy linux-imx

注釈 -fを付けない場合と手順がスキップされる可能性があります。

注釈 -c deployがエラーになるパッケージもありますが、ほとんどの場合はdo_deployコマンドが用意されていないだけですので、エラーは無視して構いません。

3.3.3. パッケージを消す
あるパッケージで本来発生しないであろうエラーが発生する場合に、以下のコマンドでパッケージを消してやり直してみるとエラーが解消することがあります。 (ダウンロード時にパッケージが破損したり、ビルドを途中で強制的に終了した場合にゴミデータが残ったりしている場合があるためです。)

$ bitbake -c cleansstate linux-imx

注釈 展開したソースコードごと削除されますので、編集しているファイルなどがある場合はご注意ください。

3.3.4. パッケージの展開
パッケージの展開だけを行い、コンパイルなどはまだやりたくない場合

$ bitbake -c patch linux-imx

3.3.5. configファイルの変更を反映させる
configファイル(arch/arm64/configs/imx_v8_defconfigなど)を変更し、それを反映させたい場合

$ bitbake -c configure linux-imx
$ bitbake -c compile linux-imx -f

3.3.6. linux-imx menuconfigを行う
Linuxカーネルのビルドオプションを変更する場合

$ bitbake -c menuconfig linux-imx

このようなウィンドウが起動するので、必要な変更を加えてSaveします。(十字カーソルキーで対象を選択し、スペースキーで決定)

 

ビルド時のTIPSについては、以下の記事を併せてご参考ください。

Yocto Linux BSPのビルド時におけるTIPS集 - i.MX 8M Plus編

 

=========================

本投稿の「Comment」欄にコメントをいただいても、現在返信に対応しておりません。

お手数をおかけしますが、お問い合わせの際には、NXP代理店、もしくはNXPまでお問い合わせください。