Skip to content

Commit b5beb9d

Browse files
committed
Always use DP to perform reset.
All calls to reset() and assert_reset() are made to the DP so they are funneled through a single point that is above the probe level.
1 parent d3d4130 commit b5beb9d

File tree

6 files changed

+20
-10
lines changed

6 files changed

+20
-10
lines changed

pyocd/commands/values.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,13 @@ def modify(self, args):
243243
raise exceptions.CommandError("missing reset state")
244244
state = int(args[0], base=0)
245245
self.context.writef("nRESET = {}", state)
246-
self.context.probe.assert_reset((state == 0))
246+
247+
# Use the probe to assert reset if the DP doesn't exist for some reason, otherwise
248+
# use the DP so reset notifications are sent.
249+
if self.context.target.dp is None:
250+
self.context.probe.assert_reset((state == 0))
251+
else:
252+
self.context.target.dp.assert_reset((state == 0))
247253

248254
class SessionOptionValue(ValueBase):
249255
INFO = {

pyocd/core/soc_target.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,11 @@ def remove_watchpoint(self, addr, size, type):
211211
def reset(self, reset_type=None):
212212
# Perform a hardware reset if there is not a core.
213213
if self.selected_core is None:
214-
self.session.probe.reset()
214+
# Use the probe to reset if the DP doesn't exist yet.
215+
if self.dp is None:
216+
self.session.probe.reset()
217+
else:
218+
self.dp.reset()
215219
return
216220
self.selected_core.reset(reset_type)
217221

pyocd/coresight/coresight_target.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,10 +105,10 @@ def pre_connect(self):
105105
mode = self.session.options.get('connect_mode')
106106
if mode == 'pre-reset':
107107
LOG.info("Performing connect pre-reset")
108-
self.session.probe.reset()
108+
self.dp.reset()
109109
elif mode == 'under-reset':
110110
LOG.info("Asserting reset prior to connect")
111-
self.session.probe.assert_reset(True)
111+
self.dp.assert_reset(True)
112112

113113
def perform_halt_on_connect(self):
114114
"""! @brief Halt cores.
@@ -139,7 +139,7 @@ def post_connect(self):
139139
mode = self.session.options.get('connect_mode')
140140
if mode == 'under-reset':
141141
LOG.info("Deasserting reset post connect")
142-
self.session.probe.assert_reset(False)
142+
self.dp.assert_reset(False)
143143

144144
LOG.debug("Clearing reset catch")
145145
# Apply to all cores.

pyocd/coresight/cortex_m.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -706,7 +706,7 @@ def _perform_reset(self, reset_type):
706706
"""! @brief Perform a reset of the specified type."""
707707
assert isinstance(reset_type, Target.ResetType)
708708
if reset_type is Target.ResetType.HW:
709-
self.session.probe.reset()
709+
self.session.target.dp.reset()
710710
elif reset_type is Target.ResetType.SW_EMULATED:
711711
self._perform_emulated_reset()
712712
else:

pyocd/target/builtin/target_STM32F767xx.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ def __init__(self, session):
124124
super(STM32F767xx, self).__init__(session, self.MEMORY_MAP)
125125

126126
def assert_reset_for_connect(self):
127-
self.dp.probe.assert_reset(1)
127+
self.dp.assert_reset(1)
128128

129129
def safe_reset_and_halt(self):
130130
assert self.dp.is_reset_asserted()
@@ -143,7 +143,7 @@ def safe_reset_and_halt(self):
143143
# Prevent disabling bus clock/power in low power modes.
144144
ap.write32(DBGMCU.CR, DBGMCU.CR_VALUE)
145145

146-
self.dp.probe.assert_reset(0)
146+
self.dp.assert_reset(0)
147147
time.sleep(0.01)
148148

149149
# Restore DEMCR original value.

pyocd/target/family/target_psoc6.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def reset(self, reset_type=None):
3636
self.session.notify(Target.Event.PRE_RESET, self)
3737
self._run_token += 1
3838
if reset_type is Target.ResetType.HW:
39-
self.session.probe.reset()
39+
self._ap.dp.reset()
4040
sleep(0.5)
4141
self._ap.dp.init()
4242
self._ap.dp.power_up_debug()
@@ -191,7 +191,7 @@ def reset(self, reset_type=None):
191191
self._run_token += 1
192192

193193
if reset_type is Target.ResetType.HW:
194-
self.session.probe.reset()
194+
self._ap.dp.reset()
195195
self.reinit_dap()
196196
self.fpb.enable()
197197

0 commit comments

Comments
 (0)