New in LPCXpesso IDE version 8.1 is direct support for using multiple LPC-Link2 debug probes. Now when using the latest NXP CMSIS-DAP firmware the user can recognise and select individual LPC-Link2’s either within a single IDE or within separate IDE sessions (note that separate concurrent IDE sessions cannot share a single workspace).
Note: all references the LPC-Link2 debug probes equally describe the probes built into LPCXpresso V2 and V3 development boards: see https://www.lpcware.com/LPCXpressoBoards
Making a debug connection
There are two primary changes:
- the latest NXP CMSIS-DAP firmware for LPC-Link2 will now generate a unique identifier from the debug probe MCU’s unique ID. Each identifier is an 8 character alpha numeric string, for example: GQAUBQPQ
- when a debug operation is performed, the IDE will display the available debug probes and allow a specific probe to be selected. Future debug connections for a particular project can be set to look for and select a specific debug probe using the Remember my selection tick box. A single LPC-Link2 will display like this:
These changes are specific to LPC-Link2. Other debug probes may be used in combination with LPC-Link2, such as the built in probes of the LPCXpresso CD boards but only the LPC-Link2 probes will be dynamically identified with a unique ID. Two LPC-Link2 probe and an LPCXpresso CD board will display like this:
Note: It may be helpful to label debug probes or boards with their unique ID.
The ability to debug multiple MCUs using a single installation of LPCXpresso IDE can be use in two ways:
Single IDE Instance
From within a single IDE window, you can now debug cores in parallel, selecting which core to step, resume, suspend, etc. by switching between them in the Debug View.
The currently selected core will be the one used for displaying many of the debug related views, such as Registers and Locals. It is also possible to create copies of many of the debug related views, and lock each copy to a particular core.
Note: Although there is no debug logic synchronising debug operations on the two cores, you can select both applications at the same time in the Debug View (typically by using CTRL-Click) and operations like step, resume, suspend, etc will then be carried out on both cores by the debugger in parallel.
This scheme may be most suited to related projects or debug tasks.
Multiple IDE Instances
From within multiple IDE windows you can debug multiple MCUs, this option may be prefereable if plenty of screen space is available. Note that separate concurrent IDE sessions cannot share a single workspace.
One consequence of LPC-Link2 probes now being unique is that each new probe will need to install the necessary drivers before the first connection can be made. This process will usually be automatic, however refer to the following FAQ LPC-Link2 fails to enumerate with CMSIS-DAP if problems are experienced.
Due to the USB bandwidth required to provide responsive performance, the number of LPC-Link2 that may be connected to a single PC is limited. To reduce the bandwidth required, the Non Bridged Debug probe firmware can be used. This can either be programmed into the debug probe automatically by the IDE (DFU boot) or programmed into flash by LPCScrypt.
To instruct the IDE to boot with the Non Bridged firmware:
Preferences > LPCXpresso > Redlink/Linkserver > LPC-Link2 boot type - select CMSIS-DAP (Non Bridged - Debug Only)
To make LPCScrypt flash the LPC-Link2 with Non Bridged firmware, launch the programCMSIS script with the NB argument:
Booting LPC-Link 2 Probes
When a debug connection is attempted, the IDE will look for any debug probe that requires booting with firmware (is in DFU boot configuration), however if more than one bootable probe is connected the IDE will generate an error. To fix this ensure that only one bootable probe is connected at a time.
LPCXpresso IDE only supports the use of one legacy debug probe, such as Red Probe+ and LPC-Link connected to a single PC at any one time.
Certain features of LPCXpresso IDE such as SWO trace can only be used via a single debug connection.