pub struct AtSAM {}
Expand description
Marker struct indicating initialization sequencing for Atmel/Microchip ATSAM family parts.
Implementations§
Source§impl AtSAM
impl AtSAM
Sourcepub fn erase_all(
&self,
memory: &mut dyn ArmMemoryInterface,
permissions: &Permissions,
) -> Result<(), ArmError>
pub fn erase_all( &self, memory: &mut dyn ArmMemoryInterface, 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 firmware).
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
Sourcepub fn release_reset_extension(
&self,
memory: &mut dyn ArmMemoryInterface,
) -> Result<(), ArmError>
pub fn release_reset_extension( &self, memory: &mut dyn ArmMemoryInterface, ) -> Result<(), ArmError>
Release the CPU core from Reset Extension
Clear the DSU Reset Extension bit, which releases the core from reset extension.
§Errors
Subject to probe communication errors
Trait Implementations§
Source§impl ArmDebugSequence for AtSAM
impl ArmDebugSequence for AtSAM
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 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 ArmMemoryInterface,
) -> Result<(), ArmError>
fn reset_hardware_deassert( &self, memory: &mut dyn ArmMemoryInterface, ) -> Result<(), ArmError>
reset_hardware_deassert
for ATSAM 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: &FullyQualifiedApAddress,
permissions: &Permissions,
) -> Result<(), ArmError>
fn debug_device_unlock( &self, interface: &mut dyn ArmProbeInterface, default_ap: &FullyQualifiedApAddress, permissions: &Permissions, ) -> Result<(), ArmError>
debug_device_unlock
for ATSAM 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_core_start(
&self,
interface: &mut dyn ArmProbeInterface,
core_ap: &FullyQualifiedApAddress,
_core_type: CoreType,
_debug_base: Option<u64>,
_cti_base: Option<u64>,
) -> Result<(), ArmError>
fn debug_core_start( &self, interface: &mut dyn ArmProbeInterface, core_ap: &FullyQualifiedApAddress, _core_type: CoreType, _debug_base: Option<u64>, _cti_base: Option<u64>, ) -> Result<(), ArmError>
DebugCoreStart
function from the ARM SVD Debug Description.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,
dp: DpAddress,
) -> Result<(), ArmError>
fn debug_port_setup( &self, interface: &mut dyn DapProbe, dp: DpAddress, ) -> Result<(), ArmError>
DebugPortSetup
function
from the ARM SVD Debug Description. Read moreSource§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 reset_catch_set(
&self,
core: &mut dyn ArmMemoryInterface,
core_type: CoreType,
debug_base: Option<u64>,
) -> Result<(), ArmError>
fn reset_catch_set( &self, core: &mut dyn ArmMemoryInterface, 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 ArmMemoryInterface,
core_type: CoreType,
debug_base: Option<u64>,
) -> Result<(), ArmError>
fn reset_catch_clear( &self, core: &mut dyn ArmMemoryInterface, 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 ArmMemoryInterface,
core_type: CoreType,
debug_base: Option<u64>,
) -> Result<(), ArmError>
fn reset_system( &self, interface: &mut dyn ArmMemoryInterface, 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 ArmMemoryInterface,
) -> Result<(), ArmError>
fn recover_support_start( &self, _interface: &mut dyn ArmMemoryInterface, ) -> Result<(), ArmError>
RecoverSupportStart
function from the ARM SVD Debug Description.Source§fn debug_core_stop(
&self,
interface: &mut dyn ArmMemoryInterface,
core_type: CoreType,
) -> Result<(), ArmError>
fn debug_core_stop( &self, interface: &mut dyn ArmMemoryInterface, core_type: CoreType, ) -> Result<(), ArmError>
Source§fn debug_port_stop(
&self,
interface: &mut dyn DapProbe,
dp: DpAddress,
) -> Result<(), ArmError>
fn debug_port_stop( &self, interface: &mut dyn DapProbe, dp: DpAddress, ) -> Result<(), ArmError>
Source§fn debug_port_connect(
&self,
interface: &mut dyn DapProbe,
dp: DpAddress,
) -> Result<(), ArmError>
fn debug_port_connect( &self, interface: &mut dyn DapProbe, dp: DpAddress, ) -> Result<(), ArmError>
Source§fn prepare_running_on_ram(
&self,
vector_table_addr: u64,
session: &mut Session,
) -> Result<(), Error>
fn prepare_running_on_ram( &self, vector_table_addr: u64, session: &mut Session, ) -> Result<(), Error>
Source§fn allowed_access_ports(&self) -> Vec<u8>
fn allowed_access_ports(&self) -> Vec<u8>
Auto Trait Implementations§
impl Freeze for AtSAM
impl RefUnwindSafe for AtSAM
impl Send for AtSAM
impl Sync for AtSAM
impl Unpin for AtSAM
impl UnwindSafe for AtSAM
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.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>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§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 moreSource§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 moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read moreSource§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.Source§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.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.