probe_rs::architecture::arm

Struct ArmCommunicationInterface

Source
pub struct ArmCommunicationInterface<S: ArmDebugState> { /* private fields */ }
Expand description

An implementation of the communication protocol between probe and target. Can be used to perform all sorts of generic debug access on ARM targets with probes that support low level access. (E.g. CMSIS-DAP and J-Link support this, ST-Link does not)

Implementations§

Source§

impl<'interface> ArmCommunicationInterface<Initialized>

Source

pub fn core_status_notification(&mut self, state: CoreStatus)

Inform the probe of the CoreStatus of the chip attached to the probe.

Source

pub fn memory_interface( &'interface mut self, access_port_address: &FullyQualifiedApAddress, ) -> Result<Box<dyn ArmMemoryInterface + 'interface>, ArmError>

Tries to obtain a memory interface which can be used to read memory from ARM targets.

Source§

impl ArmCommunicationInterface<Initialized>

Source

pub fn read_chip_info_from_rom_table( &mut self, dp: DpAddress, ) -> Result<Option<ArmChipInfo>, ArmError>

Reads the chip info from the romtable of given debug port.

Trait Implementations§

Source§

impl ArmProbeInterface for ArmCommunicationInterface<Initialized>

Source§

fn memory_interface( &mut self, access_port_address: &FullyQualifiedApAddress, ) -> Result<Box<dyn ArmMemoryInterface + '_>, ArmError>

Returns a memory interface to access the target’s memory.
Source§

fn read_chip_info_from_rom_table( &mut self, dp: DpAddress, ) -> Result<Option<ArmChipInfo>, ArmError>

Reads the chip info from the romtable of given debug port.
Source§

fn current_debug_port(&self) -> DpAddress

Return the currently connected debug port.
Source§

fn close(self: Box<Self>) -> Probe

Closes the interface and returns back the generic probe it consumed.
Source§

fn access_ports( &mut self, dp: DpAddress, ) -> Result<BTreeSet<FullyQualifiedApAddress>, ArmError>

Returns a vector of all the access ports the current debug port has. Read more
Source§

impl DapAccess for ArmCommunicationInterface<Initialized>

Source§

fn read_raw_dp_register( &mut self, dp: DpAddress, address: u8, ) -> Result<u32, ArmError>

Read a Debug Port register. Read more
Source§

fn write_raw_dp_register( &mut self, dp: DpAddress, address: u8, value: u32, ) -> Result<(), ArmError>

Write a Debug Port register. Read more
Source§

fn read_raw_ap_register( &mut self, ap: &FullyQualifiedApAddress, address: u8, ) -> Result<u32, ArmError>

Read an Access Port register. Read more
Source§

fn read_raw_ap_register_repeated( &mut self, ap: &FullyQualifiedApAddress, address: u8, values: &mut [u32], ) -> Result<(), ArmError>

Read multiple values from the same Access Port register. Read more
Source§

fn write_raw_ap_register( &mut self, ap: &FullyQualifiedApAddress, address: u8, value: u32, ) -> Result<(), ArmError>

Write an AP register. Read more
Source§

fn write_raw_ap_register_repeated( &mut self, ap: &FullyQualifiedApAddress, address: u8, values: &[u32], ) -> Result<(), ArmError>

Write multiple values to the same Access Port register. Read more
Source§

impl<S: Debug + ArmDebugState> Debug for ArmCommunicationInterface<S>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<S: ArmDebugState> Drop for ArmCommunicationInterface<S>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl SwoAccess for ArmCommunicationInterface<Initialized>

Source§

fn enable_swo(&mut self, config: &SwoConfig) -> Result<(), ArmError>

Configure a SwoAccess interface for reading SWO data.
Source§

fn disable_swo(&mut self) -> Result<(), ArmError>

Disable SWO reading on this SwoAccess interface.
Source§

fn read_swo_timeout(&mut self, timeout: Duration) -> Result<Vec<u8>, ArmError>

Read SWO data for up to timeout duration. Read more
Source§

fn read_swo(&mut self) -> Result<Vec<u8>, ArmError>

Read any available SWO data without waiting. Read more
Source§

fn swo_poll_interval_hint(&mut self, config: &SwoConfig) -> Option<Duration>

Request an estimated best time to wait between polls of read_swo. Read more
Source§

fn swo_buffer_size(&mut self) -> Option<usize>

Request the probe SWO buffer size, if known.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> ApAccess for T
where T: DapAccess,

Source§

fn read_ap_register<PORT, R>(&mut self, port: &PORT) -> Result<R, ArmError>
where PORT: AccessPortType + ApRegAccess<R> + ?Sized, R: Register,

Read a register of the access port.
Source§

fn write_ap_register<PORT, R>( &mut self, port: &PORT, register: R, ) -> Result<(), ArmError>
where PORT: AccessPortType + ApRegAccess<R> + ?Sized, R: Register,

Write a register of the access port.
Source§

fn write_ap_register_repeated<PORT, R>( &mut self, port: &PORT, values: &[u32], ) -> Result<(), ArmError>
where PORT: AccessPortType + ApRegAccess<R> + ?Sized, R: Register,

Write a register of the access port using a block transfer. This can be used to write multiple values to the same register.
Source§

fn read_ap_register_repeated<PORT, R>( &mut self, port: &PORT, values: &mut [u32], ) -> Result<(), ArmError>
where PORT: AccessPortType + ApRegAccess<R> + ?Sized, R: Register,

Read a register of the access port using a block transfer. This can be used to read multiple values from the same register.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Conv for T

Source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
Source§

impl<T> DpAccess for T
where T: DapAccess,

Source§

fn read_dp_register<R>(&mut self, dp: DpAddress) -> Result<R, ArmError>
where R: DpRegister,

Reads a debug port register. Read more
Source§

fn write_dp_register<R>( &mut self, dp: DpAddress, register: R, ) -> Result<(), ArmError>
where R: DpRegister,

Write a debug port register. Read more
Source§

impl<T> FmtForward for T

Source§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
Source§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
Source§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
Source§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
Source§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
Source§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
Source§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
Source§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
Source§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
Source§

impl<T> Pipe for T
where T: ?Sized,

Source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
Source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
Source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
Source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows 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
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows 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
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
Source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Tap for T

Source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
Source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
Source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
Source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
Source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
Source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
Source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
Source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
Source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
Source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .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
where Self: BorrowMut<B>, B: ?Sized,

Calls .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
where Self: AsRef<R>, R: ?Sized,

Calls .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
where Self: AsMut<R>, R: ?Sized,

Calls .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
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
Source§

impl<T> TryConv for T

Source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> MaybeSendSync for T