Flash abstraction library that provides basic read, write, and erase operations.
More...
|
ret_code_t | nrf_fstorage_init (nrf_fstorage_t *p_fs, nrf_fstorage_api_t *p_api, void *p_param) |
| Function for initializing fstorage. More...
|
|
ret_code_t | nrf_fstorage_uninit (nrf_fstorage_t *p_fs, void *p_param) |
| Function for uninitializing an fstorage instance. More...
|
|
ret_code_t | nrf_fstorage_read (nrf_fstorage_t const *p_fs, uint32_t addr, void *p_dest, uint32_t len) |
| Function for reading data from flash. More...
|
|
ret_code_t | nrf_fstorage_write (nrf_fstorage_t const *p_fs, uint32_t dest, void const *p_src, uint32_t len, void *p_param) |
| Function for writing data to flash. More...
|
|
ret_code_t | nrf_fstorage_erase (nrf_fstorage_t const *p_fs, uint32_t page_addr, uint32_t len, void *p_param) |
| Function for erasing flash pages. More...
|
|
uint8_t const * | nrf_fstorage_rmap (nrf_fstorage_t const *p_fs, uint32_t addr) |
| Map a flash address to a pointer in the MCU address space that can be dereferenced. More...
|
|
uint8_t * | nrf_fstorage_wmap (nrf_fstorage_t const *p_fs, uint32_t addr) |
| Map a flash address to a pointer in the MCU address space that can be written to. More...
|
|
bool | nrf_fstorage_is_busy (nrf_fstorage_t const *p_fs) |
| Function for querying the status of fstorage. More...
|
|
Flash abstraction library that provides basic read, write, and erase operations.
The fstorage library can be implemented in different ways. Two implementations are provided:
You can select the implementation that should be used independently for each instance of fstorage.
Macro for defining an fstorage instance.
Users of fstorage must define an instance variable by using this macro. Each instance is tied to an API implementation and contains information such as the program and erase units for the target flash peripheral. Instance variables are placed in the "fs_data" section of the binary.
- Parameters
-
Event handler function prototype.
- Parameters
-
Function for erasing flash pages.
This function erases len
pages starting from the page at address page_addr
. The erase operation must be initiated on a page boundary.
- Parameters
-
[in] | p_fs | The fstorage instance. |
[in] | page_addr | Address of the page to erase. |
[in] | len | Number of pages to erase. |
[in] | p_param | User-defined parameter passed to the event handler (may be NULL). |
- Return values
-
NRF_SUCCESS | If the operation was accepted. |
NRF_ERROR_NULL | If p_fs is NULL. |
NRF_ERROR_INVALID_STATE | If the module is not initialized. |
NRF_ERROR_INVALID_LENGTH | If len is zero. |
NRF_ERROR_INVALID_ADDR | If the address page_addr is outside the flash memory boundaries specified in p_fs , or if it is unaligned. |
NRF_ERROR_NO_MEM | If no memory is available to accept the operation. When using the SoftDevice implementation, this error indicates that the internal queue of operations is full. |
Function for initializing fstorage.
- Parameters
-
[in] | p_fs | The fstorage instance to initialize. |
[in] | p_api | The API implementation to use. |
[in] | p_param | An optional parameter to pass to the implementation-specific API call. |
- Return values
-
NRF_SUCCESS | If initialization was successful. |
NRF_ERROR_NULL | If p_fs or p_api field in p_fs is NULL. |
NRF_ERROR_INTERNAL | If another error occurred. |
Function for querying the status of fstorage.
An uninitialized instance of fstorage is treated as not busy.
- Parameters
-
[in] | p_fs | The fstorage instance. Pass NULL to query all instances. |
- Returns
- If
p_fs
is NULL
, this function returns true if any fstorage instance is busy or false otherwise.
-
If
p_fs
is not NULL
, this function returns true if the fstorage instance is busy or false otherwise.
Function for reading data from flash.
Copy len
bytes from addr
to p_dest
.
- Parameters
-
[in] | p_fs | The fstorage instance. |
[in] | addr | Address in flash where to read from. |
[in] | p_dest | Buffer where the data should be copied. |
[in] | len | Length of the data to be copied (in bytes). |
- Return values
-
NRF_SUCCESS | If the operation was successful. |
NRF_ERROR_NULL | If p_fs or p_dest is NULL. |
NRF_ERROR_INVALID_STATE | If the module is not initialized. |
NRF_ERROR_INVALID_LENGTH | If len is zero or otherwise invalid. |
NRF_ERROR_INVALID_ADDR | If the address addr is outside the flash memory boundaries specified in p_fs , or if it is unaligned. |
uint8_t const* nrf_fstorage_rmap |
( |
nrf_fstorage_t const * |
p_fs, |
|
|
uint32_t |
addr |
|
) |
| |
Map a flash address to a pointer in the MCU address space that can be dereferenced.
- Parameters
-
p_fs | The fstorage instance. |
addr | The address to map. |
- Return values
-
A | pointer to the specified address, or NULL if the address cannot be mapped or if p_fs is NULL . |
Function for uninitializing an fstorage instance.
- Parameters
-
[in] | p_fs | The fstorage instance to uninitialize. |
[in] | p_param | An optional parameter to pass to the implementation-specific API call. |
- Return values
-
NRF_SUCCESS | If uninitialization was successful. |
NRF_ERROR_NULL | If p_fs is NULL. |
NRF_ERROR_INVALID_STATE | If the module is not initialized. |
NRF_ERROR_INTERNAL | If another error occurred. |
uint8_t* nrf_fstorage_wmap |
( |
nrf_fstorage_t const * |
p_fs, |
|
|
uint32_t |
addr |
|
) |
| |
Map a flash address to a pointer in the MCU address space that can be written to.
- Parameters
-
p_fs | The fstorage instance. |
addr | The address to map. |
- Return values
-
A | pointer to the specified address, or NULL if the address cannot be mapped or if p_fs is NULL . |
ret_code_t nrf_fstorage_write |
( |
nrf_fstorage_t const * |
p_fs, |
|
|
uint32_t |
dest, |
|
|
void const * |
p_src, |
|
|
uint32_t |
len, |
|
|
void * |
p_param |
|
) |
| |
Function for writing data to flash.
Write len
bytes from p_src
to dest
.
When using SoftDevice implementation, the data is written by several calls to sd_flash_write if the length of the data exceeds NRF_FSTORAGE_SD_MAX_WRITE_SIZE bytes. Only one event is sent upon completion.
- Note
- The data to be written to flash must be kept in memory until the operation has terminated and an event is received.
- Parameters
-
[in] | p_fs | The fstorage instance. |
[in] | dest | Address in flash memory where to write the data. |
[in] | p_src | Data to be written. |
[in] | len | Length of the data (in bytes). |
[in] | p_param | User-defined parameter passed to the event handler (may be NULL). |
- Return values
-
NRF_SUCCESS | If the operation was accepted. |
NRF_ERROR_NULL | If p_fs or p_src is NULL. |
NRF_ERROR_INVALID_STATE | If the module is not initialized. |
NRF_ERROR_INVALID_LENGTH | If len is zero or not a multiple of the program unit, or if it is otherwise invalid. |
NRF_ERROR_INVALID_ADDR | If the address dest is outside the flash memory boundaries specified in p_fs , or if it is unaligned. |
NRF_ERROR_NO_MEM | If no memory is available to accept the operation. When using the SoftDevice implementation, this error indicates that the internal queue of operations is full. |