embassy-mcxa

Crates

git

Versions

mcx-a256

Flavors

Flash

Struct Flash 

Source
pub struct Flash { /* private fields */ }
Expand description

Flash driver providing safe access to the MCXA276 internal flash via ROM API.

The driver holds an internal FlashConfig that is initialised by the ROM API’s flash_init function during construction. All subsequent operations pass this config to the ROM API.

Implementations§

Source§

impl Flash

Source

pub fn new() -> Result<Self, Error>

Create and initialise a new flash driver.

This calls the ROM API flash_init to populate the internal flash configuration. Returns an error if the ROM API reports failure.

Source

pub fn blocking_erase(&mut self, address: u32, len: u32) -> Result<(), Error>

Erase flash sectors encompassing the given absolute address range.

  • address: absolute start address (must be sector-aligned).
  • len: number of bytes to erase (must be a multiple of sector size).

Runs inside a critical section and clears caches afterwards.

Source

pub fn blocking_program_phrase( &mut self, address: u32, data: &[u8], ) -> Result<(), Error>

Program a phrase (16 bytes) of data at the given absolute address.

  • address: absolute start address (must be phrase-aligned).
  • data: source buffer whose length must be a multiple of PHRASE_SIZE.

Runs inside a critical section and clears caches afterwards.

Source

pub fn blocking_program( &mut self, address: u32, data: &[u8], ) -> Result<(), Error>

Program a page of data at the given absolute address.

  • address: absolute start address (must be page-aligned).
  • data: source buffer whose length must be a multiple of PAGE_SIZE.

Runs inside a critical section and clears caches afterwards.

Source

pub fn verify_program( &mut self, address: u32, expected: &[u8], ) -> Result<(), Error>

Verify that the programmed data at address matches expected.

On mismatch, returns Error::RomApi with the ROM status code.

Source

pub fn verify_erase_sector( &mut self, address: u32, len: u32, ) -> Result<(), Error>

Verify that the sector(s) starting at address are erased.

Source

pub fn blocking_read_rom( &mut self, address: u32, dest: &mut [u8], ) -> Result<(), Error>

Read flash data using the ROM API.

  • address: absolute start address.
  • dest: destination buffer.
Source

pub fn blocking_read(&self, offset: u32, dest: &mut [u8]) -> Result<(), Error>

Read flash data by direct memory-mapped access (no ROM API call).

  • offset: byte offset from flash base (0x0000_0000).
  • dest: destination buffer.
Source

pub fn rom_api_version(&self) -> u32

Return the ROM API version.

Source

pub fn get_property(&mut self, property: FlashProperty) -> Result<u32, Error>

Get a ROM API flash property value.

Trait Implementations§

Source§

impl ErrorType for Flash

Source§

type Error = Error

Errors returned by this NOR flash.
Source§

impl NorFlash for Flash

Source§

const WRITE_SIZE: usize = 16usize

The minumum number of bytes the storage peripheral can write
Source§

const ERASE_SIZE: usize = 8_192usize

The minumum number of bytes the storage peripheral can erase
Source§

fn erase(&mut self, from: u32, to: u32) -> Result<(), Self::Error>

Erase the given storage range, clearing all data within [from..to]. The given range will contain all 1s afterwards. Read more
Source§

fn write(&mut self, offset: u32, bytes: &[u8]) -> Result<(), Self::Error>

If power is lost during write, the contents of the written words are undefined, but the rest of the page is guaranteed to be unchanged. It is not allowed to write to the same word twice. Read more
Source§

impl ReadNorFlash for Flash

Source§

const READ_SIZE: usize = 1usize

The minumum number of bytes the storage peripheral can read
Source§

fn read(&mut self, offset: u32, bytes: &mut [u8]) -> Result<(), Self::Error>

Read a slice of data from the storage peripheral, starting the read operation at the given address offset, and reading bytes.len() bytes. Read more
Source§

fn capacity(&self) -> usize

The capacity of the peripheral in bytes.

Auto Trait Implementations§

§

impl Freeze for Flash

§

impl RefUnwindSafe for Flash

§

impl Send for Flash

§

impl Sync for Flash

§

impl Unpin for Flash

§

impl UnwindSafe for Flash

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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, 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.