i.MXの開発環境を構築してみた (uuu編)

i.MXの開発環境構築手順の解説を複数回にわたりお届けします。今回は2回目となります。

前回のコラムでは、i.MXの開発環境を構築するというテーマの元、ホストマシンのセットアップからyoctoの構築、bitbakeまでを行いました。今回のコラムは、bitbakeによって生成したファイルをi.MX評価ボードに書き込んで簡単な機能確認できるまでを紹介します。

全体の流れ

Yocto開発環境を構築し、イメージファイルをビルドしてi.MX評価ボードに書き込み、機能確認するまでの全体の流れは以下の通りです:

  • ① 事前準備をする:ホストマシンのセットアップ
  • ② 開発環境を構築してみよう:Yoctoで開発環境を構築
  • ③ ビルドしてみよう:イメージをビルド
  • ④ 書き込みをしてみよう:生成されたイメージを評価ボードに書き込む
  • ⑤ 起動確認をしてみよう:評価ボードの起動を確認
  • ⑥ 機能を確認してみよう:評価ボードで実際に動作を確認

前回のコラムでは手順①~③までを紹介しました。本コラムでは手順④~⑤(「3.書き込みをしてみよう」、「4.起動確認をしてみよう」までを紹介し、手順⑥は次回のコラムで紹介します。

  • 全体の流れ:イメージ

    Yoctoを使用したi.MX開発環境を構築する流れ

前回のおさらいと今回用意するもの

前回のコラムでは、ホストマシンにYoctoプロジェクト・ビルド環境を構築し、i.MX評価ボードのイメージのビルドまでを行いました。使用した評価ボードは「i.MX 8M Plus(8MPPLUSLPD4-EVK)」です。

  • i.MX 8M Plus(8MPPLUSLPD4-EVK):イメージ

    参考画像:i.MX 8M Plus(8MPPLUSLPD4-EVK)

1.生成したファイルを確認する

前回のコラムのビルド(bitbake)でイメージファイル(imx-image-full-imx8mp-lpddr4-evk-20240710002334.rootfs.wic.zst)が以下のパスのフォルダーに作成されているかを確認します。

$ cd ~/imx-yocto-bsp/build/tmp/deploy/images/imx8mp-lpddr4-evk
$ ls
~~~~略~~~~
~~~~略~~~~
imx-image-full-imx8mp-lpddr4-evk.rootfs.manifest
imx-image-full-imx8mp-lpddr4-evk.rootfs.tar.zst
imx-image-full-imx8mp-lpddr4-evk.rootfs.wic.bmap
imx-image-full-imx8mp-lpddr4-evk.rootfs.wic.zst
~~~~略~~~~

ファイルが無ければ、前回のコラムに戻って再度bitbakeを行ってください。

2.今回用意するもの

今回は評価ボードにイメージファイルを書き込みます。必要なものを以下に記載します。

項目 内容
ホストマシン 前回のコラムで使用したPC
評価ボード i.MX 8M Plus(8MPPLUSLPD4-EVK)
評価ボード用電源 評価ボード付属のAC電源(USB-C)
USBケーブル ホストマシンと評価ボード接続用 (評価ボード側:USB-C接続)
USBケーブル ホストマシンと評価ボード接続用 (評価ボード側:USB-microB接続)
microSDカード 8GB以上(32~128GB推奨)
ディスプレー HDMI接続できる液晶ディスプレーなど

書き込みをしてみよう

イメージファイルを評価ボードへ書き込む前に、評価ボードをどのように起動(ブート)させるかを考えます。リファレンスマニュアルによると下記ブートデバイスがサポートされています。

評価ボードのブートデバイスを下記に記載します。

ブート方法 内容
FlexSPI NOR Flash FlexSPI経由シリアルNORフラッシュ
FlexSPI NAND Flash FlexSPI経由シリアルNANDフラッシュ
NAND Flash NANDフラッシュ
SD/eMMC SD/eMMC
Serial (SPI) NOR シリアル(SPI)NOR

本コラムでは、評価ボードに装着したmicroSDカードにシリアルダウンロードでイメージファイルを書き込んでブートさせます。microSDカードは32GB程度を用意します。

補足:本コラムで使用するイメージファイルは8GBのmicroSDがあれば十分ですが、開発を行う評価ボード上でアプリケーションのセルフビルド等を行う場合、microSDは32GB以上が必要になる場合もあります。

microSDの容量は、128GBのmicroSDでの動作を確認しております。

3.書き込み方法の選択

ブートデバイスとなるmicroSDカードにイメージファイルを書き込む方法は主に2つあります。ホストマシンと評価ボードをUSB接続して評価ボードに装着したmicroSDに書込む方法(uuu)と、ホストマシンに接続したカードリーダーに装着したmicroSDカードに書込む方法(dd)があります。

それぞれの書き込み方法を下記に記載します。

書き込み方法 説明内容
uuu Universal Update Utilityの略
ホストマシンと評価ボードをUSB接続し、評価ボードに書き込む方法
書き込みツール(uuu)を別途下記サイトからダウンロードが必要
https://github.com/nxp-imx/mfgtools
dd ファイルをブロック単位で読み出して指定の変換にて出力するLINUXコマンド
ホストマシンにmicroSDを装着しコマンドを通して直接microSDカードにファイルを展開する

本コラムではuuuの書き込み方法を記載します。ddを使用した方法は別のコラムで紹介する予定です。

4.書き込み

uuuを使用した書き込み方法を説明します。
評価ボードにmicroSDカードを装着し、ホストマシンと評価ボードのUSB-C端子をUSBケーブルで接続します。

  • ホストマシンと評価ボードの接続図:イメージ

    図 ホストマシンと評価ボードの接続図

uuuを使用してmicroSDカードにイメージファイルを書き込む場合は、ホストマシンへのuuuのインストールが必要になります。

https://github.com/nxp-imx/mfgtools/releasesからuuu(本コラム執筆時点で最新バージョンのRelease uuu_1.5.182版)をダウンロードします。

$ cd ~/ダウンロード
$ wget https://github.com/nxp-imx/mfgtools/releases/download/uuu_1.5.182/uuu

ダウンロードしたファイルの属性を変更し、/user/binにコピーします

$ chmod +x uuu
$ sudo cp uuu /usr/bin

コマンドの内容は以下を参照してください。

コマンド 内容
chmod +<permission> <file> <file>に<permission>を設定します
<permission> 数値または権限を付与(設定)
数値 権限 内容
0 権限なし
1 x 実行可
2 w 書き込み可
3 wx 書き込み・実行可
4 r 読み込み可
5 rx 読込・実行可
6 rw 読込・書き込み可
7 rwx 読込・書き込み・実行可
<file> ファイル名
cp <file1> <file2> <フォルダー/ファイル>から<フォルダー/ファイル>にコピーします

評価ボードの左上にあるBoot Switch(4bit DIP switch)を操作して、BOOT MODEをSerial Download 「0001」に設定します。

表 評価ボードのBoot SwitchとBOOT MODE

Boot Switch BOOT MODE
0000 Boot From Fuse
0001 Serial Download
0010 eMMC / SDHC3
0011 MicroSD / SDHC2
0100 NAND 256 page
0101 NAND 512 page
0110 QSPI 3B Read
1000 ECSPI Flash
1110 Infinite Loop

ハードウェアの準備が終わったら、評価ボードの電源を入れ、書き込みを行います。

$ cd ~/imx-yocto-bsp/build/tmp/deploy/images/imx8mp-lpddr4-evk
$ sudo uuu -b sd_all imx-image-full-imx8mp-lpddr4-evk.wic.zst

画面に「Success 1」が表示されれば書き込み成功です。

uuu (Universal Update Utility) for nxp imx chips -- libuuu_1.5.182-0-gda3cd53
Success 1    Failure 0
2:1-1F0A3000 6/ 6 [Done                                  ] FB: done

コマンドuuuの内容は以下を参照してください。

コマンド 内容
uuu <command> <device> <file> 指定した方法でファイル書き込み
<command> -b 書き込み
<device> emmc emmcのブートパーティションに書き込み
emmc_all emmcにイメージファイルを書き込み
fat_write 起動中のボードのubootにファイルを書き込み
namd NAND Flashにイメージファイルを書き込み
qspi QSPI NOR Flashにイメージファイルを書き込み
sd SDのブートパーティションに書き込み
sd_all SDにイメージファイルを書き込み
spl SPLとubootを起動

この他にもコマンドはありますが、本コラムでは割愛致します。詳細は下記を参考にしてください。

参考URL:nxp-imx/mfgtools

書き込みが終わったら、評価ボードの電源を切ります。

書き込んだイメージファイルの起動を確認してみよう

イメージファイルを書き込んだ評価ボードは、起動時にシリアル通信とディスプレーに起動情報を出力します。ここではシリアル通信とディスプレー出力で評価ボードが正しく起動しているかを確認します。

microSDから起動するために、評価ボードのBoot Switchを「0011」に設定してBOOT MODEをMicroSD/SDHC2に変更します。

以下の図のように、ホストマシンと評価ボードのDEBUG端子をUSB-micro Bケーブルで接続し、ディスプレーと評価ボードをHDMIケーブルで接続します。

  • シリアル通信とディスプレー出力:イメージ

    図 ホストマシンと評価ボードの接続図

1.評価ボードのDEBUG端子から起動を確認

DEBUG端子(USB micro)から起動情報を読み取るために、ホストマシンにgtktermをインストールします。

$ sudo apt install gtkterm
$ sudo gtkterm

gtktermが起動したら、「Configuration」→「Port」を選択し、シリアル通信の設定を行います。「Port」はホストマシンの環境によって異なりますが、本コラムのホストマシンでは「/dev/ttyUSB2」でした。

  • ホストマシンでシリアル通信の設定:イメージ

評価ボードの電源を入れ、gtktermに以下のテキストが表示されることを確認します。これは、評価ボードがシリアル通信でDEBUG端子かへ送信したメッセージで、評価ボードに書き込んだイメージファイルの起動が問題なかったこと示します。

~~~略~~~
imx8mp-lpddr4-evk login:

上記表示が出なかった場合、gtktermの設定を再度確認してください。ホストマシン側で認識している通信Portをgtktermで正しく選択できていないケースがほとんどですので正しい接続先を設定します。

2.ディスプレーから起動を確認

ディスプレーからも書き込んだイメージファイルで評価ボードが正しく起動できたかの確認が可能です。ディスプレーに以下のような画面が表示されれば起動は問題ありません。※起動確認として必須項目ではありません。

  • ディスプレー表示:イメージ

おわりに

今回のコラムでは、評価ボードにイメージファイルを書き込み、イメージファイルで問題なく起動できているかを確認する方法について解説しました。

次回は起動した評価ボードとイメージファイル(LINUX)の機能および動作を確認していきます。書き込んだイメージファイルで評価ボードに搭載されているさまざまな機能の動作を確認する方法を解説しますので、より実際の開発を近い形でイメージいただけるかと思います。

ネクスティ エレクトロニクス開発部では、i.MXシリーズを使用した製品開発や技術サポートを行っていますので、お気軽にお問い合わせください。

関連コラム