| void * | operator new (std::size_t size, modm::MemoryTraits traits) |
| |
| void * | operator new[] (std::size_t size, modm::MemoryTraits traits) |
| |
| void * | operator new (std::size_t size, modm::MemoryTraits traits, const std::nothrow_t &) noexcept |
| |
| void * | operator new[] (std::size_t size, modm::MemoryTraits traits, const std::nothrow_t &) noexcept |
| |
| enum | modm::MemoryTrait : uint16_t {
modm::MemoryTrait::AccessSBus = Bit0,
modm::MemoryTrait::AccessDBus = Bit1,
modm::MemoryTrait::AccessIBus = Bit2,
modm::MemoryTrait::AccessDMA = Bit3,
modm::MemoryTrait::AccessDMA2D = Bit4,
modm::MemoryTrait::AccessMDMA = Bit5,
modm::MemoryTrait::TypeCoreCoupled = Bit13,
modm::MemoryTrait::TypeNonVolatile = Bit14,
modm::MemoryTrait::TypeExternal = Bit15
} |
| | Describes access and type of dynamic memory. More...
|
| |
|
using | modm::MemoryTraits = Flags16< MemoryTrait > |
| | A memory can have multiple traits.
|
| |
| constexpr MemoryTraits | modm::MemoryFastCode = (MemoryTrait::AccessIBus | MemoryTrait::TypeCoreCoupled) |
| |
| constexpr MemoryTraits | modm::MemoryFastData = (MemoryTrait::AccessDBus | MemoryTrait::TypeCoreCoupled) |
| |
| constexpr MemoryTraits | modm::MemoryDMA = (MemoryTrait::AccessSBus | MemoryTrait::AccessDMA) |
| |
| constexpr MemoryTraits | modm::MemoryDMA2D = (MemoryTrait::AccessSBus | MemoryTrait::AccessDMA2D) |
| |
| constexpr MemoryTraits | modm::MemoryMDMA = (MemoryTrait::AccessSBus | MemoryTrait::AccessMDMA) |
| |
| constexpr MemoryTraits | modm::MemoryExternal = (MemoryTrait::AccessSBus | MemoryTrait::TypeExternal) |
| |
| constexpr MemoryTraits | modm::MemoryBackup = (MemoryTrait::AccessSBus | MemoryTrait::TypeNonVolatile) |
| |
|
constexpr MemoryTraits | modm::MemoryDefault = MemoryDMA |
| | Default memory is DMA-able.
|
| |
lbuild module: modm:architecture:memory
Memories have different traits, such as DMA-ability or access time. The memory allocator functions (malloc(), operator new, etc) by default only return DMA-able memories, ordered by fastest access time. To allocate memory with specific traits, use the overloaded operator new:
- Note
- You need to choose a heap implementation! You can include the
modm:platform:heap module or supply your own implementation.
Describes access and type of dynamic memory.
| Enum Values | Documentation |
|---|
| AccessSBus | Memory is accessible via System-Bus.
|
| AccessDBus | Memory is accessible via Data-Bus.
|
| AccessIBus | Memory is accessible via Instruction-Bus.
|
| AccessDMA | Memory is accessible via DMA.
|
| AccessDMA2D | Memory is accessible via 2D DMA.
|
| AccessMDMA | Memory is accessible via MDMA.
|
| TypeCoreCoupled | Memory is coupled closely to the core.
|
| TypeNonVolatile | Memory is non-volatile (battery-backed)
|
| TypeExternal | Memory is external RAM.
|
Request object memory with defined traits.
| void* operator new |
( |
std::size_t |
size, |
|
|
modm::MemoryTraits |
traits, |
|
|
const std::nothrow_t & |
|
|
) |
| |
|
noexcept |
Request object memory with defined traits and return nullptr if out-of-memory!
Request array memory with defined traits.
| void* operator new[] |
( |
std::size_t |
size, |
|
|
modm::MemoryTraits |
traits, |
|
|
const std::nothrow_t & |
|
|
) |
| |
|
noexcept |
Request array memory with defined traits and return nullptr if out-of-memory!
| constexpr MemoryTraits modm::MemoryBackup = (MemoryTrait::AccessSBus | MemoryTrait::TypeNonVolatile) |
|
constexpr |
Backup memory is accessible by at least the S-Bus and it is non-volatile. There is no fallback memory on exhaustion.
| constexpr MemoryTraits modm::MemoryDMA = (MemoryTrait::AccessSBus | MemoryTrait::AccessDMA) |
|
constexpr |
DMA-able memory is accessible by at least the S-Bus and DMA. There is no fallback memory on exhaustion.
| constexpr MemoryTraits modm::MemoryDMA2D = (MemoryTrait::AccessSBus | MemoryTrait::AccessDMA2D) |
|
constexpr |
DMA-able memory is accessible by at least the S-Bus and 2D DMA. There is no fallback memory on exhaustion.
| constexpr MemoryTraits modm::MemoryExternal = (MemoryTrait::AccessSBus | MemoryTrait::TypeExternal) |
|
constexpr |
External memory is accessible by at least the S-Bus and it is external. Fallback memory on exhaustion is internal.
| constexpr MemoryTraits modm::MemoryFastCode = (MemoryTrait::AccessIBus | MemoryTrait::TypeCoreCoupled) |
|
constexpr |
Fast code memory is accessible by at least the I-Bus and it is core-coupled. Fallback memory on exhaustion is not core-coupled.
| constexpr MemoryTraits modm::MemoryFastData = (MemoryTrait::AccessDBus | MemoryTrait::TypeCoreCoupled) |
|
constexpr |
Fast data memory is accessible by at least the D-Bus and it is core coupled. Fallback memory on exhaustion is not core-coupled.
| constexpr MemoryTraits modm::MemoryMDMA = (MemoryTrait::AccessSBus | MemoryTrait::AccessMDMA) |
|
constexpr |
DMA-able memory is accessible by at least the S-Bus and MDMA. There is no fallback memory on exhaustion.