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)
- 参考URL:8MPLUSLPD4-EVK
- 参考URL:i.MX Yocto Project User's Guide
- 参考URL:Embedded Linux for i.MX Applications Processors
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シリーズを使用した製品開発や技術サポートを行っていますので、お気軽にお問い合わせください。