このページでは

C

NXP (ベアメタルおよびFreeRTOS )で始める

概要

このトピックでは、Qt Quick Ultralite でサポートされているNXP プラットフォームで作業を開始するために必要なすべての情報を提供します。

注意: これらの説明は、BareMetal またはFreeRTOS 上で実行されるNXP ターゲットを使用している場合に適用されます。Linux またはZephyr® 上で動作するNXP ターゲットを使用する方法については、 NXP (Linux)および NXP (Zephyr) を参照してください。

前提条件のインストール

開発環境をセットアップする前に、前提条件がすべてインストールされていることを確認してください。

開発環境のセットアップ

Qt Creator IDE(BareMetal およびFreeRTOS )の設定

Qt Creator IDEを使用してMCU向けに開発するには、MCUプラグインが必要です。Qt Online InstallerQt for MCUs SDKをインストールするとデフォルトで有効になります。

MCU上でアプリケーションをビルドして実行するには、キットを作成する必要があります:

  1. Edit > Preferences > SDKs > MCU を選択してください。

    注: MCU タブが表示されない場合は、Help > About Plugins を選択してプラグインを有効にし、 を再起動してください。 Qt for MCUsプラグインを有効にし、Qt Creator を再起動して変更を適用します。

  2. まだ設定されていない場合は、Qt for MCUs のインストール・ディレクトリへのパスを指定します。

    Qt Creator を使用して NXP ターゲット用の SDK を作成します。

  3. を選択します。 Target supported by the Qt for MCUs SDK.例えば Qt for MCUs 2.12.0 - MIMXRT1170-EVKB-FREERTOS 32BPP.
  4. Requirements セクションで、プラットフォーム固有の要件が満たされていることを確認します。
  5. キットを自動的に作成するには、Automatically create kits for all available targets on start を選択します。

    注: Create Kit およびUpdate Kit を使用して、手動でキットを作成/更新することもできます。

  6. 自動的にキットを作成する場合は、Apply を選択し、Qt Creator を再起動します。

CMake 変数の設定

コマンドプロンプトから開発環境を設定することもできます。NXP ボード用のアプリケーションを開発する際にQt Quick Ultralite で CMake を使用する方法の詳細については、 NXP ボード用の CMake マニュアルを参照してください。

ファームウェアのフラッシュ (BareMetal およびFreeRTOS)

NXP ボードのフラッシュとデバッグには、ボードに OpenSDA ファームウェアが必要です。不正なファームウェアがフラッシュされた場合、ツールはデバイスとの接続を確立できない可能性があります。

ファームウェアをチェックするには、デバイスを開発ホストに接続し、提供された USB ストレージ・デバイスを開きます。DETAILS.TXT ファイルで、"USB Interfaces "で始まる行を探してください。そこには "CDC "と "HID "が記載されていなければなりません。これらがない場合、おそらく間違ったファームウェアを使用しています。

NXP ファームウェアをダウンロードします。ダウンロードページでボードの種類を選択し、"Default firmware application, DAPLink "をダウンロードしてください。NXP 、CDCとHIDインターフェースが表示されるはずです。

ビルド済みQt Quick Ultraliteライブラリを使ったアプリケーションのビルド

Qt Creator IDEを使用したアプリケーションのビルド

  1. ビルドしたいサンプルの CMake プロジェクトファイルを開きます。
  2. Configure Project ウィンドウで
    1. 適切なキットを選択します。例えば Qt for MCUs 2.12.0 - MIMXRT1170-EVKB-FREERTOS 32BPP.
    2. Configure Project を選択します。

Qt Creatorを使用して、NXPターゲット用のMCUプロジェクトを設定します。

プロジェクトが設定されたら、Run を選択するか、キーボードのCtrl+rを押してバイナリをビルドし、ターゲットにフラッシュします。

コマンド・プロンプトを使用したアプリケーションのビルド

ベアメタルとFreeRTOS

以下の例は、MIMXRT1170-EVKB 用のminimal サンプルの構築方法を示しています。

QUL_ROOT およびQUL_TOOLS は、以下のコマンドラインの例では環境変数として設定されているかのように使用されます。例えば

export QUL_ROOT=$HOME/Qt/QtMCUs/2.12.0
export QUL_TOOLS=$HOME/Qt/Tools/QtMCUs
set QUL_ROOT=C:\Qt\QtMCUs\2.12.0
set QUL_TOOLS=C:\Qt\Tools\QtMCUs
cd $QUL_ROOT/examples/minimal
mkdir build
cd build
cmake .. -G "Ninja" -DCMAKE_BUILD_TYPE=MinSizeRel -DQul_ROOT=$QUL_ROOT -DCMAKE_TOOLCHAIN_FILE=$QUL_ROOT/lib/cmake/Qul/toolchain/armgcc.cmake -DQUL_TARGET_TOOLCHAIN_DIR=$QUL_TOOLS/arm_gcc_12_3_1 -DQUL_BOARD_SDK_DIR=$QUL_TOOLS/NXP/SDK_2_15_0_MIMXRT1170-EVKB -DQUL_PLATFORM=MIMXRT1170-EVKB-freertos -DMCUXPRESSO_IDE_PATH=/path/to/the/MCUXpressoIDE -DFREERTOS_DIR=$QUL_TOOLS/NXP/SDK_2_15_0_MIMXRT1170-EVKB/rtos/freertos/freertos-kernel
cmake --build .
cd %QUL_ROOT%\examples\minimal
mkdir build
cd build
cmake .. -G "Ninja" -DCMAKE_BUILD_TYPE=MinSizeRel -DQul_ROOT=%QUL_ROOT% -DCMAKE_TOOLCHAIN_FILE=%QUL_ROOT%\lib\cmake\Qul\toolchain\armgcc.cmake -DQUL_TARGET_TOOLCHAIN_DIR=%QUL_TOOLS%\arm_gcc_12_3_1 -DQUL_BOARD_SDK_DIR=%QUL_TOOLS%\NXP\SDK_2_15_0_MIMXRT1170-EVKB -DQUL_PLATFORM=MIMXRT1170-EVKB-freertos -DMCUXPRESSO_IDE_PATH=C:\path\to\the\MCUXpressoIDE -DFREERTOS_DIR=%QUL_TOOLS%\NXP\SDK_2_15_0_MIMXRT1170-EVKB\rtos\freertos\freertos-kernel
cmake --build .

minimal サンプル・アプリケーションのビルドに成功したら、以下のコマンドを使用してフラッシュします:

cmake --build . --target flash_minimal

他のアプリケーションにも同じ手順が適用されます。

デバッグ

デバッグメッセージの読み込み

デフォルトでは、qul_printfQul::PlatformInterface::log 呼び出しの出力は、USB経由でホスト・マシンに公開されている仮想シリアル・ポートにリダイレクトされる。

JTagによるデバッグ

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

注: 以下のコマンド例では、MIMXRT1170-EVKB ボードを使用しています。他のNXP ボードに関する詳細は、ボード別情報のリンクを参照してください。

JTagでデバッグする場合は、ジャンパJP5を有効にする必要があります。

警告 ジャンパーJP5を有効にすると、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

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

注: この方法は、MCUXpresso IDE v11.8.0が必要です。

便宜上、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に接続します。ターミナルウィンドウを開き、以下のコマンドを実行します。

    注: 以下のコマンド例では、MIMXRT1170-EVKB ボードを使用しています。他のNXP ボードに関する詳細は、ボード別情報のリンクを参照してください。

    GDBサーバーは、現在リッスン中です。
    $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
    %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

ボード固有の情報

BareMetal またはFreeRTOS 上で現在サポートされているNXP ターゲットを以下に示します。Qt Quick Ultralite でサポートされているすべてのターゲットに関する詳細は、サポートされているターゲットボードと開発ホストを参照してください。

階層 1: 参照ターゲット

ハードウェアボードMCUコンパイラオペレーティング・システム
mimxrt1050-evkbmimxrt1052dvl6bGNU Arm GCC 12.3.rel1、IAR Build Tools for Arm V9.40ベアメタル FreeRTOS
MIMXRT1064-EVKMIMXRT1064DVL6AGNU Arm GCC 12.3.rel1、IAR Arm V9.40用ビルドツールFreeRTOS
mimxrt1170-evkbミムザート1176DVMAAGNU Arm GCC 12.3.rel1、IAR ビルドツール (Arm V9.40)FreeRTOS

階層 2: 検証済みターゲット

ハードウェアボードMCU / MPUコンパイラオペレーティング・システム
mimxrt1060-evkbmimxrt1060dvl6b mcuGNU Arm GCC 12.3.rel1、IAR Build Tools for Arm V9.40ベアメタル

リソースキャッシュポリシー

デフォルトでは、アプリケーションのリソース・データは起動時に SDRAM にコピーされます。これらのリソースをフラッシュに保持し、起動時に RAM にロードしないようにするには、qmlproject ファイルに以下の QmlProject オプションを追加します:

MCU.Config {
    resourceCachePolicy: "NoCaching"
}

あるいは、このように個々のイメージに対してのみ有効にすることもできます:

ImageFiles {
    files: [
        "big/button.png"
    ]
    MCU.resourceCachePolicy: "NoCaching"
}


詳細はこちら。