Skip to main content

MemFlash

Struct MemFlash 

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

In-memory NOR flash that simulates real flash semantics:

  • Erased state is all 0xFF.
  • Writes can only flip bits from 1 → 0 (bitwise AND).
  • Erases restore a full sector to 0xFF.
  • Read/write alignment is 4 bytes (word size).
  • Erase granularity is 4096 bytes (sector size).

Implementations§

Source§

impl MemFlash

Source

pub fn new(pages: usize) -> Self

Create a fresh flash of the given number of pages, filled with 0xFF.

Source

pub fn from_bytes(data: Vec<u8>) -> Self

Wrap existing binary data as a flash image.

The data length must be a multiple of FLASH_SECTOR_SIZE.

§Panics

Panics if data.len() is not a multiple of FLASH_SECTOR_SIZE.

Source

pub fn into_inner(self) -> Vec<u8>

Consume the flash and return the underlying buffer.

Source

pub fn len(&self) -> usize

Return the total size of the flash in bytes.

Source

pub fn is_empty(&self) -> bool

Returns whether the flash is empty (zero bytes).

Trait Implementations§

Source§

impl Crc for MemFlash

Source§

fn crc32(init: u32, data: &[u8]) -> u32

Source§

impl ErrorType for MemFlash

Source§

type Error = MemFlashError

Errors returned by this NOR flash.
Source§

impl NorFlash for MemFlash

Source§

const WRITE_SIZE: usize = WORD_SIZE

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

const ERASE_SIZE: usize = FLASH_SECTOR_SIZE

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 MemFlash

Source§

const READ_SIZE: usize = WORD_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§

Blanket Implementations§

Source§

impl<T> AlignedOps for T
where T: Platform,

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.
Source§

impl<T> Platform for T
where T: Crc + NorFlash,