2252735_ja-JP

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

2252735_ja-JP

2252735_ja-JP

MCUXpresso IDEにおけるITMとUART出力

1. はじめに

組み込みシステムの開発において、デバッグとログ出力は、コードの正しさを保証しパフォーマンスを最適化するために不可欠です。システムの状態をリアルタイムで監視し、異常動作を捉え、重要なデータを記録することで、開発者は問題の特定や機能の検証を迅速に行うことができます。リソースに制約のある組み込み環境では、適切なデバッグツールや手法を選択することが開発効率に大きな影響を与えます。

NXP が発売した高性能マイクロコントローラ MCXN947 は、複数のデバッグおよびログ記録ソリューションを提供しますが、その中で最もよく使用されるのは ITM (Instrumentation Trace Macrocell) と UART 印刷です。ITM は Cortex-M コアのデバッグ機能を活用して、デバッグ インターフェースを介して高速でデータを送信し、厳格なリアルタイム要件のあるシナリオに適しています。一方、UART 印刷は、UART ペリフェラルを介してログを出力するため、汎用性が高く、生産環境に適しています。

この記事では、MCUXpresso IDEにおいてこれら2つの出力手法の使い方を解説し、開発効率とシステムの信頼性を向上させる方法を説明します。


2. ITMおよびUART印刷の原理と特徴

2.1 ITM -原理と特徴

動作原理:
ITM(Instrumentation Trace Macrocell)は、Cortex-Mコアが提供するデバッグ機能です。SWOを用いてデバッグ・インターフェース(例:SWD/JTAG)を通じてリアルタイムでデータを送信します。開発者はITM_SendChar()関数を使用してデバッグ情報をITMポートに送信し、送信されたデータはデバッガによって取得され、IDEのデバッグコンソールに表示されます。

メリット:

  • 高速伝送:ITMはデバッグ・インターフェースの帯域幅を使用するため、UARTよりもはるかに高速です(通常10Mbps以上)。
  • 低いCPUオーバーヘッド:ITMはハードウェアによって処理されるため、CPUリソースをほとんど消費しません。
  • 追加のペリフェラルが不要:UARTやその他のペリフェラルに依存しないため、ハードウェアリソースを節約できます。

デメリット:

  • デバッガ依存:デバッガ接続(MCU-LinkやJ-Linkなど)が必要であり、実稼働環境では直接使用できません。
  • 設定が複雑:適切なITMポートとデバッガの設定が必要であり、初心者には難しい場合があります。

2.2 UART出力 – 原理と特徴

動作原理:
UART出力は、UARTペリフェラルを介してデバッグ情報をシリアル端末に送信します。開発者は通常、printf関数をUARTにリダイレクトすることでログ出力用の標準ライブラリ関数を有効にします。データはTX/RXピンを通じて送信され、シリアルツール(例:PuTTY、Tera Term)を使用してPCで閲覧できます。MCUXpresso IDEには、UARTデバッグ用のターミナルも統合されています。

メリット:

  • 高い汎用性:ほとんどの組み込みボードがUARTをサポートしているため、幅広い用途に使用できます。
  • 本番対応: デバッガを必要とせず、実稼働環境でそのまま使用できます。
  • 実装が容易:設定が簡単で、初心者や迅速なプロトタイプ作成に最適です。

デメリット:

  • 低速: UARTボーレートによって制限されるため、伝送効率が低下します。
  • 周辺リソースの使用: UARTペリフェラルとピンを占有し、他の機能に影響を与える可能性があります。
  • リアルタイムパフォーマンスが低い:割り込み遅延やボーレートの制約があるため、リアルタイム性が要求される場面には適していません。

2.3 比較のまとめ

以下の表は、ITMとUART出力の主な特徴をまとめたものです。

特長 ITM UART印刷
伝送速度 高速(10 Mbps以上) 低速(一般的に115200 bps)
CPUオーバーヘッド より高い
ペリフェラル依存 なし UARTペリフェラル & ピンが必要です
デバッガ依存 必須 不要
生産適合性 適していません 適している
設定の複雑さ 複雑な シンプル
リアルタイムのパフォーマンス ハイ

使用シナリオ:

  • ITM:リアルタイム性が高く要求される開発段階(モータ制御や信号処理など)のデバッグに最適です。
  • UART出力:実稼働時のログ取得、初心者向けの設定、一般的なデバッグ用途に適しています。

3. MCUXpresso IDEでの実装手順

3.1 ITM出力を使用する

ハードウェア要件:チップのSWOピンがデバッガのSWOインターフェースに接続されていることを確認します。

Alice_Yang_0-1764645814612.png

ソフトウェアの設定:

1) 新規プロジェクト作成時に、「Redirect printf/scanf to ITM」を選択して printf/scanf をITMにリダイレクトします。

 Alice_Yang_2-1764645837570.png

2) Traceクロックを設定します。

Alice_Yang_3-1764645858437.png
/*!< Switch TRACE to TRACE_DIV */
CLOCK_AttachClk(kTRACE_DIV_to_TRACE);
/*!< Set up dividers */
/*!< Set TRACECLKDIV divider to value 3 */
CLOCK_SetClkDiv(kCLOCK_DivTraceClk, 3U);
 
 3)MCUXpresso IDEでSWO ITM Console を開き、Core Clock と Trace Clock の設定を行います。
 

Alice_Yang_6-1764646048650.png 

Alice_Yang_7-1764646056186.png

Alice_Yang_8-1764646066673.png

Alice_Yang_9-1764646097086.pngAlice_Yang_10-1764646101638.png

4)ITMコンソールで出力結果を確認します。

Alice_Yang_11-1764646126756.png


3.2 UART出力を使用する

1)新しいプロジェクトを作成する際は、SDKデバッグコンソールをUARTに設定し、デバッグコンソールでUARTを使用するように構成します。

        Alice_Yang_12-1764646136052.png

2) MCUXpresso IDEのペリフェラルツールを使用して、DebugConsole-UARTを設定します。 Alice_Yang_13-1764646149103.png Alice_Yang_14-1764646156564.png

3) Pinsツールを使用して、UART TX/RXピンを設定します。 Alice_Yang_15-1764646165004.png

4)シリアルハードウェアを接続し、ターミナルで出力結果を確認します。 Alice_Yang_16-1764646174816.png


4. 結論

ITMとUART出力にはそれぞれ利点があります。開発者はプロジェクトの要件に基づいて適切な方法を選ぶべきです。ITMは開発中の高いリアルタイム性が求められるデバッグに適しています。一方で、UART出力は実稼働環境や一般的なデバッグに最適です。

タグ(1)
評価なし
バージョン履歴
最終更新日:
‎01-27-2026 07:33 PM
更新者: