*i.MX FRDMボードをベースに、Yocto Linuxのビルド方法を紹介します。
本記事ではFRDM-IMX93をベースに紹介しますが、他のi.MX FRDMボードでも同じ手順でビルドすることができます。
Yocto Linux BSPは、「Linux 6.12.49_2.2.0 (Yocto 5.2 “Walnascar”)」を例に記載しています。
Q: i.MX FRDMボードとは?
A: i.MX FRDMボードは、NXPが提供するフル機能のEVKボードに比べて、機能を絞り込み、より低価格かつコンパクトに設計された開発ボードです。基本的な評価やプロトタイプ作成を手軽に行えることを目的としています。
1. 環境&事前準備
1.1. 環境
| 大項目 | 小項目 | 内容 | 備考 |
| Document | - |
IMX_YOCTO_PROJECT_USERS_GUIDE.pdf i.MX Linux® Release Notes i.MX Porting Guide |
Yocto Linux全般資料のダウンロードはこちら |
| Hardware | FRDMボード | 本章では、FRDM-IMX93をベースに説明します | |
| Host PC Ubuntu環境 |
・VMWare/Virtual Box等(on Windows)
・Native Linux
のどちらか
|
推奨:Ubuntu22.04以上 | |
| SDカード+リーダライタ | 16GB以上のもの推奨 | ||
|
Hardware (Option) |
MIPI-Camera (Option) |
BSP対応のMIPIカメラ ( i.MX Linux® Release Notes参照) |
USBカメラでも代替可(遅延が発生する可能性があります) |
|
Display (Option) |
表示用ディスプレイ | ||
|
USB Device (Option) |
USBマウス、USBメモリ | ||
|
Headphone (Option) |
3.5mm イヤホン |
マイク付きイヤホン(旧iphone付属のイヤホン等)だとベター | |
| Software | Yocto環境 | Linux BSP (今回はLinux 6.12.49_2.2.0 (Yocto 5.2 “Walnascar”) を使用) |
インストール方法含め、本記事で説明します |
1.2. 凡例
コマンド・プロンプトの凡例
=> u-bootプロンプト
$ BSPがインストールされているLinux PCのプロンプト
2. ホストマシン
Ubuntu 22.04 Desktopを推奨します。 実運用上、ある程度快適なホストマシンのスペックは8スレッド、16GB以上です。 必要なストレージはターゲットとするレシピで変わってきますが、 小さいプロジェクトで50GB、大きなもので500GBほどかかります。
2.1. Yoctoに必要なパッケージ
以下の手順にて必要なパッケージをインストールしてください。
$ sudo apt-get install build-essential chrpath cpio debianutils diffstat file gawk
gcc git iputils-ping libacl1 liblz4-tool locales python3 python3-git python3-
jinja2 python3-pexpect python3-pip python3-subunit socat texinfo unzip wget xzutils zstd efitools 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.jpのEmbedded Linux for i.MX Applications Processorsから必要なLinux BSPのVersionを選択して、i.MX Yocto Project User's Guideを入手してください。
i.MX Yocto Project User's Guide (IMXLXYOCTOUG) の「4 Yocto Project Setup」の手順に沿ってイメージを作成します。
この資料は、以下の設定で生成されるイメージを前提として書いています。
DISTRO = fsl-imx-xwayland
MACHINE = imx93-11x11-lpddr4x-frdm
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に追加します。
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-walnascar -m imx-6.12.49-2.2.0.xml
$ repo sync
3.1.5. ビルドターゲットの設定、ビルド
$ MACHINE=imx93-11x11-lpddr4x-frdm DISTRO=fsl-imx-xwayland source ./imx-setup-release.sh -b build
$ bitbake imx-image-full
*ここでビルドが終了しますと、Linuxイメージが生成されます。
*生成されたイメージの書き込み方法については、以下ご使用のFRDMボードに合わせたスタート・ガイドのステップ1、2をご参考ください。
注釈 他のFRDMボード向けにLinux BSPをビルドしたい場合は、上記コマンドの"MACHINE="の部分を以下の名前に置き換えてください。
注釈 グラフィック機能についても上記コマンドの"DISTRO="の部分にて、ディストリビューションを選択できます。
注釈 imx-setup-release.shスクリプトを使うセットアップは、プロジェクト1つに対して1回のみです。既存のプロジェクトに対して行うと、conf/local.confなどのファイルが新規で生成されるので、これまで設定した内容が失われます。既存プロジェクトを再度使う場合は 3.3.1. 既存のビルド・ディレクトリから作業を再開する を参照ください。
注釈 ホストマシンのスペックによりますが、ビルドには数十時間かかることも想定されます。またストレージも4~500GB消費することも想定してください。
注釈 マルチコア・マルチスレッドでのホストマシンでビルドを行う際、スレッド数に対してメモリが足りない場合にスワップが発生します スレッド数を制限するのは 3.4.2. ビルド時に走るスレッド数を制限する を参照ください。
注釈 Ubuntu22.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-imx93-11x11-lpddr4x-pf0900-evk-toolchain-6.12-walnascar.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については、以下の記事を併せてご参考ください。
=========================
本投稿の「Comment」欄にコメントをいただいても、現在返信に対応しておりません。
お手数をおかけしますが、お問い合わせの際には「NXPへの技術質問 - 問い合わせ方法 (日本語ブログ)」をご参照ください。
(既に弊社NXP代理店、もしくはNXPとお付き合いのある方は、直接担当者へご質問いただいてもかまいません。)
お手頃な値段で、コンパクトに組み込みLinuxを開始できるFRDM(フリーダム)ボードを用いて、Linux BSPのビルド手順を紹介します。
本記事ではFRDM-IMX93をベースに紹介しますが、他のi.MX FRDMボードでも同じ手順でビルドすることができます。
Yocto Linux BSPは、「Linux 6.12.49_2.2.0 (Yocto 5.0.4)」を例に記載しています。