Cortex-Mx MCUs with SWD access locked

50 views
Skip to first unread message

pozz

unread,
Jun 23, 2022, 5:38:32 PMJun 23
to
I know it's a very specific question, so I don't have many hopes to find
a solution here, but I already tried everything and I don't know how to
solve the issue I have that is very annoying.

I have three PCBs: PCB1 that mounts LPC54101 (M4), PCB2 that mounts
LPC54606 (M4), PCB3 that mounts LPC54618 (M4). All these MCUs are from NXP.

After I receive the first prototype for each board, I was able to make a
connection through SWD, by using a J-Link probe. I use MCUXpresso as the
IDE for debug launch.

Well, after some tests (write some code, download new images, debug some
and so on), I received an error from the probe: no SWD target found
(Could not connect to the target).

The MCU appears working well with the last downloaded image, but the SWD
access seems disabled. Moreover the MCU is able to enter UART ISP Boot
(by pulling down a specific ISP pin) and I can erase and rewrite the
internal Flash by UART.
I tried to connect by SWD even when the MCU has booted in ISP Boot ROM,
without any success.

Ok, something went wrong with this MCU, it could happen on prototypes
during development.
But the big issue I am worried about and that is incredible for me, is
that this exactly sequence of events happened for one prototype of PCB1,
one of PCB2 and one of PCB3!!!

After some program&debug cycle (for a few days all is ok), the probe
isn't able to connect to the target anymore.

The probe and cables seem ok, because if I replace bricked PCBs with a
working PCB, all is ok.

I tried to contact NXP support, but they couldn't solve this problem and
don't know what happened to bricked MCUs.

LPC546xx MCUs have a complex mechanism (some values at specific address
in the Flash and OTP memory) that allows to restrict access via ISP
and/or SWD, but LPC5410x is much more simple. The protection is enabled
by writing some magic words at specific address in the internal Flash.
However I'm able to erase the internal Flash (by UART ISP) so this can't
be the reason of SWD issue.
For what I have read, there's now way to lock SWD access after an erase
of internal Flash memory.

I used J-Link with LPC17xx for many years in the past without any issue.
What's the problem with LPC54?

Do you have some suggestions?

pozz

unread,
Jun 24, 2022, 5:25:33 AMJun 24
to
Il 23/06/2022 23:38, pozz ha scritto:
> Do you have some suggestions?

Today I found that SWDIO signal isn't able to swing normally between GND
and VDD on broken MCUs. I suspect something bad occurred inside the MCU,
but it's strange it happened on three different boards with three
different MCUs.

Could it be ESD?

dalai lamah

unread,
Jun 24, 2022, 6:22:12 AMJun 24
to
Un bel giorno pozz digitň:

>> Do you have some suggestions?
>
> Today I found that SWDIO signal isn't able to swing normally between GND
> and VDD on broken MCUs. I suspect something bad occurred inside the MCU,
> but it's strange it happened on three different boards with three
> different MCUs.
>
> Could it be ESD?

Or maybe some ground loops, for example if you have connected the J-Link
probe to a desktop PC (or in general a PC not isolated from mains) and your
boards are somewhat connected to mains or earth ground too.

Note that laptops with the charger plugged in are not perflectly isolated
from mains either. I've experienced noise problems in several occasions
with JTAG probes connected to laptops with the charger plugged in. The
noise disappeared just by unplugging the charger.

--
Fletto i muscoli e sono nel vuoto.

David Brown

unread,
Jun 24, 2022, 8:15:22 AMJun 24
to
I don't know these particular microcontrollers in detail, but there are
two things that can cause problems with debugging that I can think of.

One is that you can often re-use the pin as a GPIO. If your program
re-uses the debug pins as GPIO, then maybe this is happening before the
debugger can get access. The debugger should be able to fix this if it
has access to a hard reset pin, but some setups are missing that.

The other is that sometimes you can disable the debugger for security
reasons. I've done that by accident on a microcontroller (an AVR, IIRC).


Of course you could always have had damage from ground loops, spikes
when plugging the debugger in and out (if power is on), short-circuits
when trying to use an oscilloscope probe with clumsy fingers, etc. If
you have access to an X-Ray machine, you might be able to get some idea
about what happened.

pozz

unread,
Jun 24, 2022, 10:26:00 AMJun 24
to
Il 24/06/2022 14:15, David Brown ha scritto:
> On 24/06/2022 11:25, pozz wrote:
>> Il 23/06/2022 23:38, pozz ha scritto:
>>> Do you have some suggestions?
>>
>> Today I found that SWDIO signal isn't able to swing normally between
>> GND and VDD on broken MCUs. I suspect something bad occurred inside
>> the MCU, but it's strange it happened on three different boards with
>> three different MCUs.
>>
>> Could it be ESD?
>
> I don't know these particular microcontrollers in detail, but there are
> two things that can cause problems with debugging that I can think of.
>
> One is that you can often re-use the pin as a GPIO.  If your program
> re-uses the debug pins as GPIO, then maybe this is happening before the
> debugger can get access.  The debugger should be able to fix this if it
> has access to a hard reset pin, but some setups are missing that.

Yes I know that, but these microcontrollers can be booted into ISP UART
mode by pulling down a pin at power up. When the MCU is in ISP mode,
your application doesn't started so the pins stay configured as per
their default, so SWD pins are SWD configured.

In my case, these MCUs enter ISP mode normally (I can send ISP commands
and receive replies), but even in this state the debugger can't connect
via SWD.


> The other is that sometimes you can disable the debugger for security
> reasons.  I've done that by accident on a microcontroller (an AVR, IIRC).

Yes I know that too. LPC546XX MCUs are complex on this topic, but
LPC541XX MCUs are very simple. You can restrict SWD access by writing
magic values on certain positions.
However I can erase the entire Flash through ISP commands, so after
erasing all restrictions should be disabled.


> Of course you could always have had damage from ground loops, spikes
> when plugging the debugger in and out (if power is on), short-circuits
> when trying to use an oscilloscope probe with clumsy fingers, etc.  If
> you have access to an X-Ray machine, you might be able to get some idea
> about what happened.

I admit I don't have professional workbench with anti-static writ strap
band and so on, but I worked for many years without these kind of
problems. It's strange I encountered so many problems concentrated in a
few weeks.

I will understand the problem of ground loops.

pozz

unread,
Jun 24, 2022, 10:28:02 AMJun 24
to
Il 24/06/2022 12:22, dalai lamah ha scritto:
> Un bel giorno pozz digitò:
>
>>> Do you have some suggestions?
>>
>> Today I found that SWDIO signal isn't able to swing normally between GND
>> and VDD on broken MCUs. I suspect something bad occurred inside the MCU,
>> but it's strange it happened on three different boards with three
>> different MCUs.
>>
>> Could it be ESD?
>
> Or maybe some ground loops, for example if you have connected the J-Link
> probe to a desktop PC (or in general a PC not isolated from mains) and your
> boards are somewhat connected to mains or earth ground too.

Yes, I use a desktop PC connected to mains and the boards are supplied
from an AC/DC connected to mains too.

Is this a problematic scenario?

dalai lamah

unread,
Jun 24, 2022, 10:42:33 AMJun 24
to
Un bel giorno pozz digitň:

>> Or maybe some ground loops, for example if you have connected the J-Link
>> probe to a desktop PC (or in general a PC not isolated from mains) and your
>> boards are somewhat connected to mains or earth ground too.
>
> Yes, I use a desktop PC connected to mains and the boards are supplied
> from an AC/DC connected to mains too.
>
> Is this a problematic scenario?

Normally it shouldn't be, but it also depends on what the board does. If it
contains some power stages running at high frequency, it is quite common
(especially if the EMI filtering is subpar) that switching currents can
pass through the AC/DC power supply and create problems.

If this keeps happening, try using a laptop isolated from mains and see if
it helps.

pozz

unread,
Jun 24, 2022, 10:56:49 AMJun 24
to
Il 24/06/2022 16:42, dalai lamah ha scritto:
> Un bel giorno pozz digitò:
>
>>> Or maybe some ground loops, for example if you have connected the J-Link
>>> probe to a desktop PC (or in general a PC not isolated from mains) and your
>>> boards are somewhat connected to mains or earth ground too.
>>
>> Yes, I use a desktop PC connected to mains and the boards are supplied
>> from an AC/DC connected to mains too.
>>
>> Is this a problematic scenario?
>
> Normally it shouldn't be, but it also depends on what the board does. If it
> contains some power stages running at high frequency, it is quite common
> (especially if the EMI filtering is subpar) that switching currents can
> pass through the AC/DC power supply and create problems.

The target board power input is 12Vdc and on-board DC/DC (TPS54231,
570kHz) generates a single 3.3V.


> If this keeps happening, try using a laptop isolated from mains and see if
> it helps.

I hate laptop as development machine, I will try some USB and/or
debugger isolator. However I imaging the problem would arise with
oscilloscope, UART/USB converter and so on.



dalai lamah

unread,
Jun 24, 2022, 11:17:01 AMJun 24
to
Un bel giorno pozz digitň:

>> If this keeps happening, try using a laptop isolated from mains and see if
>> it helps.
>
> I hate laptop as development machine, I will try some USB and/or
> debugger isolator. However I imaging the problem would arise with
> oscilloscope, UART/USB converter and so on.

Maybe, but the peculiarity of the JTAG probe is that it is usually
connected directly to the CPU. Therefore the loop currents may close
directly through the CPU pins, which are quite susceptible to this kind of
things.

This is the reason why sometimes it can be useful to place a buffer (i.e.
74lcx244 or similar) between the probe and the CPU. This may not solve the
problem, but even in the case of a failure you will have to replace just an
inexpensive buffer instead of the entire CPU.

David Brown

unread,
Jun 24, 2022, 12:26:25 PMJun 24
to
On 24/06/2022 16:42, dalai lamah wrote:
> Un bel giorno pozz digitò:
>
Another trick is to make sure you have a separate ground connection
between the board and the PC before attaching the JTAG. A wire from the
board ground to the PC's case is usually fine.

Dimiter_Popoff

unread,
Jun 24, 2022, 1:01:04 PMJun 24
to
That might definitely help. I have seen sparks between a DUT and
the scope probe GND more than once.
But most importantly one has to learn to quickly identify when a part
has been blown.
[which is easy to say
of course, I remember some 10-12 years ago how I spent at least 3 days
to figure out why a 5200B was not completing the boot process, after
some disk activity etc.. Turned out I had killed it (tampering with the
1.5V core power regulator, most likely) in a way *one* of its cachelines
had one of its longwords damaged.... I did all the investigation - just
think tracing through the boot process (no debug port, just the CPU)
because I was not very experienced in replacing a BGA.... well, had to
acquire the experience it took, it was stressful but I managed :) ].

Stef

unread,
Jun 24, 2022, 2:29:45 PMJun 24
to
Anti-static measures will not help for any of the problems David
describes. But they will prevent damage from ESD. Which could also be a
source for your problem.

Has the weather been very dry in those problem weeks? Or did you change
your floor or did you get new shoes?


--
Stef

Eureka!
-- Archimedes

David Brown

unread,
Jun 24, 2022, 2:34:13 PMJun 24
to
My experience with ESD damage is that it is often subtle - it leads to
long-term reliability issues, rather than outright failures. So the
production department at my company is extremely careful about ESD. Up
in the development department, we can be a bit laxer as long as the
devices are not going to customers (or at least, not going further than
the customers' development departments). I can't remember ever having a
failure that I could definitely attribute to ESD damage in my lab, while
I have definitely solved reliability problems by extra ground connections.

Mind you, I would still avoid woollen slippers on a nylon carpet!

Stef

unread,
Jun 24, 2022, 4:12:16 PMJun 24
to
On 2022-06-24 David Brown wrote in comp.arch.embedded:
>>
>
> My experience with ESD damage is that it is often subtle - it leads to
> long-term reliability issues, rather than outright failures. So the

True, only large discharges will have an immediate effect. And you will
probably have felt the spark.

> production department at my company is extremely careful about ESD. Up

Same here. Conductive floors and no access in certain areas without
conductive shoes or conductive straps in normal shoes.

> in the development department, we can be a bit laxer as long as the
> devices are not going to customers (or at least, not going further than
> the customers' development departments).

Also very recognizable. ;-)
We do have ESD matts on most work tables, but wrist straps are seldomly
worn. Floors on development are not conductive, but not static as well.
Have never felt a discharge on touching stuff there.

> I can't remember ever having a
> failure that I could definitely attribute to ESD damage in my lab, while
> I have definitely solved reliability problems by extra ground connections.

I think I had such an incident in my home office before I changed the
floor. With certain footware on the old floor I'd spark all over the
place in dry conditions. Irritating and not good for the equipment.

> Mind you, I would still avoid woollen slippers on a nylon carpet!

Laminate flooring and some plastic shoe soles are also a no-no.


--
Stef

stop bit received

David Brown

unread,
Jun 25, 2022, 4:19:17 AMJun 25
to
I solve that by never wearing shoes inside.

Technically, I fail the conductivity tests everyone has to take before
entering the ESD areas, but it's a "too good" failure. That means I am
fine to handle boards, but I'm not allowed to play with any high voltage
testbenches - the conductive path through me to ground is too good!

Reinhardt Behm

unread,
Jun 26, 2022, 10:25:40 AMJun 26
to
On Fri, 24 Jun 2022 16:25:55 +0200, pozz wrote:


>> Of course you could always have had damage from ground loops, spikes
>> when plugging the debugger in and out (if power is on), short-circuits
>> when trying to use an oscilloscope probe with clumsy fingers, etc.  If
>> you have access to an X-Ray machine, you might be able to get some idea
>> about what happened.
>
> I admit I don't have professional workbench with anti-static writ strap
> band and so on, but I worked for many years without these kind of
> problems. It's strange I encountered so many problems concentrated in a
> few weeks.
>
> I will understand the problem of ground loops.

Take the exact setup and before plugging the debugger measure the voltage
between the CPU board ground and the debugger ground with a multi meter
in AC mode. My guess is that you have stray AC (mains) voltage on either
side (by Y-caps in a PSU or just capacitive coupling over the transformer
to the DC side GND). These stray voltages often reach 50% of AC voltage,
in you case probably 60V-AC. When you plug the connector they might
easily kill a CPU port.


--
Reinhardt

pozz

unread,
Jun 27, 2022, 2:54:37 AMJun 27
to
Sorry I don't follow very well these arguments.

You say to have a separate ground connection between the board and the
PC, but you suggest to connect a wire between them. It seems
contradictory to me.

What do you mean with board ground? GND, the reference voltage for 3.3V
of the MCU? Usually I work on boards with only one low-voltage power
supply input (12Vdc, plus and minus) that is down-scaled to 3.3V by a
DC/DC switching regulator. There isn't an *earth* connection on the
board. Mounting holes are connected to GND, but most of the time, the
board is not mounted on my bench.


pozz

unread,
Jun 27, 2022, 3:06:56 AMJun 27
to
Very dry? On the contrary, now and here we have humid air at least
respect other periods of the year.

No change in floor or shoes.

David Brown

unread,
Jun 27, 2022, 3:23:31 AMJun 27
to
No, the wire is the connection.

The point is to stop any brief surges passing through the debugger and
USB system. When boards get connected or unconnected to supplies and
other equipment, there can sometimes be slight differences in the ground
potential. This can lead to a current pulse, which is sometimes large
due to capacitances, and this in turn can lead to voltage pulses. If
there is a nice, clean path for the current to follow along a direct
connecting wire, that's where the current will go, and the debugger and
USB is spared the pulses.

>
> What do you mean with board ground? GND, the reference voltage for 3.3V
> of the MCU?

Yes, generally.

> Usually I work on boards with only one low-voltage power
> supply input (12Vdc, plus and minus) that is down-scaled to 3.3V by a
> DC/DC switching regulator. There isn't an *earth* connection on the
> board. Mounting holes are connected to GND, but most of the time, the
> board is not mounted on my bench.
>

These mounting holes are often a good point to connect such a ground
wire - just as the mounting screws on the case of the PC are typically a
good point on the PC side.

Ideally, the power supply enters a board at one point, and you have a
star connection from there to any zero volt references (so that noise
from ground for high power switching does not disturb the
microcontroller, or high frequency noise on the microcontroller ground
does not disturb sensitive analogue parts, etc.). And ideally, this
ground connection to the PC also comes from that star. In practice, for
simpler boards a single ground reference plane is usually all you need,
and all you need here is for your ground connection wire to have a good
low impedance connection. A croc clip wire clipped to the mounting
holes or screws is fine.

(I am referring to local ground, or zero volt reference - not "true
ground" or "earth". You only need an earth connection if you have high
voltages and safety concerns.)

David Brown

unread,
Jun 27, 2022, 3:25:43 AMJun 27
to
Humid is good. In electronics production facilities, air humidifiers
are common as humid air lets any static buildups drain away safely. (Of
course, there is always a limit - you don't want condensation on your
boards!)

pozz

unread,
Jun 27, 2022, 4:07:42 AMJun 27
to
I made the measure you suggested and I found around 20Vac between
debugger GND and board GND *before* plugging them.

After adding a good wire connection between PC metallic case (near a
mounting screw) and board GND, the Vac measured goes near to zero.

Could it be this the cause of issues I observed? I will continue with
this connection and see.

Thank you for your suggestions.




Reinhardt Behm

unread,
Jun 27, 2022, 11:11:13 AMJun 27
to
It could not only be, it will be. Imagine you plug the connector, GND is
not contacted first, then the CPU pin sees 20V-AC. That means +20V*sqrt(2)
relative to CPU-GND and -20V*sqrt(2). That is far out of spec. It will
kill the pin.
I had something similar. A colleague had used a 2 wire extension cord for
a soldering station, so no earth connection. I did not know this and
killed the reset input of my controller. When I found out this I
understood why we had several cases of non-functioning boards. The two
wire extension cord was 2$ cheaper than a 3 wire cored. the cost of this
"saving" was several 100$.

--
Reinhardt

pozz

unread,
Jun 27, 2022, 5:50:46 PMJun 27
to
Anyway in my case the power cord of my PC is connected to a UPS and the
AC/DC that powers the board is connected to earth connection of the grid.

Working with two wires power cords is risky and I learned that in the past.

However this isn't the case now, both PC and board have a good 3-wires
power connection, but there's a 20Vac voltage between the grounds.

Stef

unread,
Jun 28, 2022, 5:23:55 AMJun 28
to
On 2022-06-27 pozz wrote in comp.arch.embedded:
>
> Anyway in my case the power cord of my PC is connected to a UPS and the
> AC/DC that powers the board is connected to earth connection of the grid.
>
> Working with two wires power cords is risky and I learned that in the past.
>
> However this isn't the case now, both PC and board have a good 3-wires
> power connection, but there's a 20Vac voltage between the grounds.

With both grounded, there cannot be a 20VAC voltage between the grounds.
(unless there is an extreme amount of current ofcourse, but that will
not be the case)

Your PC is a standard desktop? Then the 0V is connected to the earth
connection of the power plug. This is not the case if you have a laptop.
The supply will have an earth connection, but the DC output is floating.

Your AC/DC probably has a similar construction as a laptop supply: Earth
connection on the power plug and a floating DC output.

That there still is a measurable voltage is because of capacitive
coupling in the AC/DC between AC input and DC output (assuming PC is
really grounded). The voltage you measure depends on the impedance of
that coupling and the impedance of your meter.

Just measured 0V to earth on a few supplies here with a volt meter with
input impedance of > 10 MOhm / < 100 pF:

Recent 150W lab supply: 15 mVAC
Old analog 2x40W supply: CH1: 15VAC, CH2: 5 VAC
Recent 10W switching wall wart: 90VAC

Tried to measure short circuit currents as well, but that was not very
reliable as I don't have an AC uA meter here. Currents are too small.

As the current is very low, this should give no problems. There could be
a small surge if you just happen to connect at the peak of that AC
voltage. But the capacitance behind that should be very low, otherwise
the voltage/current measurements should be different. (Haven't drawn out
the resulting schematic and the consequences though).

So you could do a current measurement between the grounds. I would
expect less than 0.1 mA AC there.

But with an isolated supply there also is a chance of static (DC)
buildup. Depending an the capacity to earth this could give and ESD
discharge on connection.

So all this may not be your problem, but connecting an additional earth
between PC and your supply will not hurt anyway. And it has the (small)
possibility of solvng your problem.


--
Stef

TODAY IS INTERNATIONAL CAPSLOCK DAY!

pozz

unread,
Jun 28, 2022, 6:42:42 AMJun 28
to
Il 28/06/2022 11:23, Stef ha scritto:
> On 2022-06-27 pozz wrote in comp.arch.embedded:
>>
>> Anyway in my case the power cord of my PC is connected to a UPS and the
>> AC/DC that powers the board is connected to earth connection of the grid.
>>
>> Working with two wires power cords is risky and I learned that in the past.
>>
>> However this isn't the case now, both PC and board have a good 3-wires
>> power connection, but there's a 20Vac voltage between the grounds.
>
> With both grounded, there cannot be a 20VAC voltage between the grounds.
> (unless there is an extreme amount of current ofcourse, but that will
> not be the case)

The PSU of desktop PC and AC/DC of board are connected to the earth
conductor, i.e. I'm using 3-wires power cord.

But their separate GND aren't connected.



> Your PC is a standard desktop?

Yes.


> Then the 0V is connected to the earth
> connection of the power plug. This is not the case if you have a laptop.
> The supply will have an earth connection, but the DC output is floating.

No, it's a desktop PC, not a laptop.
I don't know why I have 20Vac between GND of J-Link and board.
Maybe the problem is in the UPS that has some failure.


> Your AC/DC probably has a similar construction as a laptop supply: Earth
> connection on the power plug and a floating DC output.

Yes, but I connect GND (0V of DC output) to earth.

Stef

unread,
Jun 28, 2022, 11:06:28 AMJun 28
to
On 2022-06-28 pozz wrote in comp.arch.embedded:
> Il 28/06/2022 11:23, Stef ha scritto:
>> On 2022-06-27 pozz wrote in comp.arch.embedded:
>>>
>>> Anyway in my case the power cord of my PC is connected to a UPS and the
>>> AC/DC that powers the board is connected to earth connection of the grid.
>>>
>>> Working with two wires power cords is risky and I learned that in the past.
>>>
>>> However this isn't the case now, both PC and board have a good 3-wires
>>> power connection, but there's a 20Vac voltage between the grounds.
>>
>> With both grounded, there cannot be a 20VAC voltage between the grounds.
>> (unless there is an extreme amount of current ofcourse, but that will
>> not be the case)
>
> The PSU of desktop PC and AC/DC of board are connected to the earth
> conductor, i.e. I'm using 3-wires power cord.
>
> But their separate GND aren't connected.
>
>
>> Your PC is a standard desktop?
>
> Yes.
>
>
>> Then the 0V is connected to the earth
>> connection of the power plug. This is not the case if you have a laptop.
>> The supply will have an earth connection, but the DC output is floating.
>
> No, it's a desktop PC, not a laptop.
> I don't know why I have 20Vac between GND of J-Link and board.
> Maybe the problem is in the UPS that has some failure.

Measure voltage between PC case and earth. If that is not zero check the
UPS and the power cables.

>> Your AC/DC probably has a similar construction as a laptop supply: Earth
>> connection on the power plug and a floating DC output.
>
> Yes, but I connect GND (0V of DC output) to earth.

If your PC is connected to earth as well, you should measure 0V between
them. If not there is something wrong.


--
Stef

Original thought is like original sin: both happened before you were born
to people you could not have possibly met.
-- Fran Lebowitz, "Social Studies"
Reply all
Reply to author
Forward
0 new messages