Flash operations

nRF5 SDK v12.2.0

Typedefs

typedef fs_cb_t dfu_flash_callback_t
fstorage event handler function for DFU fstorage operations. More...

Functions

uint32_t nrf_dfu_flash_init (bool sd_enabled)
Function for initializing the flash module. More...
fs_ret_t nrf_dfu_flash_store (uint32_t const *p_dest, uint32_t const *const p_src, uint32_t len_words, dfu_flash_callback_t callback)
Function for storing data to flash (with or without the SoftDevice enabled). More...
fs_ret_t nrf_dfu_flash_erase (uint32_t const *p_dest, uint32_t num_pages, dfu_flash_callback_t callback)
Function for erasing data from flash (with or without the SoftDevice enabled). More...
void nrf_dfu_flash_error_clear (void)
Function for clearing an error that has occurred during fstorage operations.
fs_ret_t nrf_dfu_flash_wait (void)
Function for waiting for an event from fstorage. More...

Detailed Description

Typedef Documentation

fstorage event handler function for DFU fstorage operations.

This function is intended to be registered to the fstorage module as the event handler for all DFU flash operations. When each flash operation has completed or failed this function will be called.

See fs_cb_t for implementation details.

Function Documentation

fs_ret_t nrf_dfu_flash_erase ( uint32_t const * p_dest ,
uint32_t num_pages ,
dfu_flash_callback_t callback
)

Function for erasing data from flash (with or without the SoftDevice enabled).

Parameters
[in] p_dest The address of the first byte to be deleted.
[in] num_pages The number of flash pages to be deleted.
[in] callback Pointer to the callback function.
Return values
FS_SUCCESS If the operation was successful.
FS_ERR_UNALIGNED_ADDR If p_dest is not aligned to a page boundary.
FS_ERR_INVALID_ADDR If p_dest does not point to the start of a flash page or the operation would go beyond the flash memory boundary.
FS_ERR_NOT_INITIALIZED If the fstorage module is not initialized.
FS_ERR_INVALID_CFG If the initialization of the fstorage module is invalid.
FS_ERR_NULL_ARG If p_dest is NULL.
FS_ERR_INVALID_ARG If num_pages is zero.
FS_ERR_QUEUE_FULL If the internal operation queue of the fstorage module is full.
uint32_t nrf_dfu_flash_init ( bool sd_enabled )

Function for initializing the flash module.

You can use this module with or without a SoftDevice:

  • If the module is initialized with the SoftDevice enabled flag set, the fstorage module is used as back end for all flash operations. Flash storage calls are asynchronous; the SoftDevice manages when the actual operation in flash is done.
  • If the module is initialized with the SoftDevice enabled flag not set, the non-volatile memory controller (NVMC) driver handles the flash operations by directly accessing flash. These operations are synchronous.
Parameters
[in] sd_enabled Set the flash handling to run with or without the SoftDevice enabled.
Return values
NRF_SUCCESS If the operation was successful.
NRF_ERROR_INVALID_STATE If the fstorage module could not be initiated or the SoftDevice could not set the event handler.
fs_ret_t nrf_dfu_flash_store ( uint32_t const * p_dest ,
uint32_t const *const p_src ,
uint32_t len_words ,
dfu_flash_callback_t callback
)

Function for storing data to flash (with or without the SoftDevice enabled).

Warning
The content to be stored must be kept at p_src until the operation is complete. Without SoftDevice, the operation is complete when the function returns. With SoftDevice, the operation is complete when the fstorage event is received.
Parameters
[in] p_dest Pointer to the address where the data should be stored.
[in] p_src Pointer to the address where the data should be copied from. This address can be in flash or RAM.
[in] len_words The number of words to be copied from p_src to p_dest .
[in] callback Pointer to the callback function.
Return values
FS_SUCCESS If the operation was successful.
FS_ERR_FAILURE_SINCE_LAST If an error occurred in another transaction and fstorage cannot continue before the event has been dealt with.
FS_ERR_UNALIGNED_ADDR If p_src or p_dest is not word-aligned. Ensure that the address pointed to is divisible by four.
FS_ERR_INVALID_ARG If len_words is zero. It is not possible to write zero words.
FS_ERR_NULL_ARG If p_src or p_dest is NULL.
FS_ERR_NOT_INITIALIZED If the fstorage module is not initialized.
FS_ERR_INVALID_CFG If the initialization of the fstorage module is invalid.
FS_ERR_QUEUE_FULL If the internal operation queue of the fstorage module is full.
fs_ret_t nrf_dfu_flash_wait ( void )

Function for waiting for an event from fstorage.

This function halts execution until an event is received from the SoftDevice. You can use this function to halt execution until a flash operation has completed, to prevent tampering with the source data until fstorage is done with it.

Return values
FS_SUCCESS If the operation was successful.
FS_ERR_FAILURE_SINCE_LAST If an error has occurred in another transaction and fstorage cannot continue before the event has been dealt with.