libmem.h File Reference
The main LIBMEM header file.
More...
#include <stddef.h>
#include <stdint.h>
Data Structures |
|
struct | _libmem_geometry_t |
A structure describing a geometry region. More...
|
|
struct | _libmem_flash_info_t |
A structure containing information about a specific FLASH chip. More...
|
|
struct | _libmem_sector_info_t |
A structure describing a sector. More...
|
|
struct | _libmem_driver_functions_t |
A structure containing pointers to a LIBMEM driver's functions. More...
|
|
struct | _libmem_ext_driver_functions_t |
A structure containing pointers to a LIBMEM driver's extended functions. More...
|
|
struct | _libmem_driver_handle_t |
A LIBMEM driver handle structure. More...
|
|
Defines |
|
#define | LIBMEM_STATUS_SUCCESS (1) |
#define | LIBMEM_STATUS_ERROR (0) |
#define | LIBMEM_STATUS_TIMEOUT (-1) |
#define | LIBMEM_STATUS_LOCKED (-2) |
#define | LIBMEM_STATUS_NOT_IMPLEMENTED (-3) |
#define | LIBMEM_STATUS_GEOMETRY_REGION_OVERFLOW (-4) |
#define | LIBMEM_STATUS_NO_DRIVER (-5) |
#define | LIBMEM_STATUS_CFI_ERROR (-6) |
#define | LIBMEM_STATUS_INVALID_RANGE (-7) |
#define | LIBMEM_STATUS_INVALID_PARAMETER (-8) |
#define | LIBMEM_STATUS_INVALID_WIDTH (-9) |
#define | LIBMEM_CFI_CMDSET_NONE (0x0000) |
#define | LIBMEM_CFI_CMDSET_INTEL_EXTENDED (0x0001) |
#define | LIBMEM_CFI_CMDSET_AMD_STANDARD (0x0002) |
#define | LIBMEM_CFI_CMDSET_INTEL_STANDARD (0x0003) |
#define | LIBMEM_CFI_CMDSET_AMD_EXTENDED (0x0004) |
#define | LIBMEM_CFI_CMDSET_WINBOND_STANDARD (0x0006) |
#define | LIBMEM_CFI_CMDSET_MITSUBISHI_STANDARD (0x0100) |
#define | LIBMEM_CFI_CMDSET_MITSUBISHI_EXTENDED (0x0101) |
#define | LIBMEM_CFI_CMDSET_SST_PAGE_WRITE (0x0102) |
#define | LIBMEM_CFI_CMDSET_RESERVED (0xFFFF) |
#define | LIBMEM_ADDRESS_IN_RANGE(address, startAddress, endAddress) ((address >= startAddress) && (address <= endAddress)) |
Macro to determine whether an address is within an address range.
|
|
#define | LIBMEM_RANGE_WITHIN_RANGE(r1StartAddress, r1EndAddress, r2StartAddress, r2EndAddress) (LIBMEM_ADDRESS_IN_RANGE(r1StartAddress, r2StartAddress, r2EndAddress) && LIBMEM_ADDRESS_IN_RANGE(r1EndAddress, r2StartAddress, r2EndAddress)) |
Macro to determine whether an address range 1 is within address range 2.
|
|
#define | LIBMEM_RANGE_OVERLAPS_RANGE(r1StartAddress, r1EndAddress, r2StartAddress, r2EndAddress) (LIBMEM_ADDRESS_IN_RANGE(r1StartAddress, r2StartAddress, r2EndAddress) || LIBMEM_ADDRESS_IN_RANGE(r1EndAddress, r2StartAddress, r2EndAddress)) |
Macro to determine whether an address range 1 overlaps address range 2.
|
|
#define | LIBMEM_RANGE_OCCLUDES_RANGE(r1StartAddress, r1EndAddress, r2StartAddress, r2EndAddress) (LIBMEM_RANGE_OVERLAPS_RANGE(r1StartAddress, r1EndAddress, r2StartAddress, r2EndAddress) || LIBMEM_RANGE_OVERLAPS_RANGE(r2StartAddress, r2EndAddress, r1StartAddress, r1EndAddress)) |
Macro to determine whether an address range 1 overlaps address range 2 or vice versa.
|
|
#define | LIBMEM_ADDRESS_IS_ALIGNED(address, width) ((((uint32_t)address) & ((width) - 1)) == 0) |
Macro to determine whether an address is aligned to a specified width.
|
|
#define | LIBMEM_ALIGNED_ADDRESS(address, width) ((uint8_t *)(((uint32_t)address) & (~((width) - 1)))) |
Macro to return an address aligned to a specified width.
|
|
#define | LIBMEM_INLINE inline |
#define | LIBMEM_KB(X) ((X)*1024) |
#define | LIBMEM_MB(X) (LIBMEM_KB(X)*1024) |
Typedefs |
|
typedef _libmem_driver_handle_t | libmem_driver_handle_t |
typedef _libmem_driver_functions_t | libmem_driver_functions_t |
typedef _libmem_ext_driver_functions_t | libmem_ext_driver_functions_t |
typedef _libmem_geometry_t | libmem_geometry_t |
typedef _libmem_flash_info_t | libmem_flash_info_t |
typedef _libmem_sector_info_t | libmem_sector_info_t |
typedef int(* | libmem_driver_write_fn_t )(libmem_driver_handle_t *h, uint8_t *dest, const uint8_t *src, size_t size) |
A function pointer to a LIBMEM driver's write function.
|
|
typedef int(* | libmem_driver_fill_fn_t )(libmem_driver_handle_t *h, uint8_t *dest, uint8_t c, size_t size) |
A function pointer to a LIBMEM driver's fill function.
|
|
typedef int(* | libmem_driver_erase_fn_t )(libmem_driver_handle_t *h, uint8_t *start, size_t size, uint8_t **erase_start, size_t *erase_size) |
A function pointer to a LIBMEM driver's erase function.
|
|
typedef int(* | libmem_driver_lock_fn_t )(libmem_driver_handle_t *h, uint8_t *start, size_t size) |
A function pointer to a LIBMEM driver's lock function.
|
|
typedef int(* | libmem_driver_unlock_fn_t )(libmem_driver_handle_t *h, uint8_t *start, size_t size) |
A function pointer to a LIBMEM driver's unlock function.
|
|
typedef int(* | libmem_driver_flush_fn_t )(libmem_driver_handle_t *h) |
A function pointer to a LIBMEM driver's flush function.
|
|
typedef int(* | libmem_driver_inrange_fn_t )(libmem_driver_handle_t *h, const uint8_t *dest) |
A function pointer to a LIBMEM driver's inrange extended function.
|
|
typedef int(* | libmem_driver_read_fn_t )(libmem_driver_handle_t *h, uint8_t *dest, const uint8_t *src, size_t size) |
A function pointer to a LIBMEM driver's read extended function.
|
|
typedef uint32_t(* | libmem_driver_crc32_fn_t )(libmem_driver_handle_t *h, const uint8_t *start, size_t size, uint32_t crc) |
A function pointer to a LIBMEM driver's crc32 extended function.
|
|
typedef int(* | libmem_foreach_driver_fn_t )(libmem_driver_handle_t *h) |
A function pointer to a function handling a libmem_foreach_driver call.
|
|
typedef int(* | libmem_foreach_sector_fn_t )(libmem_driver_handle_t *h, libmem_sector_info_t *sector_info) |
A function pointer to a function handling a libmem_foreach_sector or libmem_foreach_sector_in_range call.
|
|
typedef uint32_t(* | libmem_get_ticks_fn_t )(void) |
A function pointer to a function returning the current timer tick count.
|
|
Functions |
|
void | libmem_enable_timeouts (libmem_get_ticks_fn_t get_ticks_fn, uint32_t ticks_per_second) |
Enable LIBMEM operation timeouts.
|
|
int | libmem_write (uint8_t *dest, const uint8_t *src, size_t size) |
Write a block of data using a LIBMEM driver.
|
|
int | libmem_fill (uint8_t *dest, uint8_t c, size_t size) |
Fill memory with a specific data value using a LIBMEM driver.
|
|
int | libmem_read (uint8_t *dest, const uint8_t *src, size_t size) |
Read a block of data using a LIBMEM driver.
|
|
int | libmem_erase (uint8_t *start, size_t size, uint8_t **erase_start, size_t *erase_size) |
Erase a block of memory using a LIBMEM driver.
|
|
int | libmem_erase_all (void) |
Erase all memory using LIBMEM drivers.
|
|
int | libmem_lock (uint8_t *start, size_t size) |
Lock a block of memory using a LIBMEM driver.
|
|
int | libmem_lock_all (void) |
Lock all memory using LIBMEM drivers.
|
|
int | libmem_unlock (uint8_t *start, size_t size) |
Unlock a block of memory using a LIBMEM driver.
|
|
int | libmem_unlock_all (void) |
Unlock all memory using LIBMEM drivers.
|
|
int | libmem_flush (void) |
Flush any outstanding memory operations and return memory to read mode if applicable.
|
|
uint32_t | libmem_crc32 (const uint8_t *start, size_t size, uint32_t crc) |
Compute CRC-32 checksum of an address range using a LIBMEM driver.
|
|
void | libmem_register_driver (libmem_driver_handle_t *h, uint8_t *start, size_t size, const libmem_geometry_t *geometry, const libmem_flash_info_t *flash_info, const libmem_driver_functions_t *driver_functions, const libmem_ext_driver_functions_t *ext_driver_functions) |
Register a LIBMEM driver instance.
|
|
int | libmem_foreach_sector (libmem_driver_handle_t *h, libmem_foreach_sector_fn_t fn) |
A helper function for iterating through all sectors handled by a LIBMEM driver.
|
|
int | libmem_foreach_sector_in_range (libmem_driver_handle_t *h, uint8_t *range_start, size_t range_size, libmem_foreach_sector_fn_t fn, uint8_t **actual_range_start, size_t *actual_range_size) |
A helper function for iterating through all sectors handled by a driver that are within a specific address range.
|
|
int | libmem_get_sector_number (uint8_t *start, const libmem_geometry_t *geometry, const uint8_t *p) |
A helper function that returns the sector number of an address within a specified geometry.
|
|
int | libmem_get_number_of_sectors (const libmem_geometry_t *geometry) |
A helper function that returns the number of sectors described by a geometry description.
|
|
int | libmem_get_number_of_regions (const libmem_geometry_t *geometry) |
A helper function that returns the number of geometry regions described by a geometry description.
|
|
int | libmem_get_sector_info (uint8_t *start, const libmem_geometry_t *geometry, const uint8_t *p, libmem_sector_info_t *info) |
A helper function that returns the sector information for an address within a specified geometry.
|
|
size_t | libmem_get_geometry_size (const libmem_geometry_t *geometry) |
A helper function that returns the size of the address range described by a geometry description.
|
|
uint32_t | libmem_get_ticks (void) |
A helper function that returns the current timer tick count.
|
|
uint32_t | libmem_crc32_direct (const uint8_t *start, size_t size, uint32_t crc) |
Compute CRC-32 checksum of an address range.
|
|
libmem_driver_handle_t * | libmem_get_driver (const uint8_t *dest) |
A helper function that returns the handle of a LIBMEM driver that is responsible for a specific memory location.
|
|
int | libmem_foreach_driver (libmem_foreach_driver_fn_t fn) |
A helper function for iterating through all LIBMEM drivers.
|
|
int | libmem_cfi_get_info (uint8_t *start, size_t *size, libmem_geometry_t *geometry, int max_geometry_regions, libmem_flash_info_t *flash_info) |
Return a FLASH memory device's common flash interface (CFI) information.
|
|
int | libmem_register_cfi_driver (libmem_driver_handle_t *h, uint8_t *start, libmem_geometry_t *geometry, int max_geometry_regions, libmem_flash_info_t *flash_info) |
Register a LIBMEM FLASH driver based on the FLASH's CFI information.
|
|
int | libmem_register_cfi_0001_8_driver (libmem_driver_handle_t *h, uint8_t *start, size_t size, const libmem_geometry_t *geometry, const libmem_flash_info_t *flash_info) |
Register an 8 bit CFI command set 1 (Intel Extended) LIBMEM driver.
|
|
int | libmem_register_cfi_0001_16_driver (libmem_driver_handle_t *h, uint8_t *start, size_t size, const libmem_geometry_t *geometry, const libmem_flash_info_t *flash_info) |
Register a 16 bit CFI command set 1 (Intel Extended) LIBMEM driver.
|
|
int | libmem_register_cfi_0002_8_driver (libmem_driver_handle_t *h, uint8_t *start, size_t size, const libmem_geometry_t *geometry, const libmem_flash_info_t *flash_info) |
Register an 8 bit CFI command set 2 (AMD Standard) LIBMEM driver.
|
|
int | libmem_register_cfi_0002_16_driver (libmem_driver_handle_t *h, uint8_t *start, size_t size, const libmem_geometry_t *geometry, const libmem_flash_info_t *flash_info) |
Register a 16 bit CFI command set 2 (AMD Standard) LIBMEM driver.
|
|
int | libmem_register_cfi_0003_8_driver (libmem_driver_handle_t *h, uint8_t *start, size_t size, const libmem_geometry_t *geometry, const libmem_flash_info_t *flash_info) |
Register an 8 bit CFI command set 3 (Intel Standard) LIBMEM driver.
|
|
int | libmem_register_cfi_0003_16_driver (libmem_driver_handle_t *h, uint8_t *start, size_t size, const libmem_geometry_t *geometry, const libmem_flash_info_t *flash_info) |
Register an 16 bit CFI command set 3 (Intel Standard) LIBMEM driver.
|
|
int | libmem_register_cfi_intel_driver (libmem_driver_handle_t *h, uint8_t *start, size_t size, const libmem_geometry_t *geometry, const libmem_flash_info_t *flash_info) |
Register a combined multi-width CFI command set 1 & 3 (Intel) LIBMEM driver.
|
|
int | libmem_register_cfi_amd_driver (libmem_driver_handle_t *h, uint8_t *start, size_t size, const libmem_geometry_t *geometry, const libmem_flash_info_t *flash_info) |
Register a multi-width CFI command set 2 (AMD) LIBMEM driver.
|
|
int | libmem_register_st_m28w320cb_driver (libmem_driver_handle_t *h, uint8_t *start) |
Register an LIBMEM driver for an ST M28W320CB FLASH chip.
|
|
int | libmem_register_st_m28w320ct_driver (libmem_driver_handle_t *h, uint8_t *start) |
Register an LIBMEM driver for an ST M28W320CT FLASH chip.
|
|
int | libmem_register_sst39xFx00A_16_driver (libmem_driver_handle_t *h, uint8_t *start, size_t size, const libmem_geometry_t *geometry, const libmem_flash_info_t *flash_info) |
Register a LIBMEM driver for a 16 bit SST39xFx00A FLASH chip.
|
|
int | libmem_register_am29fxxx_driver (libmem_driver_handle_t *h, uint8_t *start, unsigned size, const libmem_geometry_t *geometry, unsigned device_id) |
Register an LIBMEM driver for an AMD Am29Fxxx FLASH chip.
|
|
int | libmem_register_am29f200b_driver (libmem_driver_handle_t *h, uint8_t *start) |
Register an LIBMEM driver for an AMD Am29F200B FLASH chip.
|
|
int | libmem_register_am29f200t_driver (libmem_driver_handle_t *h, uint8_t *start) |
Register an LIBMEM driver for an AMD Am29F200T FLASH chip.
|
|
int | libmem_register_am29f400bb_driver (libmem_driver_handle_t *h, uint8_t *start) |
Register an LIBMEM driver for an AMD Am29F400BB FLASH chip.
|
|
int | libmem_register_am29f400bt_driver (libmem_driver_handle_t *h, uint8_t *start) |
Register an LIBMEM driver for an AMD Am29F400BT FLASH chip.
|
|
int | libmem_register_am29lv010b_driver (libmem_driver_handle_t *h, uint8_t *start) |
Register an LIBMEM driver for an AMD Am29LV010B FLASH chip.
|
|
int | libmem_register_ram_driver (libmem_driver_handle_t *h, uint8_t *start, size_t size) |
Register a simple LIBMEM driver that directly accesses RAM.
|
|
Variables |
|
libmem_driver_handle_t * | libmem_drivers |
libmem_get_ticks_fn_t | libmem_get_ticks_fn |
uint32_t | libmem_ticks_per_second |
Detailed Description
The main LIBMEM header file.
This header file contains all the definitions for the LIBMEM library.