Skip to main content

Flash

Struct Flash 

Source
pub struct Flash<const PAGE_SIZE: usize, const PAGE_NUM: usize, const MINI_WRITE_SIZE: usize = 4, const MINI_READ_SIZE: usize = 1, MODE = Blocking> { /* private fields */ }
Expand description

Internal flash memory driver.

Implementations§

Source§

impl<const PAGE_SIZE: usize, const PAGE_NUM: usize, const MINI_WRITE_SIZE: usize, const MINI_READ_SIZE: usize> Flash<PAGE_SIZE, PAGE_NUM, MINI_WRITE_SIZE, MINI_READ_SIZE, Blocking>

Source

pub fn new_blocking() -> Self

Create a new flash driver, usable in blocking mode.

Source§

impl<const PAGE_SIZE: usize, const PAGE_NUM: usize, const MINI_WRITE_SIZE: usize, const MINI_READ_SIZE: usize, MODE> Flash<PAGE_SIZE, PAGE_NUM, MINI_WRITE_SIZE, MINI_READ_SIZE, MODE>

Source

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

Blocking read.

NOTE: offset is an offset from the flash start, NOT an absolute address. For example, to read address 0x0800_1234 you have to use offset 0x1234.

Source

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

Blocking write.

NOTE: offset is an offset from the flash start, NOT an absolute address. For example, to write address 0x0800_1234 you have to use offset 0x1234.

Source

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

Blocking erase.

NOTE: from and to are offsets from the flash start, NOT an absolute address. For example, to erase address 0x0801_0000 you have to use offset 0x1_0000.

Trait Implementations§

Source§

impl<const PAGE_SIZE: usize, const PAGE_NUM: usize, const MINI_WRITE_SIZE: usize, const MINI_READ_SIZE: usize, MODE> ErrorType for Flash<PAGE_SIZE, PAGE_NUM, MINI_WRITE_SIZE, MINI_READ_SIZE, MODE>

Source§

type Error = Error

Errors returned by this NOR flash.
Source§

impl<const PAGE_SIZE: usize, const PAGE_NUM: usize, const MINI_WRITE_SIZE: usize, const MINI_READ_SIZE: usize, MODE> NorFlash for Flash<PAGE_SIZE, PAGE_NUM, MINI_WRITE_SIZE, MINI_READ_SIZE, MODE>

Source§

const WRITE_SIZE: usize = MINI_WRITE_SIZE

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

const ERASE_SIZE: usize = PAGE_SIZE

The minumum number of bytes the storage peripheral can erase
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§

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§

impl<const PAGE_SIZE: usize, const PAGE_NUM: usize, const MINI_WRITE_SIZE: usize, const MINI_READ_SIZE: usize, MODE> ReadNorFlash for Flash<PAGE_SIZE, PAGE_NUM, MINI_WRITE_SIZE, MINI_READ_SIZE, MODE>

Source§

const READ_SIZE: usize = MINI_READ_SIZE

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<const PAGE_SIZE: usize, const PAGE_NUM: usize, const MINI_WRITE_SIZE: usize, const MINI_READ_SIZE: usize, MODE> Freeze for Flash<PAGE_SIZE, PAGE_NUM, MINI_WRITE_SIZE, MINI_READ_SIZE, MODE>

§

impl<const PAGE_SIZE: usize, const PAGE_NUM: usize, const MINI_WRITE_SIZE: usize, const MINI_READ_SIZE: usize, MODE> RefUnwindSafe for Flash<PAGE_SIZE, PAGE_NUM, MINI_WRITE_SIZE, MINI_READ_SIZE, MODE>
where MODE: RefUnwindSafe,

§

impl<const PAGE_SIZE: usize, const PAGE_NUM: usize, const MINI_WRITE_SIZE: usize, const MINI_READ_SIZE: usize, MODE> Send for Flash<PAGE_SIZE, PAGE_NUM, MINI_WRITE_SIZE, MINI_READ_SIZE, MODE>
where MODE: Send,

§

impl<const PAGE_SIZE: usize, const PAGE_NUM: usize, const MINI_WRITE_SIZE: usize, const MINI_READ_SIZE: usize, MODE> Sync for Flash<PAGE_SIZE, PAGE_NUM, MINI_WRITE_SIZE, MINI_READ_SIZE, MODE>
where MODE: Sync,

§

impl<const PAGE_SIZE: usize, const PAGE_NUM: usize, const MINI_WRITE_SIZE: usize, const MINI_READ_SIZE: usize, MODE> Unpin for Flash<PAGE_SIZE, PAGE_NUM, MINI_WRITE_SIZE, MINI_READ_SIZE, MODE>
where MODE: Unpin,

§

impl<const PAGE_SIZE: usize, const PAGE_NUM: usize, const MINI_WRITE_SIZE: usize, const MINI_READ_SIZE: usize, MODE> UnsafeUnpin for Flash<PAGE_SIZE, PAGE_NUM, MINI_WRITE_SIZE, MINI_READ_SIZE, MODE>

§

impl<const PAGE_SIZE: usize, const PAGE_NUM: usize, const MINI_WRITE_SIZE: usize, const MINI_READ_SIZE: usize, MODE> UnwindSafe for Flash<PAGE_SIZE, PAGE_NUM, MINI_WRITE_SIZE, MINI_READ_SIZE, MODE>
where MODE: UnwindSafe,

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.