i.MX8搭載ボードのLinuxイメージを作る
Yocto Project入門&ハードウェア拡張
・開催日 :2025年11月12日 10:00-17:00
・受講料 :10,000円(ボード付き,税込み)
・使用ボード:MaaXBoard 8ULP(アヴネット)
・講師 :三ツ木 祐介氏(Interface誌連載「YoctoProjectではじめる組み込みLinux開発入門」を執筆中)
※セミナ受講時に使用したMaaXBoard 8ULPはそのままお持ち帰り頂けます.
申し込みページはこちら
FRDM基板プレゼント(計5名様) メール・マガジン「組み込みマイコン入門講座」読者アンケートにご協力ください
2025年4月~配信しているメール・マガジン「組み込みマイコン入門講座」について読者アンケートにご協力をお願い致します.メール・マガジンのアーカイブはこちらでも確認できます.
アンケートに回答頂いた方の中から抽選で5名様に,下記のいずれかのマイコン基板をプレゼント致します.
・FRDM-MCXA153
・FRDM-RW612
・FRDM-MCXN947
当選発表,および当選ボードの種類は,プレゼントの発送を持ってかえさせて頂きます.
アンケート・ページはこちら
今回は,実際にYocto Projectを使って作成したLinuxを動かしてみます.具体的には,最小構成のLinuxを作成し,実機で動かします. ターゲット・ボードは,SoCとしてi.MX8ULP(NXPセミコンダクターズ)を搭載するMaaXBoard 8ULP(写真1,アヴネット)です. 今回は文献(1)の手順に従い,i.MXのBSP(Board Support Package)であるimx-yocto-bspをベースとしたビルド環境を構築します.
Yocto Projectは,基本的にLinux PC上で実行されることを前提としています.
今回は,文献(1)
に従ってUbuntu 20.04 LTSがインストールされているPCを利用します.
Yocto Projectを使用する前に,あらかじめ必要なパッケージをインストールしておきます.ここでは,文献(1)に従って次のコマンドを実行します.
$ sudo apt-get update && sudo apt-get install -y \
wget git-core diffstat unzip texinfo gcc-multilib \
build-essential chrpath socat cpio python python3 python3-pip python3-pexpect \
xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev \
pylint3 xterm rsync curl gawk zstd lz4 locales bash-completion
また,文献(3)に従って次のコマンドも実行しておきます.
$ sudo apt install gcc python3-subunit mesa-common-dev liblz4-tool file
$ sudo locale-gen en_US.UTF-8
NXPセミコンダクターズからメタデータをダウンロードするときに,repoコマンドを使用するので,次のコマンドを実行してインストールします.
$ mkdir -p ~/bin
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
$ export PATH=~/bin:$PATH
次のコマンドを実行して,Gitが適切にセットアップされていることを確認します.
$ git config --global user.name "YourName"
$ git config --global user.email "you@example.com"
Yocto Projectを使ってLinuxを作成します.手順は大まかに次のようになります.
1,作業ディレクトリの作成
2,メタデータとビルド・ツール一式の取得
3,環境変数の設定
4,ターゲット・ボード用レイヤの取得
5,ターゲット・ボード用の設定
6,Linux作成コマンド(BitBake)の実行
7,フラッシュ・メモリへの書き込み
複雑そうに見えますが,実際はコマンドをいくつか実行するだけです.コマンドラインでの操作に慣れれば,思ったよりも簡単に進められます.ただし,BitBakeの実行には数時間かかります.
次のコマンドを実行して,作業ディレクトリを作成します.
$ mkdir ~/imx-yocto-bsp
$ cd ~/imx-yocto-bsp
次のコマンドを実行して,NXPセミコンダクターズのGitHubリポジトリからi.MXのBSPをダウンロードします.ダウンロードはrepoコマンドを使用します.
$ 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
次のコマンドを実行して,アヴネットのGitHubリポジトリからMaaXBoard 8ULPのソースコードをダウンロードします.
$ cd ~/imx-yocto-bsp/sources
$ git clone https://github.com/Avnet/meta-maaxboard.git -b mickledore meta-maaxboard
BitBakeなどのYocto Projectが提供するツールを実行するには,あらかじめ環境変数を設定する必要があります. 次のコマンドを実行して,ビルド環境を設定します.実行後はbuildディレクトリが作成されます.カレント・ディレクトリも自動的にbuildディレクトリへ移動します.
$ cd ~/imx-yocto-bsp
$ MACHINE=maaxboard-8ulp source sources/meta-maaxboard/tools/maaxboard-setup.sh -b maaxboard-8ulp/build
ビルド環境の設定後に新しいターミナルを開いたり,マシンを再起動したりした場合は,環境変数を設定するために次のコマンドを実行する必要があります.maaxboard -setup.shを再度実行する必要はありません.
$ cd ~/imx-yocto-bsp
$ source sources/poky/oe-init-build-env maaxboard-8ulp/build
BitBakeでは,Linuxディストリビューションを作成する場合,コマンド実行時にイメージ名を指定します.今回の環境でビルドできるイメージを表1に示します.

今回は最初のビルドなので,デフォルトのイメージであるavnet-image-fullを作成します. 次のコマンドを実行します.次のコマンドを実行します.ビルド環境にもよりますが,BitBakeの処理が完了するまで数時間かかります.
$ bitbake avnet-image-full
BitBakeの処理が完了すると,ビルド・ディレクトリ配下のtmp/deploy/images/maaxboard-8ulpにavnet-image-full-maaxboard8ulp-xxxx.rootfs.wicというファイルが作成されます. このファイルがLinuxイメージそのものです.これをMaaXBoard 8ULPのフラッシュ・メモリ(eMMC)に書き込んで実行します.
MaaXBoard 8ULPには,表2に示す2つのブート・モードがあります. ここでは,eMMCへイメージを書き込むために,シリアル・ダウンロード・モードに設定します. MaaXBoard 8ULPの裏面にあるDIPスイッチを表2の通り設定します.設定後の様子を写真2に示します.


MaaXBoard 8ULPには,2つのUSB Type-Cポートが実装されています. 写真3に示すように,シリアル・コンソールのポートJ4と,電源ポートJ7の両方をPCに接続します.
▼(1) 書き込みプログラムの入手
i.MX用の書き込みプログラムUUU(Universal Update Utility)を入手します.
https://github.com/nxp-imx/mfgtools/releases/tag/uuu_1.5.21
▼(2) Linuxイメージと同じ場所に配置
入手したUUUの実行ファイルを,Linuxイメージが置いてある場所に移動します.
▼(3) 書き込みの実行
次のコマンドを実行して,MaaXBoard 8ULPにLinuxイメージを書き込みます.
$ uuu -b emmc_all u-boot-maaxboard-8ulp.bin avnet-image-full-maaxboard-8ulp.wic
書き込みが成功したら,MaaXBoard 8ULPからUSBケーブルを2本とも外して,ブート・モードをインターナル・ブート・モード(写真3)に切り替えます.
その後,シリアル・コンソールのポートJ4は再度PCに,電源ポートJ7はUSB電源にそれぞれ接続し,MaaXBoard 8ULPを再度起動します(写真4).


PC側では,次の4つのUARTポートが認識されます.
・(1) /dev/ttyUSB0(Reserved)
・(2) /dev/ttyUSB1(Reserved)
・(3) /dev/ttyUSB2(A35のデバッグ用)
・(4) /dev/ttyUSB3(M33のデバッグ用)
(3)のポートがLinuxのシリアル・コンソール用です.シリアル・ポートを次のように設定します.
・ボーレート:115200
・データ・ビット:8
・ストップ・ビット:1
・パリティ:なし
・フロー制御:なし
シリアル・コンソールを開いた状態で電源を投入すると,ブートログが表示され,次のようなログイン画面が表示されます.
NXP i.MX Release Distro 6.1-mickledore maaxboard8ulp ttyLP1
maaxboard8ulp login:
ユーザ名をroot,パスワードはなしでログインします.
(1)MaaXBoard 8ULP Linux Yocto Development Guide V3.1,アヴネット.
(2) Avnet;meta-maaxboard(mickledore),GitHub.
(3) 1 System Requirements,Yocto Project Reference Manual,The Linux Foundation.
(4) MaaXBoard 8ULP Yocto User Manual V3.1,アヴネット.
(5) 三ツ木 祐介;YoctoProjectではじめる組み込みLinux開発入門 第2回 ラズパイ編2…最小構成のLinuxイメージを作る,Interface2022年10月号,CQ出版社.
・組み込みマイコン入門講座
-- https://interface.cqpub.co.jp/mcu-hands-on/
・登録内容の変更,メール・マガジン配信中止はこちらからお願いします.
-- https://cc.cqpub.co.jp/system/auth/








