MCIMX8M-EVKのスタート・ガイド

最終更新日時: 2022-12-06 13:29:00サポート i.MX 8M評価キット

1. パッケージの内容

次の手順では、i.MX 8M評価キットにロード済みのAndroidイメージをブートする方法について説明します。

開発キットの内容:

  • スマート・デバイス向けi.MX8MQuad EVKボード
  • USBケーブル (micro B-標準A)
  • ケーブル - アセンブリ、USB 3.0 Type-Aオス、USB micro-Bオス、シールド、1 m
  • ケーブル - アセンブリ、USB 2.0 Type-Aオス、USB Type-Cオス、シールド、1 m
  • 12 V/5 Aユニバーサル電源
  • クイック・スタート・ガイド
  • Android BSP(eMMCに書き込み済み)

1.1 ボードの概要

GS-MCIMX8EVK-BOARD

GS-MCIMX8EVK-BOARD

GS-MCIMX8EVK-BOARD-BACK

GS-MCIMX8EVK-BOARD-BACK

1.2 eMMCからのブート

i.MX8MQuad EVKでは、ビルド済みのNXP Androidバイナリ・デモ・イメージがeMMCに書き込まれています。内部のバイナリを変更することなく、eMMCからのブートにより、Android上で他のアプリケーションをビルドするための特定の機能を備えたデフォルトのシステムが提供されます。

NXPの組込みLinux®、組込みAndroid、MCUXpresso SDKの詳細については、以降のセクションを参照してください。

1.3 USBデバッグ・ケーブルの接続

付属のUSBケーブルのmicro-B側をデバッグUARTポートJ901に接続します。ケーブルのもう一方の端をホスト・コンピュータに接続します。

ターミナル・アプリケーションの使用方法がわからない場合は、ホスト・マシンのオペレーティング・システムに応じて、次のいずれかのチュートリアルを試してください。MinicomチュートリアルTera TermチュートリアルPuTTYチュートリアル

1.4 HDMIケーブルの接続

イメージ・バイナリに付属のユーザー・インターフェースを表示するには、HDMIコネクタ (J1001) を使用してモニタを接続します。

1.5 ブート・スイッチの設定

デフォルトでは、すべてのブート・スイッチはゼロ位置に設定されています。SW801スイッチがeMMCブート・モードにある場合、ボードはeMMCからブートします。

i.MXボードのブート・モードは、ボード上のブート設定用スイッチによって制御されます。

IMX 8M Chip

IMX 8M Chip

次の表には、 i.MX8MQuad EVKボード上のeMMCからブートするためのブート・スイッチの設定(ブート・プロセスで優先される)が列挙されています。

スイッチ D1 D2 D3 D4
SW801 OFF OFF ON OFF
SW802 ON OFF - -

1.6 電源の接続

12 V電源のプラグをDC電源ジャックJ902に接続します。電源スイッチSW701をONにスライドさせて、EVKボードの電源を入れます。

スイッチ (SW701) を使用してボードの電源を入れます。プロセッサがオンチップROMコードから実行を開始します。デフォルトのブート・スイッチ設定では、このコードにより、ブータブル・イメージが格納されているメディアを指定するヒューズが読み取られます。ブータブル・イメージが見つかると、U-Bootの実行が自動的に開始されます。

Cortex-A53の小さい番号のシリアル・コンソールに情報が表示されます(例:WindowsではCOM9、Linuxでは/dev/ttyUSB*)。U-Bootプロセスを停止しない場合は、引き続きLinuxカーネルのブートが実行されます。

1.7 Androidのブートの完了

ブート・プロセス中に、HDMIディスプレイにAndroidのロゴが表示されます。HDMIの出力解像度は1080P固定であることに注意してください。変更する場合は、Androidのドキュメントをご確認ください。

ブート・プロセスが完了すると、Android UIが表示されます。マウスで操作を開始できます。

2. 組込みLinux®

このセクションは、ボードにLinuxオペレーティング・システムをロードする場合にのみ適用されます。

i.MX Linuxボード・サポート・パッケージ (BSP) は、特定のi.MX開発プラットフォームで組込みLinuxイメージをブートするために使用されるバイナリ・ファイル、ソース・コード、およびサポート・ファイルの集まりです。

Linuxバイナリ・デモ・ファイルの現在のリリースは、i.MXのLinuxダウンロード・ページにあります。詳細については、Linuxユーザー・ガイドおよびLinuxリファレンス・マニュアルを参照してください。その他のドキュメントは、i.MX Linuxドキュメント・バンドル、またはi.MXソフトウェアおよび開発ツールのLinuxのセクションで入手できます。

2.1 概要

i.MXボードでLinux OSカーネルがブートできるようになる前に、Linuxイメージがブート・デバイス(SDカード、eMMCなど)にコピーされ、そのデバイスをブートするようにブート・スイッチが設定されます。

各種のボードやブート・デバイス用のLinux BSPイメージをダウンロードするには、さまざまな方法があります。

このスタート・ガイドでは、Linux BSPイメージをSDカードに転送するいくつかの方法のみを示します。経験豊富なLinux開発者は、他のオプションを検討することもできます。

ホスト・マシンで使用されているOSに応じて、Linux BSPイメージをSDカードに転送する方法は異なります。

詳細な手順については、以下のオプションを選択してください。

付属のUSBケーブルのmicro B側をデバッグUARTポートJ1701に接続します。ケーブルのもう一方の端をホスト・コンピュータに接続します。

ターミナル・アプリケーションの使用方法がわからない場合は、ホスト・マシンのオペレーティング・システムに応じて、次のいずれかのチュートリアルを試してください。

3. 組込みAndroid

このセクションでは、i.MX8MQuad EVKボードに組込みAndroidシステム・イメージをロードするブート・プロセスについて説明し、独自のシステム・イメージを作成するソフトウェア・コンポーネントの作成方法をご紹介します。Androidプラットフォームのビルドの詳細については、ドキュメントを参照してください

現在のリリースには、デモ・イメージソース・コードドキュメントが含まれています。これらは、i.MXソフトウェアと開発ツールのAndroidのセクションにもあります。

3.1 概要

開発システム上のストレージ・デバイス(MMC/SDまたはNAND)は、U-Bootブート・ローダを使用してプログラムする必要があります。ブート・プロセスでは、スイッチの設定に基づいて、どのストレージ・デバイスにアクセスするかを決定します。ブート・ローダがロードされて実行が開始されると、U-Boot環境空間が読み取られ、ブート・プロセスの実行方法が決定されます。

イメージは、ビルド済みのリリース・パッケージから取得することも、ソース・コードから作成することもできます。入手方法に関係なく、すべてのAndroidイメージには以下のコンポーネントが含まれます。

  • U-Bootイメージ:u-boot.imx

  • ブート・イメージ:boot.img

  • Androidシステム・ルート・イメージ:system.img

  • リカバリ・ルート・イメージ:recovery.img

Android BSPの詳細については、Androidユーザー・ガイドを参照してください。

ホスト・マシンで使用されているOSに応じて、Android BSPイメージをSDカードに転送する方法は異なります。

4. MCUXpresso SDK

MCUXpressoソフトウェア開発キット (MCUXpresso SDK) は、i.MX8MQuad M4コアで実行される包括的なソフトウェア・ソース・コードを提供します。現時点でi.MX8MQuadでCortex-M4を有効にしたくない場合は、このセクションをスキップできます。

4.1 概要

MCUXpresso SDKは、Cortex-M4をスタンドアロンまたはAコアとともに使用する組込みアプリケーションの開発用に設計されています。MCUXpresso SDKは、ペリフェラル・ドライバに加えて、基本的なペリフェラルの使用例からデモ・アプリケーションまでをカバーする豊富なサンプル・アプリケーションのセットを提供します。MCUXpresso SDKには、RTOSカーネルとデバイス・スタック、および迅速な開発をサポートするさまざまなミドルウェアも含まれています。

ホスト・マシンで使用されているOSに応じて、デモの作成および展開の方法が異なります。

詳細な手順については、以下のオプションを選択してください。

セキュリティと整合性

セキュリティと整合性

CAAMモジュールの例

i.MX 8M SoCには、暗号化と復号化のプロセスをハードウェアで高速化するために、CryptoDevを介して使用できる暗号化アクセラレーションおよび保証モジュール (CAAM) が含まれています。CAAMモジュールはSoC上にあるため、i.MX8M EVKボードでも同様にサポートされています。大量のデータを扱う場合や、パフォーマンスが重要なアプリケーションでは、このモジュールを使用することをお勧めします。

速度パフォーマンスの確認

OpenSSLは、セキュリティ・プロトコルのSSL (Secure Sockets Layer) とTLS (Transport Layer Security) を定義するオープン・ソース・プロジェクトです。盗聴を防ぐために安全な情報送信を必要とするアプリケーションで使用できるソフトウェア・ライブラリが含まれています。

OpenSSLには、目的の暗号化アルゴリズムでの暗号化パフォーマンスをテストするspeedコマンドが含まれています。この例で使用されるアルゴリズムは、Cipher Block Chaining (CBC) 動作モードと128ビット・ブロックを備えたAdvanced Encryption Standard (AES) 暗号化アルゴリズムを実装するaes-128-cbcです。

OpenSSLの速度テストは、次のコマンドを使用して確認できます。

# openssl speed -evp aes-128-cbc
    
    Doing aes-128-cbc for 3s on 16 size blocks: 43389139 aes-128-cbc's in 2.99s
    
    Doing aes-128-cbc for 3s on 64 size blocks: 28788614 aes-128-cbc's in 3.00s
    
    Doing aes-128-cbc for 3s on 256 size blocks: 11766741 aes-128-cbc's in 2.99s
    
    Doing aes-128-cbc for 3s on 1024 size blocks: 3674139 aes-128-cbc's in 2.99s
    
    Doing aes-128-cbc for 3s on 8192 size blocks: 495157 aes-128-cbc's in 3.00s
    
    OpenSSL 1.0.2p 14 Aug 2018
    
    built on: reproducible build, date unspecified
    
    options:bn(64,64) rc4(ptr,char) des(idx,cisc,16,int) aes(partial) idea(int) blowfish(ptr)
    
    compiler: arm-poky-linux-gnueabi-gcc -march=armv7ve -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a7 -DL_ENDIAN -DTERMIO -O2 -pipe -g -feliminate-unused-debug-types -Wall -Wa,--noexecstack -DHAVE_CRYPTODEV -DUSE_CRYPTODEV_DIGESTS
    
    The 'numbers' are in 1000s of bytes per second processed. type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
    
    Aes-128-cbc 193627.86k 513839.78k 837089.96k 1048974.64k 1130986.42k
    

ソリューション:ドキュメント「AN12838 CAAMセキュリティ・キーを使用した公開鍵暗号の強化」のセクション5.2.1および5.2.2で、使用方法の詳細について説明しています。

有線通信

有線通信

i.MXボードでLinuxが実行されている状態で、i.MX SoCに備わる特別な機能を評価できます。このチュートリアルでは、i.MX 8M EVKを使用してLinuxでインターネットに接続する手順を説明します。

  1. ボードのRJ-45コネクタにイーサネット・ケーブルを接続します
  2. ボードをブートし、Linuxプロンプトが表示されるまで待ちます
  3. Linuxプロンプトで、次のコマンドを入力します
    #Log in: root
     # ifconfig eth0
  4. 機能を確認するために、任意のサイトに対してpingを実行します
# ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 

64 bytes from 8.8.8.8: icmp_seq=1 ttl=119 time=4.81 ms 64 bytes 

from 8.8.8.8: icmp_seq=2 ttl=119 time=4.87 ms 64 bytes 

from 8.8.8.8: icmp_seq=3 ttl=119 time=4.94 ms 64 bytes 

from 8.8.8.8: icmp_seq=4 ttl=119 time=4.61 ms

ワイヤレス・コネクティビティ

ワイヤレス・コネクティビティ

パワーマネジメント

パワーマネジメント

PF4210は 、i.MX 8M向けに最適化されたNXPの14チャネル・パワーマネジメントICです。

低消費電力モードへのサスペンドの例

i.MXボードでLinuxが実行されている状態で、i.MX SoCに備わる特別な機能を評価できます。この例では、低消費電力モードへのサスペンドと、通常の動作に戻す方法を示します。

次のコマンドを入力して、ボードのウェイクアップ・ソースとしてシリアルTTYを有効にします。

パス:

# echo enabled > /sys/class/tty/ttymxc0/power/wakeup

次のコマンドを入力して、Suspend-To-RAMモードに入ります。

# echo mem > /sys/power/state

    PM: suspend entry (deep) 
    
    PM: Syncing filesystems ... done. 
    
    Freezing user space processes ... (elapsed 0.001 seconds) done. 
    
    OOM killer disabled. 
    
    Freezing remaining freezable tasks ... (elapsed 0.000 seconds) done. 
    
    Suspending console(s) (use no_console_suspend to debug)
    

SW1701スイッチを押して、ボードをウェイクアップします。ターミナルに次のメッセージが表示されます。

HIFsuspendwow TODO 
PM: suspend devices took 0.112 seconds Disabling non-boot CPUs ... 
CPU1: shutdown 
psci: CPU1 killed. 
CPU2: shutdown 
psci: CPU2 killed. 
CPU3: shutdown 
psci: Retrying again to check for CPU kill 
psci: CPU3 killed. 
Enabling non-boot CPUs ... 
Detected VIPT I-cache on CPU1 
GICv3: CPU1: found redistributor 1 region 0:0x00000000388a0000 
CPU1: Booted secondary processor [410fd034] 
cache: parent cpu1 should not be sleeping CPU1 is up Detected VIPT I-cache on CPU2 
GICv3: CPU2: found redistributor 2 region 0:0x00000000388c0000 
CPU2: Booted secondary processor [410fd034] 
cache: parent cpu2 should not be sleeping CPU2 is up Detected VIPT I-cache on CPU3 
GICv3: CPU3: found redistributor 3 region 0:0x00000000388e0000 
CPU3: Booted secondary processor [410fd034] 
cache: parent cpu3 should not be sleeping 
CPU3 is up 
PM: resume devices took 0.028 seconds 
OOM killer enabled. 
Restarting tasks ... done. 
PM: suspend exit 

オーディオ

オーディオ

シンプルなオーディオの例

このシンプルなオーディオの例は、audiotestsrcalsasinkの間のリンクを示しています。

i.MX 8M EVKボードのオーディオ・ジャックにイヤホンを接続します。

イヤホンにマイク機能(4つの接点を持つTRRS)が付いている場合は、マイク・ジャックを最後まで押し込まないでください。1つの接点リングを外側に残します。

#aplay -1

**** List of PLAYBACK Hardware Devices ****

card 0: imxspdif [imx-spdif], device 0: S/PDIF PCM snd-soc-dummy-dai-0 [S/PDIF PCM snd-soc-dummy-dai-0]
Subdevices: 1/1 
Subdevice #0: subdevice #0 
card 2: wm8524audio [wm8524-audio], device 0: HiFi wm8524-hifi-0 
[] 
Subdevices: 1/1 
Subdevice #0: subdevice #0 
card 2: wm8524audio [wm8524-audio], device 1: HiFi-ASRC-FE (*) 
[] 
Subdevices: 1/1 
Subdevice #0: subdevice #0 
# gst-launch-1.0 audiotestsrc ! alsasink device=plughw:2 
Setting pipeline to PAUSED ... 
Pipeline is PREROLLING ... 
Redistribute latency... 
Pipeline is PREROLLED ... 
Setting pipeline to PLAYING ... 

New clock: GetAudioSinkClock

イヤホンで音が聞こえるはずです。

音を確認したら、キーボードの [Ctrl+C] を押してコマンド・ラインを終了します。

このシンプルなオーディオの例は、audiotestsrcalsasinkの間のリンクを示しています。

i.MX 8M EVKボードのオーディオ・ジャックにイヤホンを接続します。

ビデオ・オーディオのデコーダの例

この例は、ビデオ・ファイルからオーディオだけをデコードする方法を説明します。SDカードのrootfsパーティションの/home/root/にビデオ・ファイルをコピーし、SDカードからボードをブートして、次のコマンドを実行します。

注:Big Buck Bunnyのサイトから、例で使用されているファイルを無料で入手できます。

# gplay-1.0 SampleVideo_1280x720_2mb.mp4

FSL_GPLAY2_01.00_LINUX build on Mar 12 2018 11:48:19

Set VideoSink kmssink
          
Set TextSink fakesink ====== AIUR: 4.3.4 build on Mar 12 2018 11:47:35. ======
          
Core: AVI_PARSER_03.05.29 build on Aug 31 2017 09:15:57
          
file: /usr/lib/imx-mm/parser/lib_avi_parser_arm_elinux.so.3.1
          
Track 00 [video]: Disabled
          
Codec: 4, SubCodec: 1
          
-----------------------
          
------------------------ Track 01 [audio_0] Enabled
          
Duration: 0:09:56.424000000
          
Language: und
          
Mime: audio/mpeg, mpegversion=(int)1, channels=(int)2, rate=(int)48000, bitrate=(int)0
          
codec_data=(buffer)014d401fffe10017674d401fda014016ec0440000003004000000c83c60ca801000468ef3c80
          
------------------------
          
====== BEEP: 4.3.4 build on Mar 12 2018 11:47:45. ======
          
Core: MP3 decoder Wrapper build on Jan 11 2018 10:20:25
         
file: /usr/lib/imx-mm/audio-codec/wrap/lib_mp3d_wrap_arm_elinux.so.3
          
CODEC: BLN_MAD-MMCODECS_MP3D_ARM_02.13.01_ARMV8 build on Jan 11 2018 10:05:45. [Stop (No Repeated)][Vol=1.0][00:00:00/00:09:56]=========== fsl_player_play()=========== FSL_GPLAY2_01.00_LINUX build on Mar 12 2018 11:48:19
          
[h]display the operation Help
          
[p]Play
          
[s]Stop
          
[e]Seek
          
[a]Pause when playing, play when paused
          
[v]Volume
          
[m]Switch to mute or not
          
[>]Play next file
          
[ [r]Switch to repeated mode or not
          
[u]Select the video track
          
[d]Select the audio track
          
[b]Select the subtitle track
         
[f]Set full screen
         
[z]resize the width and height
          
[t]Rotate
          
[c]Setting play rate
          
[i]Display the metadata
          
[x]eXit
          
State changed: buffering
          
State changed: playing
          
[Playing (No Repeated)][Vol =1.0][00:00:13/00:00:13]EOS Found
          
getNextItem No next item!
         
No more media file, exit gplay!
         
State changed: stopped
          
Exit display thread
          
FSL_PLAYER_UI_MSG_EXIT
          
fsl_player_deinit
    

ディスプレイとグラフィックス

ディスプレイとグラフィックス

カメラ・インターフェース

カメラ・インターフェース

機械学習

機械学習

機械学習 (ML) は一般的に、人間が生み出した抽象概念の分類、認識、予測が求められる用途に幅広く対応します。画像認識、ジェスチャー認識、異常検出、音声のテキスト変換、テキストの音声変換、ASR、情景認識など、多くの例が挙げられます。ここでは、特に画像やビデオのストリームに適用されるNXP MLツールに焦点を当てます。オーディオのセクションで、ここに含まれるサンプルを参照している場合があります。

デバイス管理とセキュアOTA

デバイス管理とセキュアOTA

機械学習 (ML) は一般的に、人間が生み出した抽象概念の分類、認識、予測が求められる用途に幅広く対応します。画像認識、ジェスチャー認識、異常検出、音声のテキスト変換、テキストの音声変換、ASR、情景認識など、多くの例が挙げられます。ここでは、特に画像やビデオのストリームに適用されるNXP MLツールに焦点を当てます。オーディオのセクションで、ここに含まれるサンプルを参照している場合があります。

Minicomチュートリアル

シリアル通信コンソールの設定

Linuxホスト・マシンのコマンド・プロンプトで、次のコマンドを実行してポート番号を確認します。

$ ls /dev/ttyUSB* 

数字の小さい方がArm® Cortex®-A53コアの番号、大きい方がArm® Cortex®-M4コアの番号です。

Minicom

次のコマンドを使用して、シリアル通信プログラム(例:minicom)をインストールし、実行します。

  1. Ubuntuパッケージ・マネージャを使用してMinicomをインストールします。
     $ sudo apt-get install minicom 
  2. 前に確認したポート番号を使用して、コンソール・ウィンドウでMinicomを起動します。
    $ sudo minicom /dev/ttyUSB* -s 
  3. Minicomを図3のように設定します GS-MCIMX7SABRE-MINICOM
  4. 次のステップは、HDMIケーブルの接続です。

Tera Termチュートリアル

シリアル通信コンソールの設定

i.MX8MQuadのFTDI USBシリアル・チップは、2つのシリアル・ポートを列挙します。これらのポートをCOM9COM10とします。小さい番号のポート (COM9) はArm® Cortex®-A53からのシリアル・コンソール通信用で、大きい番号のポート (COM10) はArm® Cortex®-M4コア用です。Serial-to-USBドライバは、FTDIチップ・ドライバから入手できます

Tera Term

オープン・ソースのターミナル・エミュレーション・アプリケーションです。このプログラムは、NXP開発プラットフォームの仮想シリアル・ポートから送信された情報を表示します。

  1. Tera Termをダウンロードします。ダウンロードしたら、インストーラを実行し、このウェブページに戻って手順を続行します。
  2. TeraTermを起動します。初めて起動する際には、次のダイアログが表示されます。シリアル・オプションを選択します。ボードが接続されている場合は、COMポートが自動的にリスト内に表示されます。Tera-Term-Connection
  3. 事前に確認したCOMポート番号を使用して、シリアル・ポートをボーレート1152008データ・ビット、パリティなし、1ストップ・ビットに設定します。この設定は[Setup(セットアップ)]>[Serial Port(シリアル・ポート)]から行うことができます。
  4. 接続が確立されているか検証します。確立されている場合、Tera Termのタイトル・バーに以下のように表示されます。Tera-Term-Console
  5. 次のステップは、HDMIケーブルの接続です。

PuTTYチュートリアル

シリアル通信コンソールの設定

i.MX8MQuadのFTDI USBシリアル・チップは、2つのシリアル・ポートを列挙します。これらのポートをCOM9COM10とします。小さい番号のポート (COM9) はArm® Cortex®-A53からのシリアル・コンソール通信用で、大きい番号のポート (COM10) はArm® Cortex®-M4用です。Serial-to-USBドライバは、FTDチップ・ドライバから入手できます

PuTTYは、広く利用されているターミナル・エミュレーション・アプリケーションです。このプログラムは、NXP開発プラットフォームの仮想シリアル・ポートから送信された情報を表示します。

  1. PuTTYをダウンロードします。ダウンロードしたら、インストーラを実行し、このウェブページに戻って手順を続行します。
  2. 選択したダウンロードのタイプに応じて、ダウンロードした実行ファイルをダブルクリックするか、[Start(スタート)]メニューから選択して、PuTTYを起動します。
  3. 起動後に表示されるウィンドウで設定を行います。[Serial(シリアル)]ラジオ・ボタンを選択し、前に確認したCOMポート番号を入力します。ボーレートもあわせて指定します。今回は「115200」を入力します。

  4. PUTTY-Configuration
  5. [Open(開く)]をクリックして、シリアル接続を確立します。ボードが接続されていて、正しいCOMポートが入力されていれば、ターミナル・ウィンドウが開きます。設定が正しくない場合は、アラートが表示されます。
  6. 次のステップは、HDMIケーブルの接続です。

設計・リソース

サポート

トレーニング

次の段階に進むために、以下で適切な課題を見つけましょう。不明な点がある場合は、NXPサポートにお問い合わせください。

トレーニング 説明
I.MX 8Mトレーニング この製品に関するNXPのオンデマンド・トレーニング、ハウツー・ビデオ、およびウェビナーの全リスト。

フォーラム

NXPのいずれかのコミュニティ・サイトで、他のエンジニアとつながり、i.MX 8Mを使用した設計に関する専門的なアドバイスを受けることができます。

製品フォーラム:

ソフトウェア・フォーラム: