i.MX 8M Plus EVKのマルチメディア機能の動作確認 (日本語ブログ)

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

i.MX 8M Plus EVKのマルチメディア機能の動作確認 (日本語ブログ)

yutaka_ando
NXP Employee
NXP Employee
1 0 1,021

はじめに

ここではi.MX 8M Plus EVK評価ボードを使用して、カメラ入力やビデオ再生、オーディオの録音/再生、Wi-Fi接続などを行う方法について説明します。

準備

各項での必要に応じて、i.MX 8M Plus EVK評価ボードにMIPIカメラ、HDMIディスプレイ、イヤホン、USBケーブルを接続します。

i.MX 8M Plus EVK評価ボードの詳しい使い方については、i.MX 8M Plus EVK Quick Start Guideをご参照ください。

evaluating_multimedia_functions.jpg

Yocto Linux BSPのビルド方法、書き込み方法については、以下の記事をご参照ください。

Yocto Linux BSPのビルド方法

Linux BSPをビルドして生成したイメージをターゲットボードに書き込む方法

 

1. USBガジェット動作(マスストレージ)

i.MX 8M Plus EVKをUSBマスストレージとして動作させ、ホストPCからアクセスします。その際、ホストPCとEVKのUSB port 1をUSBケーブルで接続しておきます。

  1. i.MX 8M Plus EVKをeMMCブートで起動します。
  2. i.MX 8M Plus EVKのSDカード・スロットにMicro SDカードを挿し、fdiskコマンドでパーティションを作成し、FAT32 (LBA)を選択します。
    root@imx8mp-lpddr4-evk:~# fdisk /dev/mmcblk1
    Command (m for help): n
    Partition type
    <中略>
    Created a new partition 1 of type 'Linux' and of size 14.6 GiB.
    <中略>
    Command (m for help): t
    Selected partition 1
    Hex code or alias (type L to list all): 0x0c
    Changed type of partition 'Linux' to 'W95 FAT32 (LBA)'.
    Command (m for help): w
    The partition table has been altered.
    Calling ioctl() to re-read partition table.
    Syncing disks.
  3. 作成したパーティションをフォーマットします。
    root@imx8mp-lpddr4-evk:~# mkfs.vfat -F 32 /dev/mmcblk1p1
  4. USBガジェットのkernel object があるパスに移動します。
    root@imx8mp-lpddr4-evk:~# cd /lib/modules/6.1.55+g770c5fe2c1d1/kernel/drivers/usb/gadget/legacy/
  5. mass storageのkernel objectを読み込むと、ホストPCで"Mass Storage Gadget"が自動的にマウントされます。
    root@imx8mp-lpddr4-evk:~# insmod g_mass_storage.ko file=/dev/mmcblk1 stall=0
  6. ホストPCで”Mass Storage Gadget”のフォルダにファイルを作成します。
    USB_gadget_at_hostPC.png

  7. i.MX 8M Plus EVKでSDカードのパーティションをマウントし、ホストPCで作成したファイルが存在するか確認します。
  8. root@imx8mp-lpddr4-evk:~# mount /dev/mmcblk1p1 /media/
    root@imx8mp-lpddr4-evk:~# less /media/USB_gadget_test.txt
    This is a test file for USB gadget function of i.MX 8M Plus EVK. 2025/6/17

 

2. ビデオ再生(mp4再生)

  1. 下記リンクから動画ファイルをダウンロードします。https://download.blender.org/demo/movies/BBB/bbb_sunflower_1080p_60fps_normal.mp4.zip

  2. ダウンロードしたzipファイルを解凍し、bbb_sunflower_1080p_60fps_normal.mp4をi.MX 8M Plus EVKの /home/rootに格納します。

  3. 以下のコマンドでmp4ファイルを再生します。
    root@imx8mp-lpddr4-evk:~# gst-launch-1.0 filesrc location=./bbb_sunflower_1080p_60fps_normal.mp4 ! 'video/quicktime' ! aiurdemux ! queue ! vpudec ! waylandsink
    operational-check_3.png
    (c) copyright 2008, Blender Foundation / www.bigbuckbunny.org

 

3. ビデオ再生 (テスト映像)

  1. テスト映像を作成します。
    root@imx8mp-lpddr4-evk:~# gst-launch-1.0 videotestsrc num-buffers=100 ! video/x-raw,width=1920,height=1080,format=YUY2 ! queue ! vpuenc_h264 ! h264parse ! mp4mux ! filesink location=./output.mp4
  2. テスト映像を再生します。
    root@imx8mp-lpddr4-evk:~# gst-launch-1.0 filesrc location=./output.mp4 ! 'video/quicktime' ! aiurdemux ! queue ! vpudec ! waylandsink

 

4. オーディオ再生

  1. 添付のtest.zipを解凍し、解凍されたファイルtest.wavをi.MX 8M Plus EVKの/home/rootに格納します。

  2. HEADPHONE端子と対応するAudio Card (wm8960)のカード番号を確認します。
    例) 以下のログでは使用するAudio Cardはcard 3
    root@imx8mp-lpddr4-evk:~# aplay -l
    **** List of PLAYBACK Hardware Devices ****
    <中略>
    card 3: wm8960audio [wm8960-audio], device 0: HiFi wm8960-hifi-0 [HiFi wm8960-hifi-0]
    Subdevices: 1/1
    Subdevice #0: subdevice #0
  3. test.wavの再生処理を実行→HEADPHONE端子に接続したイヤホンから音楽が出力されることを確認します。
    root@imx8mp-lpddr4-evk:~# aplay -D plughw:<wm8960-audioのcard No>,0 test.wav

 

5. オーディオ録音

  1. 4. オーディオ再生のステップ2と同じ手順でAudio Cardのカード番号を確認します。

  2. 録音します。
    root@imx8mp-lpddr4-evk:~# arecord -D plughw:< wm8960-audioのcard No >,0 -r 16000 -f S16_LE capture.wav
    --r, --rate=# サンプル・レート
    -f, --format=FORMAT サンプル・フォーマット (大文字と小文字は区別されません)

  3. 録音したwavファイル (capture.wav)が再生できるか確認します。
    root@imx8mp-lpddr4-evk:~# aplay -D plughw:<wm8960-audioのcard No>,0 capture.wav

 

6. オーディオ録音/再生 - カード番号ではなくカード名による指定

  1. 録音します。
    root@imx8mp-lpddr4-evk:~# arecord -D plughw:wm8960audio -r 16000 -f S16_LE capture.wav
  2. 録音したwavファイル (capture.wav)が再生できるか確認します。
    root@imx8mp-lpddr4-evk:~# aplay -D plughw:wm8960audio capture.wav

 

7.カメラ動作

  1. u-bootコンソールで、使用するMIPIカメラに対応したdtbに変更し、Linuxを起動します。
    例) Baslerのカメラ・モジュールを使用する場合
    => setenv fdtfile imx8mp-evk-basler.dtb
    => saveenv
    => boot
  2. キャプチャ映像をGstreamerでディスプレイに表示します。
    root@imx8mp-lpddr4-evk:~# gst-launch-1.0 v4l2src device=/dev/video2 ! autovideosink
    /dev/videoXの番号は、使用するカメラやdtbファイルによって変化します。上記の組み合わせの場合は/dev/video2です。

 

8. Wi-Fi接続

  1. 接続用に以下の内容のシェルスクリプト(wifi.sh)を作成します。
    #!/bin/bash
    export SSID="wifi_ssid"
    export PASSWORD="password"
    modprobe moal mod_para=nxp/wifi_mod_para.conf
    wpa_passphrase ${SSID} ${PASSWORD} > imxrouter.conf
    wpa_supplicant -d -B -i mlan0 -c ./imxrouter.conf
    udhcpc -i mlan0
    "wifi_ssid"は実際に使用するアクセスポイントのSSID、"password"は実際に使用するアクセスポイントのパスワードに置き換えます。

  2. スクリプトに実行属性を付与した後に実行、pingでDNSサーバ(8.8.8.8)につながるか確認します。
    root@imx8mp-lpddr4-evk:~# chmod +x wifi.sh
    root@imx8mp-lpddr4-evk:~# ./wifi.sh
    root@imx8mp-lpddr4-evk:~# ping 8.8.8.8

 

9. NPU動作

  1. tensorlow-liteのexampleが置いてあるパスに移動します。
    root@imx8mp-lpddr4-evk:~# cd /usr/bin/tensorflow-lite-2.12.1/examples/
  2. benchmark_modelのbinで処理速度を評価します。 (CPU)
    root@imx8mp-lpddr4-evk:~#./benchmark_model --graph=mobilenet_v1_1.0_224_quant.tflite --num_runs=5
  3. modelrunnerでパフォーマンスを評価します。 (NPU/VX-delegate)
    root@imx8mp-lpddr4-evk:~#./benchmark_model --graph=mobilenet_v1_1.0_224_quant.tflite --num_runs=5 --external_delegate_path=/usr/lib/libvx_delegate.so
  4. ログからCPUとNPUの処理速度の違いを確認します。
    例)
    CPUの場合
    count=7 first=143499 curr=143551 min=143393 max=143678 avg=143538 std=93
    NPUの場合
    count=352 first=2804 curr=2782 min=2754 max=2896 avg=2791.29 std=24

 

NPUを使用するAI/ML処理の導入については、こちらのブログもご参照ください。
組込み機器へのAI/ML導入にお困りではありませんか・・・? NXPのAI/MLソリューション~eIQ~で何ができる? (日本語ブログ)

 

まとめ

i.MX 8M Plus EVK評価ボードで様々なマルチメディア機能を使用する方法について、簡単にご紹介しました。

 

参考情報

 

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

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

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