Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def reset(self, reset_type=None):
self.session.notify(Target.Event.PRE_RESET, self)
self._run_token += 1
if reset_type is Target.ResetType.HW:
self.session.probe.reset()
sleep(0.5)
self._ap.dp.init()
self._ap.dp.power_up_debug()
self.fpb.enable()
else:
if reset_type is Target.ResetType.SW_VECTRESET:
mask = CortexM.NVIC_AIRCR_VECTRESET
else:
mask = CortexM.NVIC_AIRCR_SYSRESETREQ
try:
self.write_memory(CortexM.NVIC_AIRCR, CortexM.NVIC_AIRCR_VECTKEY | mask)
self.flush()
except exceptions.TransferError:
self.flush()
def reset(self, reset_type=None):
self.session.notify(Target.EVENT_PRE_RESET, self)
self._run_token += 1
if reset_type is Target.ResetType.HW:
self.session.probe.reset()
sleep(0.5)
self._ap.dp.init()
self._ap.dp.power_up_debug()
self.fpb.enable()
else:
if reset_type is Target.ResetType.SW_VECTRESET:
mask = CortexM.NVIC_AIRCR_VECTRESET
else:
mask = CortexM.NVIC_AIRCR_SYSRESETREQ
try:
self.write_memory(CortexM.NVIC_AIRCR, CortexM.NVIC_AIRCR_VECTKEY | mask)
self.flush()
except exceptions.TransferError:
def default_reset_type(self):
"""! @brief One of the Target.ResetType enums.
@todo Support multiple cores.
"""
try:
resetSequence = self._info.debugs[0].attrib['defaultResetSequence']
if resetSequence == 'ResetHardware':
return Target.ResetType.HW
elif resetSequence == 'ResetSystem':
return Target.ResetType.SW_SYSRESETREQ
elif resetSequence == 'ResetProcessor':
return Target.ResetType.SW_VECTRESET
else:
return Target.ResetType.SW
except (KeyError, IndexError):
return Target.ResetType.SW
def reset(self, reset_type=None):
self.session.notify(Target.EVENT_PRE_RESET, self)
self._run_token += 1
if reset_type is Target.ResetType.HW:
self.session.probe.reset()
self.reinit_dap()
self.fpb.enable()
else:
if reset_type is Target.ResetType.SW_VECTRESET:
mask = CortexM.NVIC_AIRCR_VECTRESET
else:
mask = CortexM.NVIC_AIRCR_SYSRESETREQ
try:
self.write_memory(CortexM.NVIC_AIRCR, CortexM.NVIC_AIRCR_VECTKEY | mask)
self.flush()
except exceptions.TransferError:
self.flush()
elif info.type is bool:
value = value in ("true", "1", "yes", "on")
elif info.type is int:
try:
value = int(value, base=0)
except ValueError:
LOG.warning("invalid value for option '%s'", name)
continue
options[name] = value
return options
## Map to convert from reset type names to enums.
RESET_TYPE_MAP = {
'default': None,
'hw': Target.ResetType.HW,
'sw': Target.ResetType.SW,
'hardware': Target.ResetType.HW,
'software': Target.ResetType.SW,
'sw_sysresetreq': Target.ResetType.SW_SYSRESETREQ,
'sw_vectreset': Target.ResetType.SW_VECTRESET,
'sw_emulated': Target.ResetType.SW_EMULATED,
'sysresetreq': Target.ResetType.SW_SYSRESETREQ,
'vectreset': Target.ResetType.SW_VECTRESET,
'emulated': Target.ResetType.SW_EMULATED,
}
def convert_reset_type(value):
"""! @brief Convert a reset_type session option value to the Target.ResetType enum.
@param value The value of the reset_type session option.
@exception ValueError Raised if an unknown reset_type value is passed.
"""
# The converted option will be None if the option value is 'default'.
if reset_type is None:
reset_type = self.default_reset_type
except ValueError:
reset_type = self.default_reset_type
'''
else:
assert isinstance(reset_type, Target.ResetType)
# If the reset type is just SW, then use our default software reset type.
if reset_type is Target.ResetType.SW:
reset_type = self.default_software_reset_type
# Fall back to emulated sw reset if the vectreset is specified and the core doesn't support it.
if (reset_type is Target.ResetType.SW_VECTRESET) and (not self._supports_vectreset):
reset_type = Target.ResetType.SW_EMULATED
return reset_type
def _perform_reset(self, reset_type):
"""! @brief Perform a reset of the specified type."""
if reset_type is Target.ResetType.HW:
self.ap.dp.link.reset() # self.session.probe.reset()
elif reset_type is Target.ResetType.SW_EMULATED:
self._perform_emulated_reset()
else:
if reset_type is Target.ResetType.SW_SYSRESETREQ:
mask = CortexM.NVIC_AIRCR_SYSRESETREQ
elif reset_type is Target.ResetType.SW_VECTRESET:
mask = CortexM.NVIC_AIRCR_VECTRESET
else:
raise RuntimeError("internal error, unhandled reset type")
try:
self.write_memory(CortexM.NVIC_AIRCR, CortexM.NVIC_AIRCR_VECTKEY | mask)
# Without a flush a transfer error can occur
self.flush()
except exceptions.TransferError:
def default_reset_type(self):
"""! @brief One of the Target.ResetType enums.
@todo Support multiple cores.
"""
try:
resetSequence = self._info.debugs[0].attrib['defaultResetSequence']
if resetSequence == 'ResetHardware':
return Target.ResetType.HW
elif resetSequence == 'ResetSystem':
return Target.ResetType.SW_SYSRESETREQ
elif resetSequence == 'ResetProcessor':
return Target.ResetType.SW_VECTRESET
else:
return Target.ResetType.SW
except (KeyError, IndexError):
return Target.ResetType.SW