NXP AN14120 Cortex-M ソフトウェアのデバッグ ユーザー ガイド
導入
このドキュメントでは、Microsoft Visual Studio Code を使用した i.MX 8M ファミリ、i.MX 8ULP、および i.MX 93 Cortex-M プロセッサ用のアプリケーションのクロスコンパイル、デプロイ、およびデバッグについて説明します。
ソフトウェア環境
このソリューションは、Linux ホストと Windows ホストの両方に実装できます。このアプリケーション ノートでは Windows PC を前提としていますが、必須ではありません。
このアプリケーション ノートでは、Linux BSP リリース 6.1.22_2.0.0 が使用されています。次のプリビルド イメージが使用されます。
- i.MX 8M Mini: imx-image-full-imx8mmevk.wic
- i.MX 8M Nano: imx-image-full-imx8mnevk.wic
- i.MX 8M プラス: imx-image-full-imx8mpevk.wic
- i.mx 8ulp:imx-image-full-imx8ulpevk.wic
- i.MX 93: imx-image-full-imx93evk.wic
これらのイメージを構築する方法の詳細な手順については、i.MX Linux ユーザー ガイド (ドキュメント IMXLUG) および i.MX Yocto プロジェクト ユーザー ガイド (ドキュメント IMXLXYOCTOUG) を参照してください。
Windows PC を使用している場合は、Win32 Disk Imager を使用して SD カードにプレビルド イメージを書き込みます (https:// win32diskimager.org/) またはバレナ エッチャー (https://etcher.balena.io/)。 Ubuntu PC を使用している場合は、以下のコマンドを使用して SD カードにプレビルド イメージを書き込みます。
$ sudo dd if=.wic of=/dev/sd bs=1M status=progress conv=fsync
注記: カードリーダーのパーティションを確認し、sd を対応するパーティションに置き換えます。 1.2
ハードウェアのセットアップと機器
- 開発キット:
- NXP i.MX 8MM EVK LPDDR4
- NXP i.MX 8MN EVK LPDDR4
- NXP i.MX 8MP EVK LPDDR4
- NXP i.MX 93 EVK 11×11 mm LPDDR4 用 – NXP i.MX 8ULP EVK LPDDR4
- マイクロ SD カード: 今回の実験では、SanDisk Ultra 32-GB Micro SDHC I Class 10 を使用します。
- デバッグポート用の Micro-USB (i.MX 8M) または Type-C (i.MX 93) ケーブル。
- SEGGER J-Link デバッグ プローブ。
前提条件
デバッグを開始する前に、デバッグ環境を適切に構成するには、いくつかの前提条件を満たす必要があります。
PCホスト – i.MXボードのデバッグ接続
ハードウェア デバッグ接続を確立するには、次の手順を実行します。
- USB ケーブルを使用して、DEBUG USB-UART および PC USB コネクタを介して i.MX ボードをホスト PC に接続します。 Windows OS はシリアル デバイスを自動的に検出します。
- デバイス マネージャーの [ポート (COM および LPT)] で、接続されている 2 つまたは 4 つの USB シリアル ポート (COM) を見つけます。ポートの 1 つは Cortex-A コアによって生成されるデバッグ メッセージに使用され、もう 1 つは Cortex-M コアに使用されます。必要な適切なポートを決定する前に、次の点に注意してください。
- [i.MX 8MP、i.MX 8ULP、i.MX 93]: デバイス マネージャーで使用できるポートは 4 つあります。最後のポートは Cortex-M デバッグ用で、最後から 2 番目のポートは Cortex-A デバッグ用です。デバッグ ポートは昇順にカウントされます。
- [i.MX 8MM、i.MX 8MN]: デバイス マネージャーで使用できるポートは 2 つあります。最初のポートは Cortex-M デバッグ用で、2 番目のポートは Cortex-A デバッグ用で、デバッグ ポートは昇順にカウントされます。
- 好みのシリアル ターミナル エミュレータを使用して適切なデバッグ ポートを開きます (例:ample PuTTY) を次のパラメータを設定して作成します。
- 115200 bpsまでの速度
- 8 データビット
- 1 ストップ ビット (115200、8N1)
- パリティなし
- SEGGER デバッグ プローブ USB をホストに接続し、SEGGER J を接続します。TAG i.MX ボード J へのコネクタTAG インターフェース。 i.MXボードJの場合TAG インターフェイスにはガイド付きコネクタがないため、図 1 に示すように、赤いワイヤをピン 1 に合わせることで方向が決まります。
VS コードの構成
VS Code をダウンロードして構成するには、次の手順を実行します。
- 最新バージョンの Microsoft Visual Studio Code を公式からダウンロードしてインストールします。 webサイト。ホスト OS として Windows を使用する場合は、Visual Studio Code メイン ページから [Windows 用のダウンロード] ボタンを選択します。
- Visual Studio Code をインストールした後、それを開いて [拡張機能] タブを選択するか、Ctrl + Shift + X の組み合わせを押します。
- 専用の検索バーに「MCUXpresso for VS Code」と入力し、拡張機能をインストールします。 VS Code ウィンドウの左側に新しいタブが表示されます。
MCUXpresso 拡張構成
MCUXpresso 拡張機能を設定するには、次の手順を実行します。
- 左側のサイドバーからMCUXpresso拡張機能専用タブをクリックします。クイックスタートパネルから、
MCUXpresso インストーラーを開き、インストーラーのダウンロードを許可します。 - すぐにインストーラー ウィンドウが表示されます。 「MCUXpresso SDK Developer」をクリックし、SEGGER JLink 上で「インストール」ボタンをクリックします。インストーラーは、アーカイブ、ツールチェーン、Python サポート、Git、およびデバッグ プローブに必要なソフトウェアをインストールします。
すべてのパッケージがインストールされたら、J-Link プローブがホスト PC に接続されていることを確認してください。次に、プローブが DEBUG PROBES の下の MCUXpresso 拡張機能でも使用できるかどうかを確認します。 view図に示すように
MCUXpresso SDK をインポートする
実行しているボードに応じて、NXP 公式から特定の SDK をビルドしてダウンロードします。 webサイト。このアプリケーション ノートでは、次の SDK がテストされています。
- SDK_2.14.0_EVK-MIMX8MM
- SDK_2.14.0_EVK-MIMX8MN
- SDK_2.14.0_EVK-MIMX8MP
- SDK_2.14.0_EVK-MIMX8ULP
- SDK_2.14.0_MCIMX93-EVK
元恋人を築くにはampi.MX 93 EVK のファイルについては、図 7 を参照してください。
- MCUXpresso SDK リポジトリを VS Code にインポートするには、次の手順を実行します。
- SDK をダウンロードした後、Visual Studio Code を開きます。左側の「MCUXpresso」タブをクリックし、「インストールされたリポジトリ」と「プロジェクト」を展開します。 views.
- [インポート リポジトリ] をクリックし、[ローカル アーカイブ] を選択します。 「アーカイブ」フィールドに対応する「参照…」をクリックし、最近ダウンロードした SDK アーカイブを選択します。
- アーカイブが解凍されるパスを選択し、「場所」フィールドに入力します。
- 「名前」フィールドはデフォルトのままにすることも、カスタム名を選択することもできます。
- 必要に応じて [Git リポジトリの作成] チェックボックスをオンまたはオフにし、[インポート] をクリックします。
元彼をインポートするampファイルアプリケーション
SDK がインポートされると、 インストールされたリポジトリ view.
元をインポートするにはampSDK リポジトリからファイル アプリケーションをダウンロードするには、次の手順を実行します。
- 「インポート例」をクリックしますampプロジェクトの「リポジトリからのファイル」ボタン view.
- ドロップダウン リストからリポジトリを選択します。
- ドロップダウン リストからツールチェーンを選択します。
- ターゲットボードを選択します。
- [demo_apps/hello_world ex] を選択します。amp[テンプレートの選択] リストからファイルを選択します。
- プロジェクトの名前を選択し (デフォルトを使用できます)、パスをプロジェクトの場所に設定します。
- 「作成」をクリックします。
- i.MX 8M ファミリの場合のみ、次の手順を実行します。プロジェクトの下で view、インポートされたプロジェクトを展開します。 「設定」セクションに移動し、mcuxpresso-tools.json をクリックします。 file.
a. 「インターフェース」を追加:「J」TAG「デバッグ」>「segger」の下にある
b。 i.MX 8MM の場合、次の構成を追加します。「device」: 「MIMX8MM6_M4」を「debug」>「segger」の下に追加します。
c. i.MX 8MN の場合、次の構成を追加します。「device」:「MIMX8MN6_M7」を「debug」>「segger」の下に追加します。
d. i.MX 8MP の場合、次の構成を追加します。
「デバイス」: 「デバッグ」>「セガー」の下の「MIMX8ML8_M7」
次のコードは元のコードを示していますampmcuxpresso-tools.json の上記の変更を実行した後の i.MX8 MP の「debug」セクションのファイル:
ex をインポートした後ampファイルのアプリケーションが正常に完了したら、それがプロジェクトの下に表示される必要があります view。また、プロジェクトのソースは、 fileは、エクスプローラー (Ctrl + Shift + E) タブに表示されます。
アプリケーションの構築
アプリケーションをビルドするには、図 9 に示すように、左側の [Build Selected] アイコンを押します。
デバッガ用のボードを準備する
Jを使用するにはTAG Cortex-M アプリケーションをデバッグするには、プラットフォームに応じていくつかの前提条件があります。
- i.MX93の場合
i.MX 93 をサポートするには、SEGGER J-Link のパッチ SDK_MX93_3RDPARTY_PATCH.zip をインストールする必要があります。
注記: このパッチは、過去にインストールされている場合でも使用する必要があります。ダウンロードが完了したら、アーカイブを解凍し、Devices ディレクトリと JLinkDevices.xml をコピーします。 file C:\プログラムへ Files\SEGGER\JLink。 Linux PC を使用する場合、ターゲット パスは /opt/SEGGER/JLink です。- Cortex-M33のみが動作している状態でのCortex-M33のデバッグ
このモードでは、ブート モード スイッチ SW1301[3:0] を [1010] に設定する必要があります。その後、M33 イメージを直接ロードし、デバッグ ボタンを使用してデバッグできます。詳細については、セクション 5 を参照してください。
Cortex-A55 上で実行されている Linux が Cortex-M33 と並行して必要な場合、Cortex-M33 をデバッグするには XNUMX つの方法があります。 - Cortex-A33 が U-Boot にあるときに Cortex-M55 をデバッグする
まず、sdk20-app.bin をコピーします。 file セクション 3 で生成された (armgcc/debug ディレクトリにあります) SD カードのブート パーティションに保存されます。ボードを起動し、U-Boot で停止します。ブート スイッチが Cortex-A をブートするように構成されている場合、ブート シーケンスでは Cortex-M が起動しません。以下のコマンドを使用して手動で開始する必要があります。 Cortex-M が起動していない場合、JLink はコアへの接続に失敗します。
- 注: システムを正常にデバッグできない場合は、MCUXpresso for VS でプロジェクトを右クリックしてみてください。
コードを作成し、「プロジェクトをデバッグするためにアタッチ」を選択します。 - Cortex-A33 が Linux 上にあるときに Cortex-M55 をデバッグする
J と同じピンを使用する UART5 を無効にするには、カーネル DTS を変更する必要があります。TAG インタフェース。
Windows PC を使用する場合、最も簡単なのは、WSL + Ubuntu 22.04 LTS をインストールしてから、DTS をクロスコンパイルすることです。
WSL + Ubuntu 22.04 LTS のインストール後、WSL 上で実行されている Ubuntu マシンを開き、必要なパッケージをインストールします。
これで、カーネル ソースをダウンロードできるようになりました。
UART5 ペリフェラルを無効にするには、linux-imx/arch/arm5/boot/dts/freescale/imx64-93×11-evk.dts で lpuart11 ノードを検索します。 file OK ステータスを無効に置き換えます。
DTS を再コンパイルします。
新しく作成した linux-imx/arch/arm64/boot/dts/freescale/imx93 11×11-evk.dtb をコピーします。 file SDカードのブートパーティションにあります。 hello_world.elf をコピーします file セクション 3 で生成された (armgcc/debug ディレクトリにあります) SD カードのブート パーティションに保存されます。 Linux でボードをブートします。 Cortex-A の起動時にブート ROM が Cortex-M を起動しないため、CortexM を手動で起動する必要があります。
注記: hello_world.elf file /lib/firmware ディレクトリに配置する必要があります。
- Cortex-M33のみが動作している状態でのCortex-M33のデバッグ
- i.MX 8Mの場合
i.MX 8M Plus をサポートするには、SEGGER J-Link のパッチをインストールする必要があります。
iar_segger_support_patch_imx8mp.zip。
ダウンロードが完了したら、アーカイブを解凍し、Devices ディレクトリと
JLinkDevices.xml file JLink ディレクトリから C:\Program へ Files\SEGGER\JLink。 Linux PCの場合
が使用されている場合、ターゲット パスは /opt/SEGGER/JLink です。- Cortex-A が U-Boot にあるときに Cortex-M をデバッグする
この場合、特別なことは何もする必要はありません。 U Boot でボードをブートし、セクション 5 に進みます。 - Cortex-A が Linux 上にあるときに Cortex-M をデバッグする
Cortex-A 上で実行されている Linux と並行して Cortex-M アプリケーションを実行およびデバッグするには、特定のクロックを Cortex-M に割り当てて予約する必要があります。これは U-Boot 内から実行されます。 U-Boot でボードを停止し、以下のコマンドを実行します。
- Cortex-A が U-Boot にあるときに Cortex-M をデバッグする
- i.MX 8ULPの場合
i.MX 8ULP をサポートするには、SEGGER J-Link のパッチ (SDK_MX8ULP_3RDPARTY_PATCH.zip) をインストールする必要があります。
注記: このパッチは、過去にインストールされている場合でも使用する必要があります。
ダウンロード後、アーカイブを解凍し、Devices ディレクトリと JLinkDevices.xml をコピーします。 file C:\プログラムへ Files\SEGGER\JLink。 Linux PC を使用する場合、ターゲット パスは /opt/SEGGER/JLink です。 i.MX 8ULP の場合は、Upower ユニットのため、最初に「VSCode」リポジトリの m33_image を使用して flash.bin をビルドします。 M33 イメージは、{CURRENT REPO}\armgcc\debug\sdk20-app.bin にあります。 flash.bin イメージの構築方法については、SDK_6_xx_x_EVK-MIMX8ULP/docs の EVK-MIMX9ULP および EVK8-MIMX2ULP の MCUX presso SDK 入門のセクション 8 を参照してください。
注記: アクティブな VSCode リポジトリ内の M33 イメージを使用します。そうしないと、プログラムは正しく接続されません。右クリックして「添付」を選択します。
実行とデバッグ
デバッグ ボタンを押した後、デバッグ プロジェクト構成を選択すると、デバッグ セッションが開始されます。
デバッグセッションが開始されると、専用のメニューが表示されます。デバッグ メニューには、ブレークポイントが起動するまで実行を開始する、実行を一時停止する、ステップ オーバー、ステップ イン、ステップ アウト、再起動、停止するためのボタンがあります。
また、ローカル変数、レジスタ値を確認し、式を監視し、コールスタックとブレークポイントを確認することもできます。
左側のナビゲーターにあります。これらの関数領域は「実行とデバッグ」タブの下にあり、MCUXpresso にはありません。
VSCodeの場合。
ドキュメント内のソースコードに関する注意
Exampこのドキュメントに示されているファイル コードには、次の著作権と BSD-3 条項ライセンスがあります。
Copyright 2023 NXP 以下の条件が満たされる場合、修正の有無にかかわらず、ソースおよびバイナリ形式での再配布および使用が許可されます。
- ソース コードを再配布する場合は、上記の著作権表示、この条件リスト、および以下の免責事項を保持する必要があります。
- バイナリ形式で再配布する場合は、上記の著作権表示、この条件リスト、ドキュメント内の次の免責事項を複製する必要があり、および/またはその他の資料を配布物に添付する必要があります。
- 著作権所有者の名前もその貢献者の名前も、書面による事前の特別な許可なしに、このソフトウェアから派生した製品を推奨または宣伝するために使用することはできません。
このソフトウェアは著作権者および寄稿者によって「現状のまま」提供され、商品性および特定目的への適合性の暗黙の保証を含むがこれに限定されない、明示的または黙示的な保証は一切否認されます。いかなる場合においても、著作権所有者または寄稿者は、直接的、間接的、偶発的、特別、例示的、または結果的損害(代替品またはサービスの調達、使用、データ、または利益の損失を含みますがこれらに限定されません)に対して責任を負わないものとします。たとえそのような損害の可能性について知らされていたとしても、本ソフトウェアの使用から何らかの形で生じた、契約、厳格責任、または不法行為(過失またはその他を含む)のいずれが原因で生じたものであっても、いかなる責任理論に基づくものであっても、
法的情報
定義
下書き — ドキュメントの下書きステータスは、コンテンツがまだ未完成であることを示します。
内部管理下でview 正式な承認が必要であり、変更や追加が行われる可能性があります。NXP Semiconductors は、文書のドラフト版に含まれる情報の正確性または完全性についていかなる表明または保証も行わず、そのような情報の使用の結果について一切の責任を負いません。
免責事項
限定保証および責任 — この文書の情報は正確で信頼できるものであると考えられます。ただし、NXP Semiconductors は、明示的か黙示的かにかかわらず、かかる情報の正確性または完全性についていかなる表明または保証も行わず、かかる情報の使用による結果については責任を負いません。 NXP Semiconductors 以外の情報源から提供された場合、NXP Semiconductors はこのドキュメントの内容について責任を負いません。 NXP セミコンダクターは、いかなる場合においても、間接的、付随的、懲罰的、特別または結果的損害(逸失利益、逸失貯蓄、事業中断、製品の取り外しまたは交換に関連する費用、または再加工料金を含みますがこれらに限定されません)に対して責任を負わないものとします。かかる損害が不法行為(過失を含む)、保証、契約違反、またはその他の法理論に基づいているかどうか。
何らかの理由でお客様が被る可能性のある損害にかかわらず、NXPセミコンダクターズの本書に記載されている製品に対するお客様に対する累積的および累積的な責任は、NXPセミコンダクターズの商業販売の条件に従って制限されるものとします。
変更する権利 — NXP Semiconductors は、仕様や製品の説明など、本書に掲載されている情報をいつでも予告なく変更する権利を留保します。この文書は、この文書の発行前に提供されたすべての情報に優先し、置き換えられます。
使用適合性 — NXP セミコンダクターズ製品は、生命維持、生命維持に重要なシステムや安全性が重要なシステムや機器、また NXP セミコンダクターズ製品の故障や誤動作が人身事故を引き起こすことが合理的に予想される用途での使用に適するように設計、認可、保証されていません。傷害、死亡、または重大な財産または環境への損害。 NXP Semiconductors およびそのサプライヤーは、NXP Semiconductors 製品をそのような機器またはアプリケーションに組み込むことおよび/または使用することに対して一切の責任を負わないため、そのような組み込みおよび/または使用はお客様自身の責任となります。
アプリケーション — 以下のいずれかについてここで説明されているアプリケーション
製品は説明のみを目的としています。 NXP Semiconductors は、そのようなアプリケーションがさらなるテストや変更を行わずに指定された用途に適していることを表明または保証しません。
お客様は、その設計と運用について責任を負います。
NXP Semiconductors 製品を使用するアプリケーションおよび製品については、NXP Semiconductors はアプリケーションまたは顧客の製品設計に関する支援に対して一切の責任を負いません。 NXP Semiconductors 製品が、お客様の計画されたアプリケーションおよび製品、ならびにお客様のサードパーティ顧客の計画されたアプリケーションおよび使用に適しているかどうかを判断するのは、お客様の単独の責任です。お客様は、アプリケーションおよび製品に関連するリスクを最小限に抑えるために、適切な設計および運用上の安全対策を講じる必要があります。
NXP Semiconductors は、顧客のアプリケーションや製品、あるいは顧客のサードパーティ顧客によるアプリケーションや使用の弱点や不履行に基づく不履行、損害、費用、または問題に関する責任を一切負いません。お客様は、アプリケーションおよび製品のデフォルト、またはアプリケーションまたはお客様の第三者による使用を回避するために、NXP Semiconductors 製品を使用してお客様のアプリケーションおよび製品に必要なすべてのテストを行う責任があります。
商業販売の条件— NXP Semiconductors 製品は、https://www.nxp.com/pro で公開されている商業販売の一般契約条件に従って販売されます。file/terms、有効な書面による個別契約で別段の合意がない限り。個別の契約が締結された場合には、それぞれの契約の条件のみが適用されます。 NXP Semiconductors は、顧客による NXP Semiconductors 製品の購入に関して、顧客の一般契約条件を適用することに明示的に反対します。
輸出管理 — この文書およびここに記載されている項目は、輸出管理規制の対象となる場合があります。 輸出には、所轄官庁からの事前承認が必要になる場合があります。
非自動車認定製品での使用への適合性 — この文書が特定の NXP Semiconductors であると明示的に述べている場合を除きます。
この製品は自動車認定を受けていますが、自動車での使用には適していません。自動車のテストやアプリケーション要件に従って認定もテストもされていません。 NXP Semiconductors は、自動車用機器またはアプリケーションにおける非自動車認定製品の組み込みおよび/または使用については責任を負いません。
お客様がデザインイン、用途に使用する場合
自動車の仕様と規格に対する自動車アプリケーション、
お客様 (ア) NXP Semiconductors の製品保証なしで、そのような自動車用途、用途、仕様に対して製品を使用するものとします。 (ロ) お客様が NXP Semiconductors の仕様を超えて車載アプリケーションに製品を使用する場合、その使用は単独でお客様自身の責任で行われるものとし、(c) お客様は、お客様による製品の設計および使用に起因するあらゆる責任、損害、または製品の故障の請求に対して NXP Semiconductors を完全に補償するものとします。 NXP Semiconductors の標準保証および NXP Semiconductors の製品仕様を超える自動車アプリケーション向け。
翻訳 — ドキュメントの法的情報を含む、英語以外の (翻訳された) バージョンのドキュメントは、参照のみを目的としています。 翻訳版と英語版の間に相違がある場合は、英語版が優先されるものとします。
安全 — お客様は、すべての NXP 製品が未確認の脆弱性にさらされている可能性があること、または確立されたセキュリティ基準または既知の制限付きの仕様をサポートしている可能性があることを理解しています。 お客様は、お客様のアプリケーションおよび製品に対するこれらの脆弱性の影響を軽減するために、アプリケーションおよび製品のライフサイクル全体の設計と運用に責任を負います。 お客様の責任は、NXP 製品がお客様のアプリケーションで使用するためにサポートするその他のオープンおよび/または独自技術にも及びます。 NXP は、いかなる脆弱性についても責任を負いません。 お客様は、NXP からのセキュリティ アップデートを定期的に確認し、適切にフォローアップする必要があります。
お客様は、意図する用途の規則、規制、基準に最も適合するセキュリティ機能を備えた製品を選択し、製品に関する最終的な設計上の決定を行うものとし、製品に関するすべての法律、規制、およびセキュリティ関連の要件を遵守することについては、お客様が単独で責任を負うものとします。 NXP によって提供される可能性のある情報またはサポート。 NXP には、NXP 製品のセキュリティ脆弱性の調査、報告、およびソリューションのリリースを管理する製品セキュリティ インシデント対応チーム (PSIRT) (PSIRT@nxp.com で連絡可能) があります。
NXP BV — NXP BV は事業会社ではなく、製品の流通や販売は行いません。
ドキュメント / リソース
![]() |
NXP AN14120 Cortex-M ソフトウェアのデバッグ [pdf] ユーザーガイド i.MX 8ULP、i.MX 93、AN14120 Cortex-M ソフトウェアのデバッグ、AN14120、Cortex-M ソフトウェアのデバッグ、Cortex-M ソフトウェア、ソフトウェア |