Description

NVM3 Hardware Abstraction Layer.

This module provides the NVM3 interface to the EFM and EFR Flash NVM.

Note
The features available through the handle are used by the NVM3 and should not be used directly by any applications.

This module provides the interface to the NVM. By having all NVM access functions in a separate file, it is possible to support different hardware by substituting the functions in this module.

Note
These functions are used by the NVM3 and should not be used by any applications.

Data Structures

struct  nvm3_HalInfo
 Device NVM capabilities.
 
struct  nvm3_HalHandle_t
 The HAL handle definition.
 

Macros

#define NVM3_HAL_WRITE_SIZE_32   0
 Only single writes are allowed.
 
#define NVM3_HAL_WRITE_SIZE_16   1
 Two writes are allowed.
 
#define NVM3_HAL_NVM_ACCESS_NONE   0
 No access.
 
#define NVM3_HAL_NVM_ACCESS_RD   1
 Read access.
 
#define NVM3_HAL_NVM_ACCESS_RDWR   2
 Read and write access.
 
#define NVM3_HAL_NVM_ACCESS_NOP   3
 Ignore.
 
#define CHECK_DATA   1
 Macro defining if data should be checked.
 

Typedefs

typedef void * nvm3_HalPtr_t
 Pointer to NVM.
 
typedef uint8_t nvm3_HalNvmAccessCode_t
 Definition of the access data type.
 
typedef Ecode_t(* nvm3_HalOpen_t) (nvm3_HalPtr_t nvmAdr, size_t nvmSize)
 Open the NVM3 HAL for usage.
 
typedef void(* nvm3_HalClose_t) (void)
 Close the NVM3 HAL for usage.
 
typedef Ecode_t(* nvm3_HalGetInfo_t) (nvm3_HalInfo_t *info)
 Retrieve device information.
 
typedef void(* nvm3_HalNvmAccess_t) (nvm3_HalNvmAccessCode_t access)
 Control read and write access to the NVM.
 
typedef Ecode_t(* nvm3_HalPageErase_t) (nvm3_HalPtr_t nvmAdr)
 Erase a page in the NVM.
 
typedef Ecode_t(* nvm3_HalReadWords_t) (nvm3_HalPtr_t nvmAdr, void *dst, size_t wordCnt)
 Read data from NVM.
 
typedef Ecode_t(* nvm3_HalWriteWords_t) (nvm3_HalPtr_t nvmAdr, void const *pSrc, size_t cnt)
 Write data to the NVM.
 

Variables

const nvm3_HalHandle_t nvm3_halFlashHandle
 The HAL flash handle.
 
const nvm3_HalHandle_t nvm3_halFlashHandle
 The HAL flash handle.
 

Macro Definition Documentation

◆ NVM3_HAL_WRITE_SIZE_32

#define NVM3_HAL_WRITE_SIZE_32   0

Only single writes are allowed.

◆ NVM3_HAL_WRITE_SIZE_16

#define NVM3_HAL_WRITE_SIZE_16   1

Two writes are allowed.

◆ NVM3_HAL_NVM_ACCESS_NONE

#define NVM3_HAL_NVM_ACCESS_NONE   0

No access.

◆ NVM3_HAL_NVM_ACCESS_RD

#define NVM3_HAL_NVM_ACCESS_RD   1

Read access.

◆ NVM3_HAL_NVM_ACCESS_RDWR

#define NVM3_HAL_NVM_ACCESS_RDWR   2

Read and write access.

◆ NVM3_HAL_NVM_ACCESS_NOP

#define NVM3_HAL_NVM_ACCESS_NOP   3

Ignore.

◆ CHECK_DATA

#define CHECK_DATA   1

Macro defining if data should be checked.

Typedef Documentation

◆ nvm3_HalPtr_t

typedef void* nvm3_HalPtr_t

Pointer to NVM.

◆ nvm3_HalNvmAccessCode_t

typedef uint8_t nvm3_HalNvmAccessCode_t

Definition of the access data type.

◆ nvm3_HalOpen_t

typedef Ecode_t(* nvm3_HalOpen_t) (nvm3_HalPtr_t nvmAdr, size_t nvmSize)

Open the NVM3 HAL for usage.

This function must be run at initialization, before any other functions are called. It is used to call necessary startup routines before the hardware can be accessed.

Parameters
[in]nvmAdrA pointer to the destination in NVM.
[in]nvmSizeThe total size of the NVM.
Returns
The result of the open call. ECODE_NVM3_OK on success or a NVM3 Ecode_t on failure.

◆ nvm3_HalClose_t

typedef void(* nvm3_HalClose_t) (void)

Close the NVM3 HAL for usage.

This function should be called at program termination. Should be done before any graceful halts.

◆ nvm3_HalGetInfo_t

typedef Ecode_t(* nvm3_HalGetInfo_t) (nvm3_HalInfo_t *info)

Retrieve device information.

This function is used to retrieve information about the device properties, such as the device family, write size, whether the NVM is memory mapped or not, and finally the NVM page size.

Parameters
[in]deviceInfoA pointer to a structure that will receive the device information.

◆ nvm3_HalNvmAccess_t

typedef void(* nvm3_HalNvmAccess_t) (nvm3_HalNvmAccessCode_t access)

Control read and write access to the NVM.

This function is used to control the access to the NVM. It can be either read, write, or none.

Parameters
[in]accessThe requested access.

◆ nvm3_HalPageErase_t

typedef Ecode_t(* nvm3_HalPageErase_t) (nvm3_HalPtr_t nvmAdr)

Erase a page in the NVM.

This function is used to erase an NVM page.

Parameters
[in]nvmAdrA memory address pointing to the start of the page to erase.
Returns
The result of the erase operation.

◆ nvm3_HalReadWords_t

typedef Ecode_t(* nvm3_HalReadWords_t) (nvm3_HalPtr_t nvmAdr, void *dst, size_t wordCnt)

Read data from NVM.

This function is used to read data from the NVM. It will be a blocking call, since the thread asking for data to be read cannot continue without the data.

Parameters
[in]nvmAdrA memory address in NVM where data will be read.
[in]*pDstA pointer to the destination buffer.
[in]cntThe number of words to read.

◆ nvm3_HalWriteWords_t

typedef Ecode_t(* nvm3_HalWriteWords_t) (nvm3_HalPtr_t nvmAdr, void const *pSrc, size_t cnt)

Write data to the NVM.

This function is used to write data to the NVM. This is a blocking function.

Parameters
[in]nvmAdrA memory address in NVM where data will be written.
[in]*pSrcA pointer to the source data.
[in]cntThe number of words to write.
Returns
The result of the write operation. ECODE_NVM3_OK on success or a NVM3 Ecode_t on failure.

Variable Documentation

◆ nvm3_halFlashHandle [1/2]

const nvm3_HalHandle_t nvm3_halFlashHandle

The HAL flash handle.

◆ nvm3_halFlashHandle [2/2]

const nvm3_HalHandle_t nvm3_halFlashHandle
Initial value:
= {
.open = nvm3_halFlashOpen,
.close = nvm3_halFlashClose,
.getInfo = nvm3_halFlashGetInfo,
.access = nvm3_halFlashAccess,
.pageErase = nvm3_halFlashPageErase,
.readWords = nvm3_halFlashReadWords,
.writeWords = nvm3_halFlashWriteWords,
}

The HAL flash handle.