probe_rs::flashing

Enum FlashError

Source
pub enum FlashError {
Show 31 variants AlgorithmNotFound { name: String, algo_name: String, }, NoSuitableNvm { range: Range<u64>, description_source: TargetDescriptionSource, }, ChipEraseFailed { source: Box<dyn Error + Send + Sync + 'static>, }, FlashReadFailed { source: Box<dyn Error + Send + Sync + 'static>, }, EraseFailed { sector_address: u64, source: Box<dyn Error + Send + Sync + 'static>, }, PageWrite { page_address: u64, source: Box<dyn Error + Send + Sync + 'static>, }, Init(Box<dyn Error + Send + Sync + 'static>), Uninit(Box<dyn Error + Send + Sync + 'static>), ChipEraseNotSupported, RoutineCallFailed { name: &'static str, error_code: u32, }, UnableToReadCoreStatus(Error), UnexpectedCoreStatus { status: CoreStatus, }, AddressNotInRegion { address: u32, region: NvmRegion, }, Core(Error), ResetAndHalt(Error), Run(Error), FlashAlgorithmNotLoaded, InvalidFlashAlgorithmLoadAddress { address: u64, }, InvalidFlashAlgorithmStackSize { size: u64, }, InvalidDataAddress { data_load_addr: u64, data_ram: Range<u64>, }, NoFlashLoaderAlgorithmAttached { name: String, range: Range<u64>, }, MultipleDefaultFlashLoaderAlgorithms { region: NvmRegion, }, MultipleFlashLoaderAlgorithmsNoDefault { region: NvmRegion, }, Verify, NoRamDefined { name: String, }, InvalidFlashAlgorithmLength { name: String, algorithm_source: Option<TargetDescriptionSource>, }, DataOverlaps { added_addresses: Range<u64>, existing_addresses: Range<u64>, }, NoNvmCoreAccess(NvmRegion), NoRamCoreAccess(RamRegion), RegisterValueNotSupported(u64), StackOverflowDetected { operation: &'static str, },
}
Expand description

Describes any error that happened during the or in preparation for the flashing procedure.

Variants§

§

AlgorithmNotFound

No flash algorithm was found by the given name.

Fields

§name: String

The name of the target.

§algo_name: String

The name of the algorithm that was not found.

§

NoSuitableNvm

No flash memory contains the entire requested memory range.

Fields

§range: Range<u64>

The requested memory range.

§description_source: TargetDescriptionSource

The source of this target description (was it a built in target or one loaded externally and from what file path?).

§

ChipEraseFailed

Erasing the full chip flash failed.

Fields

§source: Box<dyn Error + Send + Sync + 'static>

The source error of this error.

§

FlashReadFailed

Failed to read data from flash.

Fields

§source: Box<dyn Error + Send + Sync + 'static>

The source error of this error.

§

EraseFailed

Erasing the given flash sector failed.

Fields

§sector_address: u64

The address of the sector that should have been erased.

§source: Box<dyn Error + Send + Sync + 'static>

The source error of this error.

§

PageWrite

Writing the given page failed.

Fields

§page_address: u64

The address of the page that should have been written.

§source: Box<dyn Error + Send + Sync + 'static>

The source error of this error.

§

Init(Box<dyn Error + Send + Sync + 'static>)

Initializing the flash algorithm failed.

§

Uninit(Box<dyn Error + Send + Sync + 'static>)

Uninitializing the flash algorithm failed.

§

ChipEraseNotSupported

This target does not support full chip flash erases.

§

RoutineCallFailed

Calling the given routine returned the given error code.

Fields

§name: &'static str

The name of the routine that was called.

§error_code: u32

The error code the called routine returned.

§

UnableToReadCoreStatus(Error)

Failed to read the core status.

§

UnexpectedCoreStatus

The core entered an unexpected status while executing a flashing operation.

Fields

§status: CoreStatus

The status that the core entered.

§

AddressNotInRegion

The given address was not contained in the given NVM region.

Fields

§address: u32

The address which was not contained in region.

§region: NvmRegion

The region which did not contain address.

§

Core(Error)

An error occurred during the interaction with the core.

§

ResetAndHalt(Error)

Failed to reset, and then halt the CPU.

§

Run(Error)

Failed to start running code on the CPU.

§

FlashAlgorithmNotLoaded

The RAM contents did not match the flash algorithm.

§

InvalidFlashAlgorithmLoadAddress

Failed to load the flash algorithm into RAM at given address. This can happen if there is not enough space.

Check the algorithm code and settings before you try again.

Fields

§address: u64

The address where the algorithm was supposed to be loaded to.

§

InvalidFlashAlgorithmStackSize

Failed to configure a valid stack size for the flash algorithm.

Fields

§size: u64

The size of the stack that was tried to be configured.

§

InvalidDataAddress

Failed to configure the data region of a flash algorithm.

Fields

§data_load_addr: u64

The address where the data was supposed to be loaded to.

§data_ram: Range<u64>

The range of the data memory.

§

NoFlashLoaderAlgorithmAttached

No flash algorithm was linked to this target.

Fields

§name: String

The name of the chip.

§range: Range<u64>

The memory region that was tried to be written.

§

MultipleDefaultFlashLoaderAlgorithms

More than one matching flash algorithm was found for the given memory range and all of them is marked as default.

Fields

§region: NvmRegion

The region which matched more than one flash algorithm.

§

MultipleFlashLoaderAlgorithmsNoDefault

More than one matching flash algorithm was found for the given memory range and none of them is marked as default.

Fields

§region: NvmRegion

The region which matched more than one flash algorithm.

§

Verify

Flash content verification failed.

§

NoRamDefined

The given chip has no RAM defined.

Fields

§name: String

The name of the chip.

§

InvalidFlashAlgorithmLength

The given flash algorithm did not have a length multiple of 4 bytes.

This means that the flash algorithm that was loaded is broken.

Fields

§name: String

The name of the flash algorithm.

§algorithm_source: Option<TargetDescriptionSource>

The source of the flash algorithm (was it a built in target or one loaded externally and from what file path?).

§

DataOverlaps

Two blocks of data overlap each other which means the loaded binary is broken.

Please check your data and try again.

Fields

§added_addresses: Range<u64>

The address range that was tried to be added.

§existing_addresses: Range<u64>

The address range that was already present.

§

NoNvmCoreAccess(NvmRegion)

No core can access this NVM region.

§

NoRamCoreAccess(RamRegion)

No core can access this RAM region.

§

RegisterValueNotSupported(u64)

The register value supplied for this flash algorithm is out of the supported range.

§

StackOverflowDetected

Stack overflow while flashing.

Fields

§operation: &'static str

The operation that caused the stack overflow.

Trait Implementations§

Source§

impl Debug for FlashError

Source§

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

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

impl Display for FlashError

Source§

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

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

impl Error for FlashError

Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl From<FlashError> for FileDownloadError

Source§

fn from(source: FlashError) -> Self

Converts to this type from the input type.

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> 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> 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> ToString for T
where T: Display + ?Sized,

Source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
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