Battery Backed RAM (BBRAM)
The BBRAM APIs allow interfacing with the unique properties of this memory region. The following common types of BBRAM properties are easily accessed via this API:
IBBR (invalid) state - check that the BBRAM is not corrupt.
VSBY (voltage standby) state - check if the BBRAM is using standby voltage.
VCC (active power) state - check if the BBRAM is on normal power.
Size - get the size (in bytes) of the BBRAM region.
Along with these, the API provides a means for reading and writing to the memory region via
bbram_read()
and bbram_write()
respectively. Both functions are expected to only
succeed if the BBRAM is in a valid state and the operation is bounded to the memory region.
API Reference
- group bbram_interface
BBRAM Interface.
Typedefs
-
typedef int (*bbram_api_check_invalid_t)(const struct device *dev)
API template to check if the BBRAM is invalid.
See also
-
typedef int (*bbram_api_check_standby_power_t)(const struct device *dev)
API template to check for standby power failure.
See also
-
typedef int (*bbram_api_check_power_t)(const struct device *dev)
API template to check for V CC1 power failure.
See also
-
typedef int (*bbram_api_get_size_t)(const struct device *dev, size_t *size)
API template to check the size of the BBRAM.
See also
-
typedef int (*bbram_api_read_t)(const struct device *dev, size_t offset, size_t size, uint8_t *data)
API template to read from BBRAM.
See also
Functions
-
int bbram_check_invalid(const struct device *dev)
Check if BBRAM is invalid.
Check if “Invalid Battery-Backed RAM” status is set then reset the status bit. This may occur as a result to low voltage at the VBAT pin.
- Parameters:
dev – [in] BBRAM device pointer.
- Returns:
0 if the Battery-Backed RAM data is valid, -EFAULT otherwise.
-
int bbram_check_standby_power(const struct device *dev)
Check for standby (Volt SBY) power failure.
Check if the V standby power domain is turned on after it was off then reset the status bit.
- Parameters:
dev – [in] BBRAM device pointer.
- Returns:
0 if V SBY power domain is in normal operation.
-
int bbram_check_power(const struct device *dev)
Check for V CC1 power failure.
This will return an error if the V CC1 power domain is turned on after it was off and reset the status bit.
- Parameters:
dev – [in] BBRAM device pointer.
- Returns:
0 if the V CC1 power domain is in normal operation, -EFAULT otherwise.
-
int bbram_get_size(const struct device *dev, size_t *size)
Get the size of the BBRAM (in bytes).
- Parameters:
dev – [in] BBRAM device pointer.
size – [out] Pointer to write the size to.
- Returns:
0 for success, -EFAULT otherwise.
-
int bbram_read(const struct device *dev, size_t offset, size_t size, uint8_t *data)
Read bytes from BBRAM.
- Parameters:
dev – [in] The BBRAM device pointer to read from.
offset – [in] The offset into the RAM address to start reading from.
size – [in] The number of bytes to read.
data – [out] The buffer to load the data into.
- Returns:
0 on success, -EFAULT if the address range is out of bounds.
-
int bbram_write(const struct device *dev, size_t offset, size_t size, const uint8_t *data)
Write bytes to BBRAM.
- Parameters:
dev – [in] The BBRAM device pointer to write to.
offset – [in] The offset into the RAM address to start writing to.
size – [in] The number of bytes to write.
data – [out] Pointer to the start of data to write.
- Returns:
0 on success, -EFAULT if the address range is out of bounds.
-
int bbram_emul_set_invalid(const struct device *dev, bool is_invalid)
Set the emulated BBRAM driver’s invalid state.
Calling this will affect the emulated behavior of bbram_check_invalid().
- Parameters:
dev – [in] The emulated device to modify
is_invalid – [in] The new invalid state
- Returns:
0 on success, negative values on error.
-
int bbram_emul_set_standby_power_state(const struct device *dev, bool failure)
Set the emulated BBRAM driver’s standby power state.
Calling this will affect the emulated behavior of bbram_check_standby_power().
- Parameters:
dev – [in] The emulated device to modify
failure – [in] Whether or not standby power failure should be emulated
- Returns:
0 on success, negative values on error.
-
int bbram_emul_set_power_state(const struct device *dev, bool failure)
Set the emulated BBRAM driver’s power state.
Calling this will affect the emulated behavior of bbram_check_power().
- Parameters:
dev – [in] The emulated device to modify
failure – [in] Whether or not a power failure should be emulated
- Returns:
0 on success, negative values on error.
-
struct bbram_driver_api
- #include <bbram.h>
-
typedef int (*bbram_api_check_invalid_t)(const struct device *dev)