New MCU-Link Debug Probe from NXP

The NXP MCUXpressso IDE Release V11.2.1 gave a hint about a coming new debug probe, the MCU-Link which is available now:

MCU-Link debugging the LPC845-BRK Board

MCU-Link in 3D printed enclosure debugging the LPC845-BRK Board

The new MCU-Link is listed on Mouser.com (search for ‘MCU-Link’) for price around $10/€10/CHF11. I two from Mouser but because Mouser is still adding it to the inventory, NXP has sent me two probes directly (thanks!).

The MCU-Link is a compact and inexpensive debug probe for NXP ARM Cortex devices (Kinetis, LPC, i.MX RT). It currently supports SWD debugging with SWO trace and includes a VCOM (Virtual COM, UART-2-USB). I’m typically using a broad range of different debug probes: from NXP LPC-Link2 to commercial P&E and SEGGER debug probes. I appreciate to have a choice, especially because that way I can use the debug probe for my projects which fits the best. So a new probe is always a welcome addition to my growing inventory of debug probes :-).

💡 Want to use the MCU-Link with OpenOCD? See https://mcuoneclipse.com/2020/12/15/openocd-with-mcu-link/

Unboxing

The MCU-Link arrived in a small box:

MCU-Link Box

MCU-Link Box

Inside the anti-static box there is a reference guide, the PCB, three jumpers, 3pin (UART) jumper cable and the 10pin SWD/JTAG debug cable:

MCU-Link Box Content

MCU-Link Box Content

The MCU on the MCU-Link board is the LPC55S69, (dual ARM Cortex-M33/150 MHz):

MCU-Link Board Top Side

MCU-Link Board Top Side

On the bottom there are footprints for an extra push (Reset) button and a SWD debug header for the LPC55S69 (see schematics at https://www.nxp.com/downloads/en/schematics/MCU-LINK-SCH.pdf). On the bottom of board there is a header for 4 GPIO pins of the LPC55S69: So I could use that board as a minimal universal and inexpensive LPC55S69 board too 🙂 :

MCU-Link Board Bottom Side

MCU-Link Board Bottom Side

The box comes with a Quick Reference Guide:

MCU-Link Quick Reference

MCU-Link Quick Reference

The new MCU-Link costs only around $10, so half the price of the previous NXP LPC-Link2. The new debug probe is much more compact too:

LPC-Link2 and MCU-Link

LPC-Link2 and MCU-Link

Debugger Support

The debug probe is automatically detected in the MCUXpresso IDE and shows up as CMSIS-DAP debug probe:

MCU-Link detected by MCUXpresso IDE

MCU-Link detected by MCUXpresso IDE

The probe is supported on Windows, MacOS and Linux (I’m using Windows 10 here).

Below I’m debugging a Kinetis K02 board with the MCU-Link debug probe:

debugging K02 with MCU-LInk

debugging K02 with MCU-Link

It works fine with the LPC845-BRK or with the NXP i.MX RT1064 board too:

Debugging NXP i.MX RT1064 with MCU-Link debug probe

Debugging NXP i.MX RT1064 with MCU-Link debug probe

Basically it should support all the devices which are supported by the NXP LPC-Link2.

I did not compare the performance yet, but I feel it is faster than the LPC-Link2 too.

Another great thing is that the probe supports SWO trace and profiling too:

SWO Profile

SWO Profile

Updating Firmware

The MCU-Link uses the LPC55S69 ISP bootloader and update mode. The MCU-Link board I have received had the firmware V0.078 loaded.

The firmware update utility is found on the MCU-Link web page:

MCU-Link Firmware

MCU-Link Firmware

At the time of this article, the most recent firmware is V1.098. Download the .zip file and extract it to a folder on the host.

Put the MCU-Link into ISP programming mode: Power the board with the Update jumper J3 installed:

Update Jumper J3 installed on MCU-Link

Update Jumper J3 installed on MCU-Link

Then run the program.cmd:

MCU-Link program.cmd

MCU-Link program.cmd

Remove the J3 jumper and re-power the MCU-Link. Now it is recognized with the new firmware in the debugger:

New Firmware

New Firmware

UART Bridge

The MCU-Link features a VCOM (UART to USB) bridge which is useful with an UART on the target. The connection includes GND, Rx and Tx.

Note that the lower pine is the Rx from the target to the MCU-Link and the middle pin is the Tx to the target from the MCU-Link:

MCU-Link Tx Rx

MCU-Link Tx Rx

For example I can use the MCU-Link with the ESP32:

ESP32 connection with MCU-Link

ESP32 connection with MCU-Link

I have been able to use the VCOM up to a baud of 115200: above that the connection was not working in a reliable way (I tried up to 460800):

example of failure with 460800 baud

example of failure with 460800 baud

Not sure if it is a problem on my side (it works well up to 460800 for other UART adapters I’m using).

Custom 3D Printed Enclosure

The MCU-Link comes as bare board. Not to mess with other parts my crowded desk, I prefer to have an enclosure or at least some shrink-tubing around it. I have quickly designed a 3D printable design.

McuLink Enclosure Rendering

MCU-Link Enclosure Rendering

The enclosure features ‘in place printed hinges’. So everything is printed in one piece. There is an empty space inside hinge to make it movable after removed from the print bed.

You can find the design files on GitHub. I printed it with white PLA on Ultimaker-2 without any support and 0.1 mm settings:

Ultimaker 2 Settings

Ultimaker 2 Settings

Inside the box there is a place for a ‘cheat sheet’ showing the jumper and UART connection pins:

Cheat Sheet

Cheat Sheet

With two 2.5mm screws and two magnets the enclosure nicely keeps closed:

Magnet Support

Magnet Support

Below the MCU-Link board installed which snaps into the enclosure:

MCU-Link PCB inside enclosure

MCU-Link PCB inside enclosure

The enclosure features a space to keep the UART cable inside the box:

UART cables inside enclosure

UART cables inside enclosure

And to keep things compact, the debug cable fits into the enclosure too:

All cables inside the box

All cables inside the box

Below how the box looks closed.

MCU-Link in a box

MCU-Link in a box USB connector side

MCU-Link in a box hinge side

MCU-Link in a box hinge side

MCU-Link in a box debug side

MCU-Link in a box debug side

Maybe I do another design to put a micro-USB cable inside the box too.

Overall the enclosure is very useful for me: it provides protection, keeps all cables in place plus includes a cheat sheet :-).

MCU-Link debugging the LPC845-BRK Board

MCU-Link debugging the LPC845-BRK Board

Debugging LPC845

Debugging LPC845

Summary

If you are looking for an inexpensive, small and still powerful debug probe for NXP Kinetis, LPC and i.MX RT MCUs, then have a look at the NXP MCU-Link. Compared to the LPC-Link it is not only smaller, it costs only half the price and comes with a handy USB-2-Serial adapter cable. And I hope the 3D printed enclosure (design available on GitHub, see links below) is something you find useful too. I’m definitely going to add more of these probes to my inventory, and I’m sure students will like it too.

Happy Linking 🙂

Links

23 thoughts on “New MCU-Link Debug Probe from NXP

  1. Pingback: Standalone and Command Line Programmer with MCUXpresso | MCU on Eclipse

  2. Hi.
    Do you know how it can be programmed with the MCU Link so that the microcontroller is protected against reading?

    I am interested in this programmer, I have already ordered it from Farnell, I hope to receive it soon.My only doubt is how to use it to program a commercial finished product in production, which must be protected to prevent someone from extracting the program.

    Being able to program with external commands without using MCUXpresso is fine, but unless it can be read-protected, it won’t be very useful to me.

    In general, I would like to know if there is any parameter in MCUXpresso that allows to protect the code against reading. I have read something from a flash configuration file in Startup, I don’t know if this is it and what to do exactly:

    // ************************************************ *****************************
    // Flash Configuration block: 16-byte flash configuration field that stores
    // default protection settings (loaded on reset) and security information that
    // allows the MCU to restrict access to the Flash Memory module.
    // Placed at address 0x400 by the linker script.
    // ************************************************ *****************************
    __attribute__ ((used, section (“. FlashConfig”))) const struct {
    unsigned int word1;
    unsigned int word2;
    unsigned int word3;
    unsigned int word4;
    } Flash_Config = {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFE};

    Like

    • Enabling debug security depends entirely on the MCU design, and has no relation to the debug probe. The reference manual for the MCU you are using will describe how to enable debug security for that device or family. Usually it is done by putting some configuration in a defined reserved in flash. So any debug probe that can program flash can enable security.

      For the NXP Kinetis devices, the FCF that you show contains an FSEC field that is used to enable security. LPC devices have a feature called CRP (Code Read Protection) with a setting that also resides in flash. Security for nRF devices is controlled through the UICR flash region. STM32 devices again have something similar. See the RM for your device for details. There are also often app notes that describe how to enable debug security.

      Like

  3. Pingback: OpenOCD with MCU-Link | MCU on Eclipse

  4. Pingback: New MetaClockClock V3 finished with 60 Clocks | MCU on Eclipse

  5. Pingback: MCUXpresso IDE V11.3.0 for 2021 | MCU on Eclipse

  6. Pingback: Debug Firmware Switching for the LPC4322 | MCU on Eclipse

  7. Pingback: New MCUXpresso IDE v11.3.1 | MCU on Eclipse

  8. Pingback: SWO with ARM Cortex-M33 | MCU on Eclipse

What do you think?

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.