modm API documentation
modm::BlockDevice Class Reference

#include <modm/architecture/interface/block_device.hpp>

Inheritance diagram for modm::BlockDevice:
modm::BdHeap< DeviceSize_, externalMemory > modm::BdMirror< BlockDeviceA, BlockDeviceB > modm::BdSpiFlash< Spi, Cs, flashSize > modm::BdSpiStackFlash< SpiBlockDevice, DieCount >

Public Typedefs

using bd_address_t = uint32_t
 
using bd_size_t = uint32_t
 

Public Member Functions

 BlockDevice (const BlockDevice &) = delete
 
BlockDevice & operator= (const BlockDevice &) = delete
 
modm::ResumableResult< bool > initialize ()
 Initializes the storage hardware.
 
modm::ResumableResult< bool > deinitialize ()
 Deinitializes the storage hardware.
 
modm::ResumableResult< bool > read (uint8_t *buffer, bd_address_t address, bd_size_t size)
 
modm::ResumableResult< bool > program (const uint8_t *buffer, bd_address_t address, bd_size_t size)
 
modm::ResumableResult< bool > erase (bd_address_t address, bd_size_t size)
 
modm::ResumableResult< bool > write (const uint8_t *buffer, bd_address_t address, bd_size_t size)
 

Static Public Attributes

static constexpr bd_size_t BlockSizeRead = 1
 
static constexpr bd_size_t BlockSizeWrite = 1
 
static constexpr bd_size_t BlockSizeErase = 1
 

Detailed Description

Interface of a Block Device

Access to storage devices like flash chips

Author
Raphael Lehmann

Member Function Documentation

modm::ResumableResult<bool> modm::BlockDevice::erase ( bd_address_t  address,
bd_size_t  size 
)

Erase blocks

The state of an erased block is undefined until it has been programmed

Parameters
addressAddress of block to begin erasing
sizeSize to erase in bytes (multiple of read block size)
Returns
True on success
modm::ResumableResult<bool> modm::BlockDevice::program ( const uint8_t *  buffer,
bd_address_t  address,
bd_size_t  size 
)

Program blocks with data

Any block has to be erased prior to being programmed

Parameters
bufferBuffer of data to write to blocks
addressAddress of first block to begin writing to
sizeSize to write in bytes (multiple of read block size)
Returns
True on success
modm::ResumableResult<bool> modm::BlockDevice::read ( uint8_t *  buffer,
bd_address_t  address,
bd_size_t  size 
)

Read data from one or more blocks

Parameters
bufferBuffer to read data into
addressAddress to begin reading from
sizeSize to read in bytes (multiple of read block size)
Returns
True on success
modm::ResumableResult<bool> modm::BlockDevice::write ( const uint8_t *  buffer,
bd_address_t  address,
bd_size_t  size 
)

Writes data to one or more blocks after erasing them

The blocks are erased proir to being programmed

Parameters
bufferBuffer of data to write to blocks
addressAddress of first block to begin writing to
sizeSize to write in bytes (multiple of read block size)
Returns
True on success

Member Data Documentation

constexpr bd_size_t modm::BlockDevice::BlockSizeRead = 1
staticconstexpr

Minimum block sizes for block device operations

Most persistent storage devices require program(), erase() and sometimes read() operations to be executed on fixed sized blocks.


The documentation for this class was generated from the following file: