このページでは

C

NXP i.MX RT1170 (MIMXRT1170-EVKB) 評価キット

このトピックでは、NXP のi.MX RT1170に関するボード固有の情報を提供します。「はじめに」の手順に従って開発環境を設定済みであることを前提としています。

ボードの機能

  • 1GHzのARM Cortex-M7コアと400MHzのCortex-M4コアを搭載したMIMXRT1176DVMAA MCU
  • 5.5インチ、720×1280ピクセルのTFT LCDタッチディスプレイ
  • 2 MBの内部SRAM(Cortex-M7用TCM 512 KB、Cortex-M4用TCM 256 KB)
  • 16 MBのHyper Flash
  • 512 Mbitの外部SDRAM
  • AVBおよびTSN対応の2 x Gb ENET

対応カラー深度

このボードのリファレンスポートは、32bppの色深度に対応しています。また、ItemLayer APIを使用すれば16bppおよび24bppにも対応していますが、QUL_COLOR_DEPTHでは対応していません。詳細については、「色深度」を参照してください。

対応ディスプレイ

リファレンスポートは、RK055HDMIPI4MRK055HDMIPI4MA0 の2つのディスプレイに対応しています。RK055HDMIPI4MA0 ディスプレイは新しいモデルで、現在NXP で販売されていますが、RK055HDMIPI4M は販売終了となっています。これらのディスプレイの仕様は概ね同じですが、TFTドライバなどの重要なコンポーネントが異なるため、それぞれ固有の初期化値と関数呼び出しが必要です。

あらかじめビルド済みのライブラリおよびバイナリでは、デフォルトでRK055HDMIPI4MA0 が有効になっています。旧型のディスプレイモデルをお持ちで、それを使用したい場合は、Qt Quick Ultraliteのインストールディレクトリ内のplatform/boards/nxp/mimxrt1170-evkb-freertos/platform_config.h.in にあるUSE_MIPI_PANEL の定義をMIPI_PANEL_RK055AHD091 に変更し、Qt Quick Ultralite (Platform)ライブラリを再コンパイルする必要があります。 新しい表示モデルのサポートを復元するには、USE_MIPI_PANEL の定義をMIPI_PANEL_RK055MHD091 に戻し、ライブラリを再コンパイルしてください。

カスタムレイヤーの要件

この NXP i.MX RT1170 Evaluation Kit には、グラフィックス・ハードウェア・レイヤーのサポートが含まれています。Qt for MCUs はこのボード上のハードウェア・レイヤーをサポートしていますが、期待通りの結果を得るためには、以下の要件が満たされていることを確認してください。

  • レイヤーは表示領域の境界を超えてはなりません。無効な位置が指定された場合、可能な限り近い位置が計算され、代わりに使用されます。Qt for MCUs では、レイヤーが表示領域内に収まるよう、以下の計算式を使用します。
    • 0 < x + layer.width < display.width
    • 0 < y + layer.height < display.height

    注: レイヤーのサイズが少なくとも一方向で表示サイズを超える場合 、そのレイヤーは初期化されず、表示されません。そのような場合、レンダリングリソースの消費を防ぐため、フレームバッファ用のメモリは割り当てられません。

さらに、このプラットフォームにおけるハードウェアレイヤーのサポートには、以下の制限があります:

  • レイヤーのsize およびz の順序は、初期化後は固定され、実行時に変更することはできません。
  • 要求されたz の順序がすでに使用されている場合、次に利用可能なより大きな値が採用されます。Qt for MCUs は、より大きな値が利用できない場合、0から順に次に利用可能な値を検索します。
  • 作成できるレイヤーの最大数は 8 つです。
  • 現時点では、レイヤーのグローバルなopacity はサポートされていません。レイヤーの不透明度を変更するには、レイヤーのフレームバッファのアルファチャンネルを使用してください。
  • NXP i.MX RT1170 ハードウェアスプライトはサポートされていません。この制限を克服するため、Qt for MCUsSpriteLayer のソフトウェア実装を提供しています。これは、SpriteLayer の子要素に対してオフセット位置を提供し、opacity およびenabled プロパティをそれらに伝播します。SpriteLayerwidthheight 、およびz プロパティは無視されます。

回転された画像の最適化

Vivante Imaging Engine でのキャッシュ使用を最適化するために、ImageFiles.MCU.resourceOptimizeForRotationプロパティを使用して、回転された画像に対してタイル形式を有効にすることができます。回転された画像にタイル形式を使用することで、単一のテクスチャのレンダリング時間を大幅に短縮できます。

リソースに属するすべてのテクスチャについて、フォーマット変換は実行時に実行されます。変換されたテクスチャは、SDRAM内の「preprocess cache」というセクションに格納されます。

キャッシュの最小サイズは、回転用に最適化された画像の中で最大のもののサイズとなります。キャッシュの最適なサイズは、同時に表示されるすべての回転最適化済み画像を格納できるようなサイズです。キャッシュが満杯になった場合、アクセス時間が最も古いテクスチャが解放されます。

テクスチャのプリプロセスキャッシュサイズの設定

CMake を使用する場合

キャッシュサイズは、QUL_PREPROCESS_CACHE_SIZE プロパティで設定します。

cmake [...] -DQUL_PREPROCESS_CACHE_SIZE=1M

CMakeを使用しない場合

キャッシュサイズは、グローバルリンカーシンボルを作成することで設定されます。

GCC
--config_def __qul_preprocess_cache_size__=1M
IAR
-Xlinker --defsym=__qul_preprocess_cache_size__=1M

Monotype Sparkフォントエンジンの使用

ベクターフォントのレンダリングを使用

Monotype Sparkフォントエンジンを使用する場合、実験的な「Qt Quick Ultralite」機能を有効にすることで、テキストのレンダリングにベクターアウトラインを使用できます。これにより、ベクターハードウェアアクセラレーションを利用してフォントを描画します。

ベクターアウトラインを有効にするには、QmlProjectオプションの`MCU.Config.fontVectorOutlinesDrawing`を使用します。Monotype Sparkフォントエンジンの使用方法の詳細については、「テキストのレンダリングとフォント」を参照してください。

注:この プラットフォームでは、ベクターフォントのレンダリングをサポートするためにテキストキャッシュが必要です。これはデフォルトでQUL_DIR/platform/boards/nxp/mimxrt1170-evkb-freertos/cmake/coreLibrary.cmake

パフォーマンスに関する考慮事項

最高のパフォーマンスを得るためには、MCU.Config.fontCacheSize を設定することを推奨します。

あらかじめ用意されたデモとサンプル

このボード用の NXP i.MX RT1170 Evaluation Kit ボード用のパッケージには、以下のあらかじめビルド済みのデモおよびサンプルが含まれています:

これらは、demo_images ディレクトリ内にあります。

デバッグメッセージの読み取り

デフォルトでは、qul_printf およびQul::PlatformInterface::log の呼び出しによる出力は、USB 経由でホストマシン上に公開される仮想シリアルポートにリダイレクトされます。

JTag によるデバッグ

MIMXRT1170-EVKB上でアプリケーションコードをデバッグするには、ボードのJTagポートにハードウェアデバッガを接続し、こちらからJ-Linkソフトウェアをインストールする必要があります。

J5~J8ピン(JTagソケットの下)は無効化する必要があります。

警告: J5~J8ピンを無効にすると 、DAP-Link経由でのフラッシュ書き込みができなくなります。DAP-Linkを再度使用する前に、これらのピンを再度有効にする必要があります。

  • gdb サーバーを起動します
    JLinkGDBServer -endian little -noir -speed auto -port 2331 -vd -device MIMXRT1176xxxA_M7 -if SWD -halt -reportuseraction -JLinkScriptFile evkbmimxrt1170_connect_cm4_cm7side.jlinkscript
  • 別のコンソールでarm-none-eabi-gdb を実行する
    c:\path\to\bin\arm-none-eabi-gdb.exe path\to\compiled.elf -ex "target remote localhost:2331"
    (gdb) monitor reset halt
    (gdb) continue

    注: gdb コマンドの「monitor reset」でデバイスがリセットされない場合は 、「load」コマンドを使用してください。JLink スクリプトファイルは SDK パッケージに同梱されています。

利便性のため、MCUXpresso IDE に含まれる Redlink ツールを指す環境変数を設定することができます。

export REDLINK=$MCUXPRESSO_IDE_PATH/ide/LinkServer/binaries/crt_emu_cm_redlink
set REDLINK=%MCUXPRESSO_IDE_PATH%\ide\LinkServer\binaries\crt_emu_cm_redlink

ここで、MCUXPRESSO_IDE_PATH は、MCUXpresso IDE のインストールディレクトリを指す環境変数です。

注: MCUXpresso IDE のバージョンが 11.8 以前の場合 crt_emu_cm_redlink バイナリは IDE 自体にインストールされており、<MCUXPRESSO_IDE_PATH>/ide/binaries/crt_emu_cm_redlink からアクセスできます。

  • USBケーブルをボード(J11)とホストPCに接続します。ターミナルウィンドウを開き、次のコマンドを実行します:
    %REDLINK% --server :50032 --mi -2 -vc -p MIMXRT1176xxxxx --ConnectScript RT1170_connect_M7_wake_M4.scp --resetscript RT1170_reset.scp -x .\platform\boards\nxp\mimxrt1170-evkb-freertos\cmake

    これで、GDBサーバーはポート50032 でTCP接続を待機する状態になります。

    注: redlink_server が使用するTCPポートを変更するには --server :50032 を別の値に変更してください。

  • 別のコンソールで `arm-none-eabi-gdb ` を実行してください。
    /path/to/bin/arm-none-eabi-gdb <PATH_TO>/your_app.elf
    C:\path\to\bin\arm-none-eabi-gdb.exe <PATH_TO>\your_app.elf
  • arm-none-eabi-gdb コンソールの「gdbserver 」を使用して、以下のコマンドでターゲットに接続します。
    (gdb) target remote :50032
  • あるいは、arm-none-eabi-gdb コンソールから次のコマンドを使用して、ターゲットデバイスにフラッシュを実行します:
    (gdb) load

特定の Qt ライセンスの下で利用可能です。
詳細はこちら。