Block device using heap (RAM)
More...
#include <modm/driver/storage/block_device_heap.hpp>
|
using | bd_address_t = uint32_t |
|
using | bd_size_t = uint32_t |
|
|
modm::ResumableResult< bool > | initialize () |
| Initializes the memory with zeros.
|
|
modm::ResumableResult< bool > | initialize (uint8_t *externalMemoryAddress) |
| Data will be stored at externalMemoryAddress.
|
|
modm::ResumableResult< bool > | deinitialize () |
| Deinitializes nothing.
|
|
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) |
|
void | setMemoryAddress (uint8_t *memory) |
|
modm::ResumableResult< bool > | deinitialize () |
| Deinitializes the storage hardware.
|
|
modm::ResumableResult< bool > | erase (bd_address_t address, bd_size_t size) |
|
modm::ResumableResult< bool > | initialize () |
| Initializes the storage hardware.
|
|
modm::ResumableResult< bool > | program (const uint8_t *buffer, bd_address_t address, bd_size_t size) |
|
modm::ResumableResult< bool > | read (uint8_t *buffer, 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 constexpr bd_size_t | BlockSizeRead = 1 |
|
static constexpr bd_size_t | BlockSizeWrite = 1 |
|
static constexpr bd_size_t | BlockSizeErase = 1 |
|
static constexpr bd_size_t | DeviceSize = DeviceSize_ |
|
static constexpr bd_size_t | BlockSizeErase = 1 |
|
static constexpr bd_size_t | BlockSizeRead = 1 |
|
static constexpr bd_size_t | BlockSizeWrite = 1 |
|
|
int8_t | getResumableDepth () const |
|
bool | isResumableRunning () const |
|
void | stopResumable () |
|
template<size_t DeviceSize_, bool externalMemory = false>
class modm::BdHeap< DeviceSize_, externalMemory >
Block device using heap (RAM)
Usually not persistant, but at least useful for testing. This is also useful for battery backed SRAM, some STM32 have up to 4kB of this stuff.
- Template Parameters
-
DeviceSize | The size of the block device |
externalMemory | Set to true to use an external supplied memory block (see initialize(uint8_t*) ) |
- Author
- Raphael Lehmann
Erase blocks
The state of an erased block is undefined until it has been programmed
- Parameters
-
address | Address of block to begin erasing |
size | Size to erase in bytes (multiple of read block size) |
- Returns
- True on success
template<size_t DeviceSize_, bool externalMemory = false>
modm::ResumableResult<bool> modm::BdHeap< DeviceSize_, externalMemory >::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
-
address | Address of block to begin erasing |
size | Size 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 |
|
) |
| |
|
inherited |
Program blocks with data
Any block has to be erased prior to being programmed
- Parameters
-
buffer | Buffer of data to write to blocks |
address | Address of first block to begin writing to |
size | Size to write in bytes (multiple of read block size) |
- Returns
- True on success
template<size_t DeviceSize_, bool externalMemory = false>
modm::ResumableResult<bool> modm::BdHeap< DeviceSize_, externalMemory >::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
-
buffer | Buffer of data to write to blocks |
address | Address of first block to begin writing to |
size | Size 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 |
|
) |
| |
|
inherited |
Read data from one or more blocks
- Parameters
-
buffer | Buffer to read data into |
address | Address to begin reading from |
size | Size to read in bytes (multiple of read block size) |
- Returns
- True on success
template<size_t DeviceSize_, bool externalMemory = false>
modm::ResumableResult<bool> modm::BdHeap< DeviceSize_, externalMemory >::read |
( |
uint8_t * |
buffer, |
|
|
bd_address_t |
address, |
|
|
bd_size_t |
size |
|
) |
| |
Read data from one or more blocks
- Parameters
-
buffer | Buffer to read data into |
address | Address to begin reading from |
size | Size 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 |
|
) |
| |
|
inherited |
Writes data to one or more blocks after erasing them
The blocks are erased proir to being programmed
- Parameters
-
buffer | Buffer of data to write to blocks |
address | Address of first block to begin writing to |
size | Size to write in bytes (multiple of read block size) |
- Returns
- True on success
template<size_t DeviceSize_, bool externalMemory = false>
modm::ResumableResult<bool> modm::BdHeap< DeviceSize_, externalMemory >::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 prior to being programmed
- Parameters
-
buffer | Buffer of data to write to blocks |
address | Address of first block to begin writing to |
size | Size to write in bytes (multiple of read block size) |
- Returns
- True on success
constexpr bd_size_t modm::BlockDevice::BlockSizeRead = 1 |
|
inheritedstaticconstexpr |
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: