pub struct AtSAME5x {}
Expand description
Marker struct indicating initialization sequencing for ATSAM D5x/E5x family parts.
Implementations§
source§impl AtSAME5x
impl AtSAME5x
sourcepub fn erase_all(
&self,
memory: &mut dyn ArmProbe,
permissions: &Permissions
) -> Result<(), ArmError>
pub fn erase_all(
&self,
memory: &mut dyn ArmProbe,
permissions: &Permissions
) -> Result<(), ArmError>
Perform a Chip-Erase operation
Issue a Chip-Erase command to the device provided that permission
grants erase-all
.
Errors
This operation can fail due to insufficient permissions, or if Chip-Erase Lock is
enabled (this lock can only be released from within the device firmare).
After a successful Chip-Erase a DebugProbeError::ReAttachRequired
is returned
to signal that a re-connect is needed for the DSU to start operating in unlocked mode.
sourcepub fn reset_hardware_with_extension(
&self,
interface: &mut dyn SwdSequence
) -> Result<(), ArmError>
pub fn reset_hardware_with_extension(
&self,
interface: &mut dyn SwdSequence
) -> Result<(), ArmError>
Perform a hardware reset in a way that puts the core into CPU Reset Extension
CPU Reset Extension is a vendor specific feature that allows the CPU core to remain in reset while the rest of the debugging subsystem can run and initialize itself.
For more details see: 12.6.2 CPU Reset Extension in the SAM D5/E5 Family Data Sheet
Errors
Subject to probe communication errors
Trait Implementations§
source§impl ArmDebugSequence for AtSAME5x
impl ArmDebugSequence for AtSAME5x
source§fn reset_hardware_assert(
&self,
interface: &mut dyn DapProbe
) -> Result<(), ArmError>
fn reset_hardware_assert(
&self,
interface: &mut dyn DapProbe
) -> Result<(), ArmError>
reset_hardware_assert
for ATSAM D5x/E5x devices
Instead of keeping nReset
asserted, the device is instead put into CPU Reset Extension
which will keep the CPU Core in reset until manually released by the debugger probe.
source§fn reset_hardware_deassert(
&self,
memory: &mut dyn ArmProbe
) -> Result<(), ArmError>
fn reset_hardware_deassert(
&self,
memory: &mut dyn ArmProbe
) -> Result<(), ArmError>
reset_hardware_deassert
for ATSAM D5x/E5x devices
Instead of de-asserting nReset
here (this was already done during the CPU Reset Extension process),
the device is released from Reset Extension.
source§fn debug_device_unlock(
&self,
interface: &mut dyn ArmProbeInterface,
default_ap: MemoryAp,
permissions: &Permissions
) -> Result<(), ArmError>
fn debug_device_unlock(
&self,
interface: &mut dyn ArmProbeInterface,
default_ap: MemoryAp,
permissions: &Permissions
) -> Result<(), ArmError>
debug_device_unlock
for ATSAM D5x/E5x devices
First check the device lock status by querying its Device Service Unit (DSU).
If the device is already unlocked then return Ok
directly.
If the device is locked the following happens:
- If the
erase_all
permission is missing return the appropriate error - If the Chip-Erase command is also locked then return an error since Chip-Erase Unlock can only be done from within the device firmware.
- Perform a Chip-Erase to unlock the device and if successful return a
DebugProbeError::ReAttachRequired
to signal that a probe re-attach is required before the newunlocked
status takes effect.
source§fn debug_erase_sequence(&self) -> Option<Arc<dyn DebugEraseSequence>>
fn debug_erase_sequence(&self) -> Option<Arc<dyn DebugEraseSequence>>
source§fn debug_port_setup(&self, interface: &mut dyn DapProbe) -> Result<(), ArmError>
fn debug_port_setup(&self, interface: &mut dyn DapProbe) -> Result<(), ArmError>
DebugPortSetup
function from the ARM SVD Debug Description.source§fn debug_port_start(
&self,
interface: &mut ArmCommunicationInterface<Initialized>,
dp: DpAddress
) -> Result<(), ArmError>
fn debug_port_start(
&self,
interface: &mut ArmCommunicationInterface<Initialized>,
dp: DpAddress
) -> Result<(), ArmError>
DebugPortStart
function from the ARM SVD Debug Description.source§fn debug_core_start(
&self,
core: &mut dyn ArmProbe,
core_type: CoreType,
debug_base: Option<u64>,
cti_base: Option<u64>
) -> Result<(), ArmError>
fn debug_core_start(
&self,
core: &mut dyn ArmProbe,
core_type: CoreType,
debug_base: Option<u64>,
cti_base: Option<u64>
) -> Result<(), ArmError>
DebugCoreStart
function from the ARM SVD Debug Description.source§fn reset_catch_set(
&self,
core: &mut dyn ArmProbe,
core_type: CoreType,
debug_base: Option<u64>
) -> Result<(), ArmError>
fn reset_catch_set(
&self,
core: &mut dyn ArmProbe,
core_type: CoreType,
debug_base: Option<u64>
) -> Result<(), ArmError>
ResetCatchSet
function from
the ARM SVD Debug Description.source§fn reset_catch_clear(
&self,
core: &mut dyn ArmProbe,
core_type: CoreType,
debug_base: Option<u64>
) -> Result<(), ArmError>
fn reset_catch_clear(
&self,
core: &mut dyn ArmProbe,
core_type: CoreType,
debug_base: Option<u64>
) -> Result<(), ArmError>
ResetCatchSet
function from
the ARM SVD Debug Description.source§fn trace_start(
&self,
interface: &mut dyn ArmProbeInterface,
components: &[CoresightComponent],
_sink: &TraceSink
) -> Result<(), ArmError>
fn trace_start(
&self,
interface: &mut dyn ArmProbeInterface,
components: &[CoresightComponent],
_sink: &TraceSink
) -> Result<(), ArmError>
source§fn reset_system(
&self,
interface: &mut dyn ArmProbe,
core_type: CoreType,
debug_base: Option<u64>
) -> Result<(), ArmError>
fn reset_system(
&self,
interface: &mut dyn ArmProbe,
core_type: CoreType,
debug_base: Option<u64>
) -> Result<(), ArmError>
ResetSystem
function from the ARM SVD Debug Description.source§fn recover_support_start(
&self,
_interface: &mut dyn ArmProbe
) -> Result<(), ArmError>
fn recover_support_start(
&self,
_interface: &mut dyn ArmProbe
) -> Result<(), ArmError>
RecoverSupportStart
function from the ARM SVD Debug Description.source§fn debug_core_stop(
&self,
_interface: &mut dyn ArmProbeInterface
) -> Result<(), ArmError>
fn debug_core_stop(
&self,
_interface: &mut dyn ArmProbeInterface
) -> Result<(), ArmError>
Auto Trait Implementations§
impl RefUnwindSafe for AtSAME5x
impl Send for AtSAME5x
impl Sync for AtSAME5x
impl Unpin for AtSAME5x
impl UnwindSafe for AtSAME5x
Blanket Implementations§
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere
Self: Borrow<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere
Self: Borrow<B>,
B: 'a + ?Sized,
R: 'a,
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> Rwhere
Self: BorrowMut<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> Rwhere
Self: BorrowMut<B>,
B: 'a + ?Sized,
R: 'a,
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere
Self: AsRef<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere
Self: AsRef<U>,
U: 'a + ?Sized,
R: 'a,
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere
Self: AsMut<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere
Self: AsMut<U>,
U: 'a + ?Sized,
R: 'a,
self
, then passes self.as_mut()
into the pipe
function.§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere
Self: Deref<Target = T>,
T: ?Sized,
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere
Self: Deref<Target = T>,
T: ?Sized,
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere
Self: DerefMut<Target = T> + Deref,
T: ?Sized,
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere
Self: DerefMut<Target = T> + Deref,
T: ?Sized,
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
.tap_ref_mut()
only in debug builds, and is erased in release
builds.