0% found this document useful (0 votes)
75 views17 pages

AN14120

Uploaded by

john doe
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
75 views17 pages

AN14120

Uploaded by

john doe
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 17

AN14120

Debugging Cortex-M with VS Code on i.MX 8M, i.MX 8ULP, and i.MX 93
Rev. 2.0 — 13 March 2024 Application note

Document information
Information Content
Keywords AN14120, i.MX 8M, i.MX 93, Cortex-M, i.MX 8MN, i.MX 8MP, i.MX 8MM, VS Code, MCUXSDK,
MCUXpresso SDK, J-Link, SEGGER, Cortex-M debug
Abstract This document describes cross-compiling, deploying, and debugging an application for the i.MX
8M Family, i.MX 8ULP, and i.MX 93 Cortex-M processor using Microsoft Visual Studio Code.
NXP Semiconductors
AN14120
Debugging Cortex-M with VS Code on i.MX 8M, i.MX 8ULP, and i.MX 93

1 Introduction
This document describes cross-compiling, deploying, and debugging an application for the i.MX 8M Family,
i.MX 8ULP, and i.MX 93 Cortex-M processor using Microsoft Visual Studio Code.

1.1 Software environment


The solution could be implemented both on the Linux and Windows host. For this application note, a Windows
PC is assumed, but not mandatory.
Linux BSP release 6.1.22_2.0.0 is used in this application note. The following prebuild images are used:
• i.MX 8M Mini: imx-image-full-imx8mmevk.wic
• i.MX 8M Nano: imx-image-full-imx8mnevk.wic
• i.MX 8M Plus: imx-image-full-imx8mpevk.wic
• i.MX 8ULP: imx-image-full-imx8ulpevk.wic
• i.MX 93: imx-image-full-imx93evk.wic
For detailed steps on how to build these images, refer to i.MX Linux User's Guide (document IMXLUG) and i.MX
Yocto Project User's Guide (document IMXLXYOCTOUG).
If a Windows PC is used, write the prebuild image on the SD card using Win32 Disk Imager (https://
win32diskimager.org/) or Balena Etcher (https://etcher.balena.io/).
If an Ubuntu PC is used, write the prebuild image on the SD card using the below command:

$ sudo dd if=<image_name>.wic of=/dev/sd<x> bs=1M status=progress conv=fsync

Note: Check your card reader partition and replace sd<x> with your corresponding partition.

1.2 Hardware setup and equipment


• Development kit:
– NXP i.MX 8MM EVK LPDDR4
– NXP i.MX 8MN EVK LPDDR4
– NXP i.MX 8MP EVK LPDDR4
– NXP i.MX 93 EVK for 11x11 mm LPDDR4
– NXP i.MX 8ULP EVK LPDDR4
• Micro SD card: SanDisk Ultra 32-GB Micro SDHC I Class 10 is used for the current experiment.
• Micro-USB (i.MX 8M) or Type-C (i.MX 93) cable for debug port.
• SEGGER J-Link debug probe.

2 Prerequisites
Before starting to debug, several prerequisites must be met to have a properly configured debug environment.

2.1 PC Host – i.MX board debug connection


To establish the hardware debug connection, perform the following steps:

AN14120 All information provided in this document is subject to legal disclaimers. © 2024 NXP B.V. All rights reserved.

Application note Rev. 2.0 — 13 March 2024


2 / 17
NXP Semiconductors
AN14120
Debugging Cortex-M with VS Code on i.MX 8M, i.MX 8ULP, and i.MX 93

1. Connect the i.MX board to the host PC via the DEBUG USB-UART and PC USB connector using a USB
cable. The Windows OS finds the serial devices automatically.
2. In Device Manager, under Ports (COM & LPT) find two or four connected USB Serial Ports (COM
<port_number>). One of the ports is used for the debug messages generated by the Cortex-A core, and the
other is for the Cortex-M core.
Before determining the right port needed, remember:
• [i.MX 8MP, i.MX 8ULP, i.MX 93]: There are four ports available in the Device Manger. The last port is for
Cortex-M debug and the second to last port is for Cortex-A debug, counting debug ports in ascending
order.
• [i.MX 8MM, i.MX 8MN]: There are two ports available in Device Manager. The first port is for Cortex-M
debug and the second port is for Cortex-A debug, counting debug ports in ascending order.
3. Open the right debug port using your preferred serial terminal emulator (for example PuTTY) by setting the
following parameters:
• Speed to 115200 bps
• 8 data bits
• 1 stop bit (115200, 8N1)
• No parity
4. Connect the SEGGER debug probe USB to the host, then connect the SEGGER JTAG connector to i.MX
board JTAG interface.
If the i.MX board JTAG interface has no guided connector, the orientation is determined by aligning the red wire
to the pin 1, as in Figure 1.

Figure 1. JTAG connection

2.2 VS Code configuration


To download and configure the VS Code, perform the following steps:

AN14120 All information provided in this document is subject to legal disclaimers. © 2024 NXP B.V. All rights reserved.

Application note Rev. 2.0 — 13 March 2024


3 / 17
NXP Semiconductors
AN14120
Debugging Cortex-M with VS Code on i.MX 8M, i.MX 8ULP, and i.MX 93

1. Download and install the latest version of Microsoft Visual Studio Code from the official website. If using
Windows as the host OS, choose the "Download for Windows" button from the Visual Studio Code main
page.

Figure 2. Download Microsoft Visual Studio Code


2. After installing Visual Studio Code, open it and choose the "Extensions" tab or press the Ctrl + Shift + X
combination.

Figure 3. Microsoft Visual Studio Code Extensions tab


3. In the dedicated Search bar, type MCUXpresso for VS Code and install the extension. A new tab appears in
the left side of the VS Code window.

AN14120 All information provided in this document is subject to legal disclaimers. © 2024 NXP B.V. All rights reserved.

Application note Rev. 2.0 — 13 March 2024


4 / 17
NXP Semiconductors
AN14120
Debugging Cortex-M with VS Code on i.MX 8M, i.MX 8ULP, and i.MX 93

Figure 4. Install MCUXpresso for VS Code extension

2.3 MCUXpresso extension configuration


To configure the MCUXpresso extension, perform the following steps:
1. Click the MCUXpresso extension dedicated tab from the left side bar. From the QUICKSTART PANEL, click
Open MCUXpresso Installer and give permission for downloading the installer.
2. The installer window appears in a short time. Click MCUXpresso SDK Developer and on SEGGER J-
Link then click the Install button. The installer installs the needed software for archives, toolchain, Python
support, Git, and debug probe.

Figure 5. Install SEGGER J-Link software

After all packages are installed, be sure that the J-Link probe is connected to the host PC. Then, check if the
probe is also available in the MCUXpresso extension under the DEBUG PROBES view, as shown in Figure 6.

AN14120 All information provided in this document is subject to legal disclaimers. © 2024 NXP B.V. All rights reserved.

Application note Rev. 2.0 — 13 March 2024


5 / 17
NXP Semiconductors
AN14120
Debugging Cortex-M with VS Code on i.MX 8M, i.MX 8ULP, and i.MX 93

Figure 6. J-Link probe available under DEBUG PROBES view

2.4 Import MCUXpresso SDK


Depending on what board you are running, build and download the specific SDK from NXP official website. For
this application note, the following SDKs have been tested:
• SDK_2_15_000_EVK-MIMX8MM
• SDK_2_15_000_EVK-MIMX8MN
• SDK_2_15_000_EVK-MIMX8MP
• SDK_2.14.0_EVK-MIMX8ULP
• SDK_2_15_000_MCIMX93-EVK
To build an example for i.MX 93 EVK, see Figure 7:

AN14120 All information provided in this document is subject to legal disclaimers. © 2024 NXP B.V. All rights reserved.

Application note Rev. 2.0 — 13 March 2024


6 / 17
NXP Semiconductors
AN14120
Debugging Cortex-M with VS Code on i.MX 8M, i.MX 8ULP, and i.MX 93

Figure 7. Download the MCUXpresso SDK

To import an MCUXpresso SDK repository in VS Code, perform the following steps:


1. After downloading the SDK, open Visual Studio Code. Click the MCUXpresso tab from the left side, and
expand the INSTALLED REPOSITORIES and PROJECTS views.
2. Click the Import Repository and select LOCAL ARCHIVE. Click the Browse… corresponding to the Archive
field and select the recently downloaded SDK archive.
3. Select the path where the archive is unzipped and fill in the Location field.
4. The Name field can be left by default, or you can choose a custom name.
5. Check or uncheck Create Git repository based on your needs and then click Import.

1
2
3

Figure 8. Import the MCUXpresso SDK repository

2.5 Import an example application


When the SDK is imported, it appears under the INSTALLED REPOSITORIES view.
To import an example application from the SDK repository, perform the following steps:
1. Click the Import Example from Repository button from the PROJECTS view.
2. Choose a repository from the drop-down list.
3. Choose the toolchain from the drop-down list.
4. Choose the target board.

AN14120 All information provided in this document is subject to legal disclaimers. © 2024 NXP B.V. All rights reserved.

Application note Rev. 2.0 — 13 March 2024


7 / 17
NXP Semiconductors
AN14120
Debugging Cortex-M with VS Code on i.MX 8M, i.MX 8ULP, and i.MX 93

5. Choose the demo_apps/hello_world example from the Choose a template list.


6. Choose a name for the project (the default can be used) and set the path to project Location.
7. Click Create.
8. For older versions of SDK (< 5.15.000), the device name is not parsed correctly. Perform the following
steps for i.MX 8M Family only. Under the PROJECTS view, expand the imported project. Go to the Settings
section and click the mcuxpresso-tools.json file.
a. Add "interface": "JTAG" under "debug" > "segger"
b. For i.MX 8MM, add the following configuration:
"device": "MIMX8MM6_M4" under "debug" > "segger"
c. For i.MX 8MN, add the following configuration:
"device": "MIMX8MN6_M7" under "debug" > "segger"
d. For i.MX 8MP, add the following configuration:
"device": "MIMX8ML8_M7" under "debug" > "segger"
The following code shows an example for i.MX8MP "debug" section after the above modifications of
mcuxpresso-tools.json were performed:

"debug": {
"linkserver": {},
"pemicro": {},
"segger": {
"device": "MIMX8ML8_M7",
"interface": "JTAG"
},
},

After importing the example application successfully, it must be visible under the PROJECTS view. Also, the
project source files are visible in the Explorer (Ctrl + Shift + E) tab.

3 Building the application


To build the application, press the left Build Selected icon, as shown in Figure 9.

Figure 9. Build application

AN14120 All information provided in this document is subject to legal disclaimers. © 2024 NXP B.V. All rights reserved.

Application note Rev. 2.0 — 13 March 2024


8 / 17
NXP Semiconductors
AN14120
Debugging Cortex-M with VS Code on i.MX 8M, i.MX 8ULP, and i.MX 93

4 Prepare the board for the debugger


To use the JTAG for debugging Cortex-M applications, there are a few prerequisites depending on the platform:
1. For i.MX 93
To support i.MX 93, the patch for SEGGER J-Link must be installed: SDK_MX93_3RDPARTY_PATCH.zip.
Note: This patch must be used, even if it is installed in the past.
After the download has finished, unzip the archive and copy the Devices directory and the
JLinkDevices.xml file to C:\Program Files\SEGGER\JLink. If a Linux PC is used, the target path is
/opt/SEGGER/JLink.
• Debugging Cortex-M33 while only Cortex-M33 is running
In this mode, the boot mode switch SW1301[3:0] must be set to [1010]. Then the M33 image can be
directly loaded and debugged using the debug button. For more details, see Section 5.
If Linux running on Cortex-A55 is needed in parallel with Cortex-M33, there are two ways of debugging
Cortex-M33:
• Debugging Cortex-M33 while Cortex-A55 is in U-Boot
First, copy the sdk20-app.bin file (located in the armgcc/debug directory) generated in Section 3 into
the boot partition of the SD card.
Boot the board and stop it in U-Boot. When the boot switch is configured to boot Cortex-A, the boot
sequence does not start the Cortex-M. It has to be kicked off manually using the commands below. If
Cortex-M is not started, JLink fails to connect to the core.
u-boot=> fatload mmc 1:1 80000000 sdk20-app.bin
u-boot=> cp.b 0x80000000 0x201e0000 0x10000
u-boot=> bootaux 0x1ffe0000 0
Note: If the system cannot be debugged normally, try to right-click the project in the MCUXpresso for VS
Code and choose "Attach to debug the project".
• Debugging Cortex-M33 while Cortex-A55 is in Linux
The Kernel DTS must be modified to disable the UART5, which uses the same pins as the JTAG interface.
If a Windows PC is used, the easiest is to install WSL + Ubuntu 22.04 LTS, and then to cross-compile the
DTS.
After the WSL + Ubuntu 22.04 LTS installation, open the Ubuntu machine running on WSL and install the
required packages:
$ sudo apt update
$ sudo apt install build-essential flex bison gcc-aarch64-linux-gnu git
Now, the Kernel sources can be downloaded:
$ git clone https://github.com/nxp-imx/linux-imx
$ cd linux-imx
$ git checkout lf-6.1.22-2.0.0
To disable the UART5 peripheral, search for lpuart5 node in the linux-imx/arch/arm64/boot/
dts/freescale/imx93-11x11-evk.dts file and replace the okay status with disabled:
&lpuart5 {
/* BT */
pinctrl-names = "default";
pinctrl-assert-gpios = <&pcal6524 19 GPIO_ACTIVE_HIGH>;
pinctrl-0 = <&pinctrl_uart5>;
status = "disabled";

bluetooth {
compatible = "nxp,88w8987-bt";
};

AN14120 All information provided in this document is subject to legal disclaimers. © 2024 NXP B.V. All rights reserved.

Application note Rev. 2.0 — 13 March 2024


9 / 17
NXP Semiconductors
AN14120
Debugging Cortex-M with VS Code on i.MX 8M, i.MX 8ULP, and i.MX 93

};
Recompile the DTS:
$ ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make freescale/imx93-11x11-
evk.dtb
Copy the newly created linux-imx/arch/arm64/boot/dts/freescale/imx93-11x11-evk.dtb
file on the boot partition of the SD card.
Copy the hello_world.elf file (located in the armgcc/debug directory) generated in Section 3 into
the boot partition of the SD card.
Boot the board in Linux. Since boot ROM does not kick off the Cortex-M when Cortex-A boots, the Cortex-
M must be manually started.
root@imx8mm-lpddr4-evk:/lib/firmware# cp /run/media/mmcblk2p1/
hello_world.elf /lib/firmware
root@imx93evk:~# echo hello_world.elf > /sys/class/remoteproc/remoteproc0/
firmware
root@imx93evk:~# echo start > /sys/class/remoteproc/remoteproc0/state
Note: The hello_world.elf file must be placed in the /lib/firmware directory.
2. For i.MX 8M
To support i.MX 8M Plus, the patch for SEGGER J-Link must be installed:
iar_segger_support_patch_imx8mp.zip.
After the download has finished, unzip the archive and copy the Devices directory and the
JLinkDevices.xml file from the JLink directory to C:\Program Files\SEGGER\JLink. If a Linux PC
is used, the target path is /opt/SEGGER/JLink.
• Debugging Cortex-M while Cortex-A is in U-Boot
In this case, nothing special must be done. Boot the board in U-Boot and jump to Section 5.
• Debugging Cortex-M while Cortex-A is in Linux
To run and debug the Cortex-M application in parallel with Linux running on Cortex-A, the specific clock
must be assigned and reserved for Cortex-M. It is done from within U-Boot.
Stop the board in U-Boot and run the below commands:
u-boot=> run prepare_mcore
u-boot=> boot

3. For i.MX 8ULP


To support the i.MX 8ULP, the patch for SEGGER J-Link must be installed:
SDK_MX8ULP_3RDPARTY_PATCH.zip.
Note: This patch must be used even if it is installed in the past.
After the download, unzip the archive and copy the Devices directory and the JLinkDevices.xml file to
C:\Program Files\SEGGER\JLink. If a Linux PC is used, the target path is /opt/SEGGER/JLink.
For i.MX 8ULP, due to the Upower unit, build the flash.bin using m33_image in our "VSCode" repo
first. The M33 image can be found in {CURRENT REPO}\armgcc\debug\sdk20-app.bin. Refer to
Section 6 from the Getting Started with MCUXpresso SDK for EVK-MIMX8ULP and EVK9-MIMX8ULP in the
SDK_2_xx_x_EVK-MIMX8ULP/docs on how to build the flash.bin image.
Note: Use the M33 image in the active VSCode repo. Otherwise, the program does not attach properly.
Right-click and choose "Attach".

AN14120 All information provided in this document is subject to legal disclaimers. © 2024 NXP B.V. All rights reserved.

Application note Rev. 2.0 — 13 March 2024


10 / 17
NXP Semiconductors
AN14120
Debugging Cortex-M with VS Code on i.MX 8M, i.MX 8ULP, and i.MX 93

Figure 10. Attach to J-Link debugger for i.MX 8ULP

5 Running and debugging


After pressing the debug button, choose the Debug project configuration and the debugging session starts.

AN14120 All information provided in this document is subject to legal disclaimers. © 2024 NXP B.V. All rights reserved.

Application note Rev. 2.0 — 13 March 2024


11 / 17
NXP Semiconductors
AN14120
Debugging Cortex-M with VS Code on i.MX 8M, i.MX 8ULP, and i.MX 93

Press the debug button

Place the breakpoints

Figure 11. Start the debugging session

AN14120 All information provided in this document is subject to legal disclaimers. © 2024 NXP B.V. All rights reserved.

Application note Rev. 2.0 — 13 March 2024


12 / 17
NXP Semiconductors
AN14120
Debugging Cortex-M with VS Code on i.MX 8M, i.MX 8ULP, and i.MX 93

Figure 12. Debugging menu

When a debugging session starts, a dedicated menu is displayed. The debugging menu has buttons for starting
the execution until a breakpoint fires up, pause the execution, step over, step into, step out, restart, and stop.
Also, we can see local variables, register values, watch some expression, and check call stack and breakpoints
in the left-hand navigator. These function regions are under the "Run and Debug" tab, and not in MCUXpresso
for VS Code.

AN14120 All information provided in this document is subject to legal disclaimers. © 2024 NXP B.V. All rights reserved.

Application note Rev. 2.0 — 13 March 2024


13 / 17
NXP Semiconductors
AN14120
Debugging Cortex-M with VS Code on i.MX 8M, i.MX 8ULP, and i.MX 93

Figure 13. Variables, registers, and call stack

6 Note about the source code in the document


Example code shown in this document has the following copyright and BSD-3-Clause license:
Copyright 2024 NXP Redistribution and use in source and binary forms, with or without modification, are
permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the
following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the
following disclaimer in the documentation and/or other materials must be provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or
promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.

AN14120 All information provided in this document is subject to legal disclaimers. © 2024 NXP B.V. All rights reserved.

Application note Rev. 2.0 — 13 March 2024


14 / 17
NXP Semiconductors
AN14120
Debugging Cortex-M with VS Code on i.MX 8M, i.MX 8ULP, and i.MX 93

7 Revision history
Table 1 summarizes the revisions to this document.

Table 1. Revision history


Document ID Release date Description
AN14120 v.2.0 13 March 2024 Updated Section 2.4 and Section 2.5 for MCUXSDK 2_15_000
version
AN14120 v.1.0 24 November 2023 Initial public release

AN14120 All information provided in this document is subject to legal disclaimers. © 2024 NXP B.V. All rights reserved.

Application note Rev. 2.0 — 13 March 2024


15 / 17
NXP Semiconductors
AN14120
Debugging Cortex-M with VS Code on i.MX 8M, i.MX 8ULP, and i.MX 93

Legal information
Definitions Terms and conditions of commercial sale — NXP Semiconductors
products are sold subject to the general terms and conditions of commercial
sale, as published at https://www.nxp.com/profile/terms, unless otherwise
Draft — A draft status on a document indicates that the content is still agreed in a valid written individual agreement. In case an individual
under internal review and subject to formal approval, which may result agreement is concluded only the terms and conditions of the respective
in modifications or additions. NXP Semiconductors does not give any agreement shall apply. NXP Semiconductors hereby expressly objects to
representations or warranties as to the accuracy or completeness of applying the customer’s general terms and conditions with regard to the
information included in a draft version of a document and shall have no purchase of NXP Semiconductors products by customer.
liability for the consequences of use of such information.
Export control — This document as well as the item(s) described herein
may be subject to export control regulations. Export might require a prior
Disclaimers authorization from competent authorities.

Limited warranty and liability — Information in this document is believed Suitability for use in non-automotive qualified products — Unless
to be accurate and reliable. However, NXP Semiconductors does not give this document expressly states that this specific NXP Semiconductors
any representations or warranties, expressed or implied, as to the accuracy product is automotive qualified, the product is not suitable for automotive
or completeness of such information and shall have no liability for the use. It is neither qualified nor tested in accordance with automotive testing
consequences of use of such information. NXP Semiconductors takes no or application requirements. NXP Semiconductors accepts no liability for
responsibility for the content in this document if provided by an information inclusion and/or use of non-automotive qualified products in automotive
source outside of NXP Semiconductors. equipment or applications.
In no event shall NXP Semiconductors be liable for any indirect, incidental, In the event that customer uses the product for design-in and use in
punitive, special or consequential damages (including - without limitation - automotive applications to automotive specifications and standards,
lost profits, lost savings, business interruption, costs related to the removal customer (a) shall use the product without NXP Semiconductors’ warranty
or replacement of any products or rework charges) whether or not such of the product for such automotive applications, use and specifications, and
damages are based on tort (including negligence), warranty, breach of (b) whenever customer uses the product for automotive applications beyond
contract or any other legal theory. NXP Semiconductors’ specifications such use shall be solely at customer’s
own risk, and (c) customer fully indemnifies NXP Semiconductors for any
Notwithstanding any damages that customer might incur for any reason
liability, damages or failed product claims resulting from customer design and
whatsoever, NXP Semiconductors’ aggregate and cumulative liability
use of the product for automotive applications beyond NXP Semiconductors’
towards customer for the products described herein shall be limited in
standard warranty and NXP Semiconductors’ product specifications.
accordance with the Terms and conditions of commercial sale of NXP
Semiconductors.
Translations — A non-English (translated) version of a document, including
the legal information in that document, is for reference only. The English
Right to make changes — NXP Semiconductors reserves the right to
version shall prevail in case of any discrepancy between the translated and
make changes to information published in this document, including without
English versions.
limitation specifications and product descriptions, at any time and without
notice. This document supersedes and replaces all information supplied prior
Security — Customer understands that all NXP products may be subject to
to the publication hereof.
unidentified vulnerabilities or may support established security standards or
specifications with known limitations. Customer is responsible for the design
Suitability for use — NXP Semiconductors products are not designed,
and operation of its applications and products throughout their lifecycles
authorized or warranted to be suitable for use in life support, life-critical or
to reduce the effect of these vulnerabilities on customer’s applications
safety-critical systems or equipment, nor in applications where failure or
and products. Customer’s responsibility also extends to other open and/or
malfunction of an NXP Semiconductors product can reasonably be expected
proprietary technologies supported by NXP products for use in customer’s
to result in personal injury, death or severe property or environmental
applications. NXP accepts no liability for any vulnerability. Customer should
damage. NXP Semiconductors and its suppliers accept no liability for
regularly check security updates from NXP and follow up appropriately.
inclusion and/or use of NXP Semiconductors products in such equipment or
applications and therefore such inclusion and/or use is at the customer’s own Customer shall select products with security features that best meet rules,
risk. regulations, and standards of the intended application and make the
ultimate design decisions regarding its products and is solely responsible
for compliance with all legal, regulatory, and security related requirements
Applications — Applications that are described herein for any of these
concerning its products, regardless of any information or support that may be
products are for illustrative purposes only. NXP Semiconductors makes no
provided by NXP.
representation or warranty that such applications will be suitable for the
specified use without further testing or modification. NXP has a Product Security Incident Response Team (PSIRT) (reachable
at PSIRT@nxp.com) that manages the investigation, reporting, and solution
Customers are responsible for the design and operation of their
release to security vulnerabilities of NXP products.
applications and products using NXP Semiconductors products, and NXP
Semiconductors accepts no liability for any assistance with applications or
customer product design. It is customer’s sole responsibility to determine NXP B.V. — NXP B.V. is not an operating company and it does not distribute
whether the NXP Semiconductors product is suitable and fit for the or sell products.
customer’s applications and products planned, as well as for the planned
application and use of customer’s third party customer(s). Customers should
provide appropriate design and operating safeguards to minimize the risks
associated with their applications and products.
Trademarks
NXP Semiconductors does not accept any liability related to any default, Notice: All referenced brands, product names, service names, and
damage, costs or problem which is based on any weakness or default trademarks are the property of their respective owners.
in the customer’s applications or products, or the application or use by
customer’s third party customer(s). Customer is responsible for doing all NXP — wordmark and logo are trademarks of NXP B.V.
necessary testing for the customer’s applications and products using NXP i.MX — is a trademark of NXP B.V.
Semiconductors products in order to avoid a default of the applications
J-Link — is a trademark of SEGGER Microcontroller GmbH.
and the products or of the application or use by customer’s third party
customer(s). NXP does not accept any liability in this respect. Microsoft, Azure, and ThreadX — are trademarks of the Microsoft group of
companies.

AN14120 All information provided in this document is subject to legal disclaimers. © 2024 NXP B.V. All rights reserved.

Application note Rev. 2.0 — 13 March 2024


16 / 17
NXP Semiconductors
AN14120
Debugging Cortex-M with VS Code on i.MX 8M, i.MX 8ULP, and i.MX 93

Contents
1 Introduction ...................................................... 2
1.1 Software environment ........................................2
1.2 Hardware setup and equipment ........................ 2
2 Prerequisites .................................................... 2
2.1 PC Host – i.MX board debug connection ...........2
2.2 VS Code configuration .......................................3
2.3 MCUXpresso extension configuration ................5
2.4 Import MCUXpresso SDK ..................................6
2.5 Import an example application ...........................7
3 Building the application .................................. 8
4 Prepare the board for the debugger .............. 9
5 Running and debugging ............................... 11
6 Note about the source code in the
document ........................................................14
7 Revision history .............................................15
Legal information ...........................................16

Please be aware that important notices concerning this document and the product(s)
described herein, have been included in section 'Legal information'.

© 2024 NXP B.V. All rights reserved.


For more information, please visit: https://www.nxp.com
Date of release: 13 March 2024
Document identifier: AN14120

You might also like