NVM3 HAL#

NVM3 Hardware Abstraction Layer.

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.

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.

Modules#

nvm3_HalInfo_t

nvm3_HalHandle_t

Typedefs#

typedef void *

Pointer to NVM.

typedef uint8_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(*

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#

The HAL flash handle.

The HAL flash handle.

Functions#

nvm3_halFlashOpen(nvm3_HalPtr_t nvmAdr, size_t flashSize)
nvm3_halFlashGetInfo(nvm3_HalInfo_t *halInfo)
void
nvm3_halFlashAccess(nvm3_HalNvmAccessCode_t access)
nvm3_halFlashReadWords(nvm3_HalPtr_t nvmAdr, void *dst, size_t wordCnt)
nvm3_halFlashWriteWords(nvm3_HalPtr_t nvmAdr, void const *src, size_t wordCnt)
nvm3_halFlashPageErase(nvm3_HalPtr_t nvmAdr)

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.

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) )(nvm3_HalPtr_t nvmAdr, size_t nvmSize)

Open the NVM3 HAL for usage.

Parameters
TypeDirectionArgument NameDescription
[in]nvmAdr

A pointer to the destination in NVM.

[in]nvmSize

The total size of the NVM.

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.

Returns


nvm3_HalClose_t#

typedef void(* nvm3_HalClose_t) (void) )(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) )(nvm3_HalInfo_t *info)

Retrieve device information.

Parameters
TypeDirectionArgument NameDescription
[in]info

A pointer to a structure that will receive the 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.


nvm3_HalNvmAccess_t#

typedef void(* nvm3_HalNvmAccess_t) (nvm3_HalNvmAccessCode_t access) )(nvm3_HalNvmAccessCode_t access)

Control read and write access to the NVM.

Parameters
TypeDirectionArgument NameDescription
[in]access

The requested access.

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


nvm3_HalPageErase_t#

typedef Ecode_t(* nvm3_HalPageErase_t) (nvm3_HalPtr_t nvmAdr) )(nvm3_HalPtr_t nvmAdr)

Erase a page in the NVM.

Parameters
TypeDirectionArgument NameDescription
[in]nvmAdr

A memory address pointing to the start of the page to erase.

This function is used to erase an NVM page.

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) )(nvm3_HalPtr_t nvmAdr, void *dst, size_t wordCnt)

Read data from NVM.

Parameters
TypeDirectionArgument NameDescription
[in]nvmAdr

A memory address in NVM where data will be read.

[in]*dst

A pointer to the destination buffer.

[in]wordCnt

The number of words to read.

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.


nvm3_HalWriteWords_t#

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

Write data to the NVM.

Parameters
TypeDirectionArgument NameDescription
[in]nvmAdr

A memory address in NVM where data will be written.

[in]*pSrc

A pointer to the source data.

[in]cnt

The number of words to write.

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

Returns


Variable Documentation#

nvm3_halFlashHandle#

const nvm3_HalHandle_t nvm3_halFlashHandle

The HAL flash handle.


nvm3_halFlashHandle#

const nvm3_HalHandle_t nvm3_halFlashHandle

The HAL flash handle.


Function Documentation#

nvm3_halFlashOpen#

static Ecode_t nvm3_halFlashOpen (nvm3_HalPtr_t nvmAdr, size_t flashSize)
Parameters
TypeDirectionArgument NameDescription
nvm3_HalPtr_tN/AnvmAdr
size_tN/AflashSize

nvm3_halFlashClose#

static void nvm3_halFlashClose (void )
Parameters
TypeDirectionArgument NameDescription
voidN/A

nvm3_halFlashGetInfo#

static Ecode_t nvm3_halFlashGetInfo (nvm3_HalInfo_t * halInfo)
Parameters
TypeDirectionArgument NameDescription
nvm3_HalInfo_t *N/AhalInfo

nvm3_halFlashAccess#

static void nvm3_halFlashAccess (nvm3_HalNvmAccessCode_t access)
Parameters
TypeDirectionArgument NameDescription
nvm3_HalNvmAccessCode_tN/Aaccess

nvm3_halFlashReadWords#

static Ecode_t nvm3_halFlashReadWords (nvm3_HalPtr_t nvmAdr, void * dst, size_t wordCnt)
Parameters
TypeDirectionArgument NameDescription
nvm3_HalPtr_tN/AnvmAdr
void *N/Adst
size_tN/AwordCnt

nvm3_halFlashWriteWords#

static Ecode_t nvm3_halFlashWriteWords (nvm3_HalPtr_t nvmAdr, void const * src, size_t wordCnt)
Parameters
TypeDirectionArgument NameDescription
nvm3_HalPtr_tN/AnvmAdr
void const *N/Asrc
size_tN/AwordCnt

nvm3_halFlashPageErase#

static Ecode_t nvm3_halFlashPageErase (nvm3_HalPtr_t nvmAdr)
Parameters
TypeDirectionArgument NameDescription
nvm3_HalPtr_tN/AnvmAdr