Microchip® Advanced Software Framework

Data in Huge Data Memory Space

Due to shortcomings of the GCC compiler for 8-bit AVR, custom functions are needed for access to data beyond the 64 kB boundary, i.e., addresses that are larger than 16-bit.

The definition of huge memory space can differ between architectures, so the implementation is architecture specific.

This module supplies functions for copying a number of bytes between huge and 64 kB data memory space, and is needed solely for code compatibility across compilers.

Modules

 Hugemem implementation for 8-bit AVR.
 
 Generic hugemem implementation.
 

Macros

#define HUGEMEM_NULL   NULL
 
#define HUGEMEM_NULL   0
 

Typedefs

typedef void * hugemem_ptr_t
 
typedef uint32_t hugemem_ptr_t
 Type to use for pointers to huge memory. More...
 

Functions

uint_fast16_t hugemem_read16 (const hugemem_ptr_t from)
 
uint_fast32_t hugemem_read32 (const hugemem_ptr_t from)
 
static uint_fast8_t hugemem_read8 (const hugemem_ptr_t from)
 
void hugemem_read_block (void *to, const hugemem_ptr_t from, size_t size)
 
static void hugemem_write16 (hugemem_ptr_t to, uint16_t val)
 
void hugemem_write16 (hugemem_ptr_t to, uint_fast16_t val)
 Write 16-bit value val to huge memory address to. More...
 
static void hugemem_write32 (hugemem_ptr_t to, uint32_t val)
 
void hugemem_write32 (hugemem_ptr_t to, uint_fast32_t val)
 Write 32-bit value val to huge memory address to. More...
 
static void hugemem_write8 (hugemem_ptr_t to, uint8_t val)
 
static void hugemem_write8 (hugemem_ptr_t to, uint_fast8_t val)
 
void hugemem_write_block (hugemem_ptr_t to, const void *from, size_t size)
 

#define HUGEMEM_NULL   NULL
#define HUGEMEM_NULL   0

typedef void* hugemem_ptr_t

Type to use for pointers to huge memory.

uint_fast16_t hugemem_read16 ( const hugemem_ptr_t  from)

Referenced by hugemem_read8(), and hugemem_write8().

uint_fast32_t hugemem_read32 ( const hugemem_ptr_t  from)

Referenced by hugemem_read8(), and hugemem_write8().

static uint_fast8_t hugemem_read8 ( const hugemem_ptr_t  from)
inlinestatic
void hugemem_read_block ( void *  to,
const hugemem_ptr_t  from,
size_t  size 
)

Referenced by hugemem_write8().

static void hugemem_write16 ( hugemem_ptr_t  to,
uint16_t  val 
)
inlinestatic
void hugemem_write16 ( hugemem_ptr_t  to,
uint_fast16_t  val 
)

Write 16-bit value val to huge memory address to.

Referenced by hugemem_write8().

static void hugemem_write32 ( hugemem_ptr_t  to,
uint32_t  val 
)
inlinestatic
void hugemem_write32 ( hugemem_ptr_t  to,
uint_fast32_t  val 
)

Write 32-bit value val to huge memory address to.

Referenced by hugemem_write8(), run_data_bus_test(), run_data_integrity_test(), and run_dma_config_interface_test().

static void hugemem_write8 ( hugemem_ptr_t  to,
uint8_t  val 
)
inlinestatic
static void hugemem_write8 ( hugemem_ptr_t  to,
uint_fast8_t  val 
)
inlinestatic
void hugemem_write_block ( hugemem_ptr_t  to,
const void *  from,
size_t  size 
)

Referenced by hugemem_write8().