Struct probe_rs::Core

source ·
pub struct Core<'probe> { /* private fields */ }
Expand description

Generic core handle representing a physical core on an MCU.

This should be considere as a temporary view of the core which locks the debug probe driver to as single consumer by borrowing it.

As soon as you did your atomic task (e.g. halt the core, read the core state and all other debug relevant info) you should drop this object, to allow potential other shareholders of the session struct to grab a core handle too.

Implementations§

Create a new Core.

Creates a new CoreState

Returns the ID of this core.

Wait until the core is halted. If the core does not halt on its own, a DebugProbeError::Timeout error will be returned.

Check if the core is halted. If the core does not halt on its own, a DebugProbeError::Timeout error will be returned.

Try to halt the core. This function ensures the core is actually halted, and returns a DebugProbeError::Timeout otherwise.

Continue to execute instructions.

Reset the core, and then continue to execute instructions. If the core should be halted after reset, use the reset_and_halt function.

Reset the core, and then immediately halt. To continue execution after reset, use the reset function.

Steps one instruction and then enters halted state again.

Returns the current status of the core.

Read the value of a core register.

Remarks

T can be an unsigned interger type, such as u32 or u64, or it can be RegisterValue to allow the caller to support arbitrary length registers.

To add support to convert to a custom type implement TryInto<CustomType> for RegisterValue].

Errors

If T isn’t large enough to hold the register value an error will be raised.

Write the value of a core register.

Errors

If T is too large to write to the target register an error will be raised.

Returns all the available breakpoint units of the core.

Configure the debug module to ensure software breakpoints will enter Debug Mode.

Returns a list of all the registers of this core.

Set a hardware breakpoint

This function will try to set a hardware breakpoint att address.

The amount of hardware breakpoints which are supported is chip specific, and can be queried using the get_available_breakpoint_units function.

Set a hardware breakpoint

This function will try to clear a hardware breakpoint at address if there exists a breakpoint at that address.

Clear all hardware breakpoints

This function will clear all HW breakpoints which are configured on the target, regardless if they are set by probe-rs, AND regardless if they are enabled or not. Also used as a helper function in Session::drop.

Returns the architecture of the core.

Returns the core type of the core

Determine the instruction set the core is operating in This must be queried while halted as this is a runtime decision for some core types

Determine if an FPU is present. This must be queried while halted as this is a runtime decision for some core types.

Trait Implementations§

Does this interface support native 64-bit wide accesses Read more
Read a 64bit word of at address. Read more
Read a 32bit word of at address. Read more
Read an 8bit word of at address.
Read a block of 64bit words at address. Read more
Read a block of 32bit words at address. Read more
Read a block of 8bit words at address.
Read data from address. Read more
Write a 64bit word at address. Read more
Write a 32bit word at address. Read more
Write an 8bit word at address.
Write a block of 64bit words at address. Read more
Write a block of 32bit words at address. Read more
Write a block of 8bit words at address.
Write a block of 8bit words at address. May use 64 bit memory access, so should only be used if reading memory locations that don’t have side effects. Generally faster than MemoryInterface::write_8. Read more
Returns whether the current platform supports native 8bit transfers.
Flush any outstanding operations. Read more
Reads bytes using 64 bit memory access. Address must be 64 bit aligned and data must be an exact multiple of 8.
Reads bytes using 32 bit memory access. Address must be 32 bit aligned and data must be an exact multiple of 4.
Writes bytes using 64 bit memory access. Address must be 64 bit aligned and data must be an exact multiple of 8.
Writes bytes using 32 bit memory access. Address must be 32 bit aligned and data must be an exact multiple of 8.

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more
Converts self into T using Into<T>. Read more
Causes self to use its Binary implementation when Debug-formatted.
Causes self to use its Display implementation when Debug-formatted.
Causes self to use its LowerExp implementation when Debug-formatted.
Causes self to use its LowerHex implementation when Debug-formatted.
Causes self to use its Octal implementation when Debug-formatted.
Causes self to use its Pointer implementation when Debug-formatted.
Causes self to use its UpperExp implementation when Debug-formatted.
Causes self to use its UpperHex implementation when Debug-formatted.
Formats each item in a sequence. Read more

Returns the argument unchanged.

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

Calls U::from(self).

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

Pipes by value. This is generally the method you want to use. Read more
Borrows self and passes that borrow into the pipe function. Read more
Mutably borrows self and passes that borrow into the pipe function. Read more
Borrows self, then passes self.borrow() into the pipe function. Read more
Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
Borrows self, then passes self.as_ref() into the pipe function.
Mutably borrows self, then passes self.as_mut() into the pipe function.
Borrows self, then passes self.deref() into the pipe function.
Mutably borrows self, then passes self.deref_mut() into the pipe function.
Immutable access to a value. Read more
Mutable access to a value. Read more
Immutable access to the Borrow<B> of a value. Read more
Mutable access to the BorrowMut<B> of a value. Read more
Immutable access to the AsRef<R> view of a value. Read more
Mutable access to the AsMut<R> view of a value. Read more
Immutable access to the Deref::Target of a value. Read more
Mutable access to the Deref::Target of a value. Read more
Calls .tap() only in debug builds, and is erased in release builds.
Calls .tap_mut() only in debug builds, and is erased in release builds.
Calls .tap_borrow() only in debug builds, and is erased in release builds.
Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
Calls .tap_ref() only in debug builds, and is erased in release builds.
Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
Calls .tap_deref() only in debug builds, and is erased in release builds.
Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
Attempts to convert self into T using TryInto<T>. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more