Struct probe_rs::Probe

source ·
pub struct Probe { /* private fields */ }
Expand description

The Probe struct is a generic wrapper over the different probes supported.

Examples

Open the first probe found

The list_all and from_probe_info functions can be used to create a new Probe:

use probe_rs::Probe;

let probe_list = Probe::list_all();
let probe = Probe::open(&probe_list[0]);

Implementations§

source§

impl Probe

source

pub fn new(probe: impl DebugProbe + 'static) -> Self

Create a new probe from a more specific probe driver.

source

pub fn from_specific_probe(probe: Box<dyn DebugProbe>) -> Self

Same as Probe::new but without automatic boxing in case you already have a box.

source

pub fn list_all() -> Vec<DebugProbeInfo>

Get a list of all debug probes found. This can be used to select the debug probe which should be used.

source

pub fn open( selector: impl Into<DebugProbeSelector> + Clone ) -> Result<Self, DebugProbeError>

Create a Probe from DebugProbeInfo. Use the Probe::list_all() function to get the information about all probes available.

source

pub fn get_name(&self) -> String

Get the human readable name for the probe.

source

pub fn attach( self, target: impl Into<TargetSelector>, permissions: Permissions ) -> Result<Session, Error>

Attach to the chip.

This runs all the necessary protocol init routines.

If this doesn’t work, you might want to try Probe::attach_under_reset

source

pub fn attach_to_unspecified(&mut self) -> Result<(), Error>

Attach to a target without knowing what target you have at hand. This can be used for automatic device discovery or performing operations on an unspecified target.

source

pub fn attach_to_unspecified_under_reset(&mut self) -> Result<(), Error>

source

pub fn attach_under_reset( self, target: impl Into<TargetSelector>, permissions: Permissions ) -> Result<Session, Error>

Attach to the chip under hard-reset.

This asserts the reset pin via the probe, plays the protocol init routines and deasserts the pin. This is necessary if the chip is not responding to the SWD reset sequence. For example this can happen if the chip has the SWDIO pin remapped.

source

pub fn select_protocol( &mut self, protocol: WireProtocol ) -> Result<(), DebugProbeError>

Selects the transport protocol to be used by the debug probe.

source

pub fn protocol(&self) -> Option<WireProtocol>

Get the currently selected protocol

Depending on the probe, this might not be available.

source

pub fn detach(&mut self) -> Result<(), Error>

Leave debug mode

source

pub fn target_reset(&mut self) -> Result<(), DebugProbeError>

Resets the target device.

source

pub fn target_reset_assert(&mut self) -> Result<(), DebugProbeError>

Asserts the reset of the target. This is always the hard reset which means the reset wire has to be connected to work.

This is not supported on all probes.

source

pub fn target_reset_deassert(&mut self) -> Result<(), DebugProbeError>

Deasserts the reset of the target. This is always the hard reset which means the reset wire has to be connected to work.

This is not supported on all probes.

source

pub fn set_speed(&mut self, speed_khz: u32) -> Result<u32, DebugProbeError>

Configure protocol speed to use in kHz

source

pub fn speed_khz(&self) -> u32

Get the currently used maximum speed for the debug protocol in kHz.

Not all probes report which speed is used, meaning this value is not always the actual speed used. However, the speed should not be any higher than this value.

source

pub fn has_arm_interface(&self) -> bool

Check if the probe has an interface to debug ARM chips.

source

pub fn try_into_arm_interface<'probe>( self ) -> Result<Box<dyn UninitializedArmProbe + 'probe>, (Self, DebugProbeError)>

Try to get a trait object implementing UninitializedArmProbe, which can can be used to communicate with chips using the ARM architecture.

If an error occurs while trying to connect, the probe is returned.

source

pub fn has_riscv_interface(&self) -> bool

Check if the probe has an interface to debug RISCV chips.

source

pub fn try_into_riscv_interface( self ) -> Result<RiscvCommunicationInterface, (Self, RiscvError)>

Try to get a RiscvCommunicationInterface, which can can be used to communicate with chips using the RISCV architecture.

If an error occurs while trying to connect, the probe is returned.

source

pub fn get_swo_interface(&self) -> Option<&dyn SwoAccess>

Gets a SWO interface from the debug probe.

This does not work on all probes.

source

pub fn get_swo_interface_mut(&mut self) -> Option<&mut dyn SwoAccess>

Gets a mutable SWO interface from the debug probe.

This does not work on all probes.

source

pub fn try_as_dap_probe(&mut self) -> Option<&mut dyn DapProbe>

Gets a DAP interface from the debug probe.

This does not work on all probes.

source

pub fn get_target_voltage(&mut self) -> Result<Option<f32>, DebugProbeError>

Try reading the target voltage of via the connected volgate pin.

This does not work on all probes.

Trait Implementations§

source§

impl Debug for Probe

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl !RefUnwindSafe for Probe

§

impl Send for Probe

§

impl !Sync for Probe

§

impl Unpin for Probe

§

impl !UnwindSafe for Probe

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

const: unstable · source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · 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 Twhere U: From<T>,

const: unstable · 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, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
source§

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

§

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

The type returned in the event of a conversion error.
const: unstable · 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