|
Zephyr API Documentation 4.4.0-rc1
A Scalable Open Source RTOS
|
Abstraction over flash partitions/areas and their drivers. More...
Data Structures | |
| struct | flash_area |
| Flash partition. More... | |
| struct | flash_sector |
| Structure for transfer flash sector boundaries. More... | |
Macros | |
| #define | PARTITION_EXISTS(label) |
| Returns non-0 value if partition of given DTS node label exists. | |
| #define | FIXED_PARTITION_EXISTS(label) |
| Deprecated macro, replace with PARTITION_EXISTS(), this cannot use __DEPRECATED_MACRO as it causes usage of the macro to fail with compiler errors. | |
| #define | PARTITION_ID(label) |
| Get flash area ID from partition DTS node label. | |
| #define | FIXED_PARTITION_ID(label) |
| Deprecated macro, replace with PARTITION_ID(). | |
| #define | PARTITION_OFFSET(label) |
| Get partition offset from DTS node label. | |
| #define | FIXED_PARTITION_OFFSET(label) |
| Deprecated macro, replace with PARTITION_OFFSET(). | |
| #define | PARTITION_ADDRESS(label) |
| Get partition address from DTS node label. | |
| #define | FIXED_PARTITION_ADDRESS(label) |
| Deprecated macro, replace with PARTITION_ADDRESS(). | |
| #define | PARTITION_NODE_ADDRESS(node) |
| Get partition address from DTS node. | |
| #define | FIXED_PARTITION_NODE_ADDRESS(node) |
| Deprecated macro, replace with PARTITION_NODE_ADDRESS(). | |
| #define | PARTITION_NODE_OFFSET(node) |
| Get partition offset from DTS node. | |
| #define | FIXED_PARTITION_NODE_OFFSET(label) |
| Deprecated macro, replace with PARTITION_NODE_OFFSET(). | |
| #define | PARTITION_SIZE(label) |
| Get partition size for DTS node label. | |
| #define | FIXED_PARTITION_SIZE(label) |
| Deprecated macro, replace with PARTITION_SIZE(). | |
| #define | PARTITION_NODE_SIZE(node) |
| Get fixed-partition size for DTS node. | |
| #define | FIXED_PARTITION_NODE_SIZE(node) |
| Deprecated macro, replace with PARTITION_NODE_SIZE(). | |
| #define | FLASH_AREA_DEVICE(label) |
| Get device pointer for device the area/partition resides on. | |
| #define | PARTITION_DEVICE(label) |
| Get device pointer for device the area/partition resides on. | |
| #define | FIXED_PARTITION_DEVICE(label) |
| Deprecated macro, replace with PARTITION_DEVICE(). | |
| #define | PARTITION_NODE_DEVICE(node) |
| Get device pointer for device the area/partition resides on. | |
| #define | FIXED_PARTITION_NODE_DEVICE(node) |
| Deprecated macro, replace with PARTITION_NODE_DEVICE(). | |
| #define | PARTITION_MTD(label) |
| Get the node identifier of the flash controller the area/partition resides on. | |
| #define | FIXED_PARTITION_MTD(label) |
| Deprecated macro, replace with PARTITION_OFFSET(). | |
| #define | PARTITION_NODE_MTD(node) |
| Get the node identifier of the flash controller the area/partition resides on. | |
| #define | FIXED_PARTITION_NODE_MTD(node) |
| Deprecated macro, replace with PARTITION_NODE_MTD(). | |
| #define | PARTITION(label) |
| Get pointer to flash_area object by partition label. | |
| #define | FIXED_PARTITION(label) |
| Deprecated macro, replace with PARTITION(). | |
| #define | PARTITION_BY_NODE(node) |
| Get pointer to flash_area object by partition node in DTS. | |
| #define | FIXED_PARTITION_BY_NODE(node) |
| Deprecated macro, replace with PARTITION_OFFSET(). | |
Typedefs | |
| typedef void(* | flash_area_cb_t) (const struct flash_area *fa, void *user_data) |
| Flash map iteration callback. | |
Functions | |
| int | flash_area_open (uint8_t id, const struct flash_area **fa) |
| Retrieve partitions flash area from the flash_map. | |
| void | flash_area_close (const struct flash_area *fa) |
| Close flash_area. | |
| static ALWAYS_INLINE bool | flash_area_device_is_ready (const struct flash_area *fa) |
| Verify that a device assigned to flash area is ready for use. | |
| int | flash_area_read (const struct flash_area *fa, off_t off, void *dst, size_t len) |
| Read flash area data. | |
| int | flash_area_write (const struct flash_area *fa, off_t off, const void *src, size_t len) |
| Write data to flash area. | |
| int | flash_area_copy (const struct flash_area *src_fa, off_t src_off, const struct flash_area *dst_fa, off_t dst_off, off_t len, uint8_t *buf, size_t buf_size) |
| Copy flash memory from one flash area to another. | |
| int | flash_area_erase (const struct flash_area *fa, off_t off, size_t len) |
| Erase flash area. | |
| int | flash_area_flatten (const struct flash_area *fa, off_t off, size_t len) |
| Erase flash area or fill with erase-value. | |
| uint32_t | flash_area_align (const struct flash_area *fa) |
| Get write block size of the flash area. | |
| int | flash_area_get_sectors (int fa_id, uint32_t *count, struct flash_sector *sectors) |
| Retrieve info about sectors within the area. | |
| int | flash_area_sectors (const struct flash_area *fa, uint32_t *count, struct flash_sector *sectors) |
| Retrieve info about sectors within the area. | |
| void | flash_area_foreach (flash_area_cb_t user_cb, void *user_data) |
| Iterate over flash map. | |
| int | flash_area_has_driver (const struct flash_area *fa) |
| Check whether given flash area has supporting flash driver in the system. | |
| const struct device * | flash_area_get_device (const struct flash_area *fa) |
| Get driver for given flash area. | |
| uint8_t | flash_area_erased_val (const struct flash_area *fa) |
| Get the value expected to be read when accessing any erased flash byte. | |
Abstraction over flash partitions/areas and their drivers.
| #define FIXED_PARTITION | ( | label | ) |
#include <zephyr/storage/flash_map.h>
Deprecated macro, replace with PARTITION().
| #define FIXED_PARTITION_ADDRESS | ( | label | ) |
#include <zephyr/storage/flash_map.h>
Deprecated macro, replace with PARTITION_ADDRESS().
| #define FIXED_PARTITION_BY_NODE | ( | node | ) |
#include <zephyr/storage/flash_map.h>
Deprecated macro, replace with PARTITION_OFFSET().
| #define FIXED_PARTITION_DEVICE | ( | label | ) |
#include <zephyr/storage/flash_map.h>
Deprecated macro, replace with PARTITION_DEVICE().
| #define FIXED_PARTITION_EXISTS | ( | label | ) |
#include <zephyr/storage/flash_map.h>
Deprecated macro, replace with PARTITION_EXISTS(), this cannot use __DEPRECATED_MACRO as it causes usage of the macro to fail with compiler errors.
| #define FIXED_PARTITION_ID | ( | label | ) |
#include <zephyr/storage/flash_map.h>
Deprecated macro, replace with PARTITION_ID().
| #define FIXED_PARTITION_MTD | ( | label | ) |
#include <zephyr/storage/flash_map.h>
Deprecated macro, replace with PARTITION_OFFSET().
| #define FIXED_PARTITION_NODE_ADDRESS | ( | node | ) |
#include <zephyr/storage/flash_map.h>
Deprecated macro, replace with PARTITION_NODE_ADDRESS().
| #define FIXED_PARTITION_NODE_DEVICE | ( | node | ) |
#include <zephyr/storage/flash_map.h>
Deprecated macro, replace with PARTITION_NODE_DEVICE().
| #define FIXED_PARTITION_NODE_MTD | ( | node | ) |
#include <zephyr/storage/flash_map.h>
Deprecated macro, replace with PARTITION_NODE_MTD().
| #define FIXED_PARTITION_NODE_OFFSET | ( | label | ) |
#include <zephyr/storage/flash_map.h>
Deprecated macro, replace with PARTITION_NODE_OFFSET().
| #define FIXED_PARTITION_NODE_SIZE | ( | node | ) |
#include <zephyr/storage/flash_map.h>
Deprecated macro, replace with PARTITION_NODE_SIZE().
| #define FIXED_PARTITION_OFFSET | ( | label | ) |
#include <zephyr/storage/flash_map.h>
Deprecated macro, replace with PARTITION_OFFSET().
| #define FIXED_PARTITION_SIZE | ( | label | ) |
#include <zephyr/storage/flash_map.h>
Deprecated macro, replace with PARTITION_SIZE().
| #define FLASH_AREA_DEVICE | ( | label | ) |
#include <zephyr/storage/flash_map.h>
Get device pointer for device the area/partition resides on.
| label | DTS node label of a partition |
| #define PARTITION | ( | label | ) |
#include <zephyr/storage/flash_map.h>
Get pointer to flash_area object by partition label.
| label | DTS node label of a partition |
| #define PARTITION_ADDRESS | ( | label | ) |
#include <zephyr/storage/flash_map.h>
Get partition address from DTS node label.
| label | DTS node label of a partition |
| #define PARTITION_BY_NODE | ( | node | ) |
#include <zephyr/storage/flash_map.h>
Get pointer to flash_area object by partition node in DTS.
| node | DTS node of a partition |
| #define PARTITION_DEVICE | ( | label | ) |
#include <zephyr/storage/flash_map.h>
Get device pointer for device the area/partition resides on.
| label | DTS node label of a partition |
| #define PARTITION_EXISTS | ( | label | ) |
#include <zephyr/storage/flash_map.h>
Returns non-0 value if partition of given DTS node label exists.
| label | DTS node label |
| #define PARTITION_ID | ( | label | ) |
#include <zephyr/storage/flash_map.h>
Get flash area ID from partition DTS node label.
| label | DTS node label of a partition |
| #define PARTITION_MTD | ( | label | ) |
#include <zephyr/storage/flash_map.h>
Get the node identifier of the flash controller the area/partition resides on.
| label | DTS node label of a partition |
| #define PARTITION_NODE_ADDRESS | ( | node | ) |
#include <zephyr/storage/flash_map.h>
Get partition address from DTS node.
| node | DTS node of a partition |
| #define PARTITION_NODE_DEVICE | ( | node | ) |
#include <zephyr/storage/flash_map.h>
Get device pointer for device the area/partition resides on.
| node | DTS node of a partition |
| #define PARTITION_NODE_MTD | ( | node | ) |
#include <zephyr/storage/flash_map.h>
Get the node identifier of the flash controller the area/partition resides on.
| node | DTS node of a partition |
| #define PARTITION_NODE_OFFSET | ( | node | ) |
#include <zephyr/storage/flash_map.h>
Get partition offset from DTS node.
Note: This only works from a top level fixed-partitions node, top level fixed-subpartitions node or fixed-partitions node inside of 1 layer of a fixed-subpartitions node, it will not work for multiple layers of fixed-subpartitions nodes, though this works on all instances of zephyr,mapped-partition nodes.
| node | DTS node of a partition |
| #define PARTITION_NODE_SIZE | ( | node | ) |
#include <zephyr/storage/flash_map.h>
Get fixed-partition size for DTS node.
| node | DTS node of a partition |
| #define PARTITION_OFFSET | ( | label | ) |
#include <zephyr/storage/flash_map.h>
Get partition offset from DTS node label.
Note: This only works from a top level fixed-partitions node, top level fixed-subpartitions node or fixed-partitions node inside of 1 layer of a fixed-subpartitions node, it will not work for multiple layers of fixed-subpartitions nodes, though this works on all instances of zephyr,mapped-partition nodes.
| label | DTS node label of a partition |
| #define PARTITION_SIZE | ( | label | ) |
#include <zephyr/storage/flash_map.h>
Get partition size for DTS node label.
| label | DTS node label |
| typedef void(* flash_area_cb_t) (const struct flash_area *fa, void *user_data) |
#include <zephyr/storage/flash_map.h>
Flash map iteration callback.
| fa | flash area |
| user_data | User supplied data |
| uint32_t flash_area_align | ( | const struct flash_area * | fa | ) |
#include <zephyr/storage/flash_map.h>
Get write block size of the flash area.
Currently write block size might be treated as read block size, although most of drivers supports unaligned readout.
| [in] | fa | Flash area |
| void flash_area_close | ( | const struct flash_area * | fa | ) |
#include <zephyr/storage/flash_map.h>
Close flash_area.
Reserved for future usage and external projects compatibility reason. Currently is NOP.
| [in] | fa | Flash area to be closed. |
| int flash_area_copy | ( | const struct flash_area * | src_fa, |
| off_t | src_off, | ||
| const struct flash_area * | dst_fa, | ||
| off_t | dst_off, | ||
| off_t | len, | ||
| uint8_t * | buf, | ||
| size_t | buf_size ) |
#include <zephyr/storage/flash_map.h>
Copy flash memory from one flash area to another.
Copy data to flash area. Area boundaries are asserted before copy request.
For more information, see flash_copy().
| [in] | src_fa | Source Flash area |
| [in] | src_off | Offset relative from beginning of source flash area. |
| [in] | dst_fa | Destination Flash area |
| [in] | dst_off | Offset relative from beginning of destination flash area. |
| [in] | len | Number of bytes to copy, in bytes. |
| [out] | buf | Pointer to a buffer of size buf_size. |
| [in] | buf_size | Size of the buffer pointed to by buf. |
|
static |
#include <zephyr/storage/flash_map.h>
Verify that a device assigned to flash area is ready for use.
Indicates whether the provided flash area has a device known to be in a state where it can be used with Flash Map API.
This can be used with struct flash_area pointers captured from PARTITION(). At minimum this means that the device has been successfully initialized.
| fa | pointer to flash_area object to check. |
| int flash_area_erase | ( | const struct flash_area * | fa, |
| off_t | off, | ||
| size_t | len ) |
#include <zephyr/storage/flash_map.h>
Erase flash area.
Erase given flash area range. Area boundaries are asserted before erase request. API has the same limitation regard erase-block alignment and size as wrapped flash driver.
| [in] | fa | Flash area |
| [in] | off | Offset relative from beginning of flash area. |
| [in] | len | Number of bytes to be erase |
| uint8_t flash_area_erased_val | ( | const struct flash_area * | fa | ) |
#include <zephyr/storage/flash_map.h>
Get the value expected to be read when accessing any erased flash byte.
This API is compatible with the MCUBoot's porting layer.
| fa | Flash area. |
| int flash_area_flatten | ( | const struct flash_area * | fa, |
| off_t | off, | ||
| size_t | len ) |
#include <zephyr/storage/flash_map.h>
Erase flash area or fill with erase-value.
On program-erase devices this function behaves exactly like flash_area_erase. On RAM non-volatile device it will call erase, if driver provides such callback, or will fill given range with erase-value defined by driver. This function should be only used by code that has not been written to directly support devices that do not require erase and rely on device being erased prior to some operations. Note that emulated erase, on devices that do not require, is done via write, which affects endurance of device.
| [in] | fa | Flash area |
| [in] | off | Offset relative from beginning of flash area. |
| [in] | len | Number of bytes to be erase |
| void flash_area_foreach | ( | flash_area_cb_t | user_cb, |
| void * | user_data ) |
#include <zephyr/storage/flash_map.h>
Iterate over flash map.
| user_cb | User callback |
| user_data | User supplied data |
| const struct device * flash_area_get_device | ( | const struct flash_area * | fa | ) |
#include <zephyr/storage/flash_map.h>
Get driver for given flash area.
| [in] | fa | Flash area. |
| int flash_area_get_sectors | ( | int | fa_id, |
| uint32_t * | count, | ||
| struct flash_sector * | sectors ) |
#include <zephyr/storage/flash_map.h>
Retrieve info about sectors within the area.
| [in] | fa_id | Given flash area ID |
| [in,out] | count | On input Capacity of sectors, on output number of sectors Retrieved. |
| [out] | sectors | buffer for sectors data |
| int flash_area_has_driver | ( | const struct flash_area * | fa | ) |
#include <zephyr/storage/flash_map.h>
Check whether given flash area has supporting flash driver in the system.
| [in] | fa | Flash area. |
| int flash_area_open | ( | uint8_t | id, |
| const struct flash_area ** | fa ) |
#include <zephyr/storage/flash_map.h>
Retrieve partitions flash area from the flash_map.
Function Retrieves flash_area from flash_map for given partition.
| [in] | id | ID of the flash partition. |
| [out] | fa | Pointer which has to reference flash_area. If ID is unknown, it will be NULL on output. |
ID is unknown, -ENODEV if there is no driver attached to the area. | int flash_area_read | ( | const struct flash_area * | fa, |
| off_t | off, | ||
| void * | dst, | ||
| size_t | len ) |
#include <zephyr/storage/flash_map.h>
Read flash area data.
Read data from flash area. Area readout boundaries are asserted before read request. API has the same limitation regard read-block alignment and size as wrapped flash driver.
| [in] | fa | Flash area |
| [in] | off | Offset relative from beginning of flash area to read |
| [out] | dst | Buffer to store read data |
| [in] | len | Number of bytes to read |
| int flash_area_sectors | ( | const struct flash_area * | fa, |
| uint32_t * | count, | ||
| struct flash_sector * | sectors ) |
#include <zephyr/storage/flash_map.h>
Retrieve info about sectors within the area.
| [in] | fa | pointer to flash area object. |
| [in,out] | count | On input Capacity of sectors, on output number of sectors retrieved. |
| [out] | sectors | buffer for sectors data |
| int flash_area_write | ( | const struct flash_area * | fa, |
| off_t | off, | ||
| const void * | src, | ||
| size_t | len ) |
#include <zephyr/storage/flash_map.h>
Write data to flash area.
Write data to flash area. Area write boundaries are asserted before write request. API has the same limitation regard write-block alignment and size as wrapped flash driver.
| [in] | fa | Flash area |
| [in] | off | Offset relative from beginning of flash area to write |
| [in] | src | Buffer with data to be written |
| [in] | len | Number of bytes to write |