13#ifndef BL_INTERFACE_H_
14#define BL_INTERFACE_H_
20#if defined(EFR32_PLATFORM)
38#define BL_MEMORY_AREA_UNDEFINED 0xFFFFFFFF
232#if defined(NRF91_PLATFORM)
240 const char * at_commands;
241} bl_platform_nrf91_t;
242#elif defined(NRF54_PLATFORM)
252 const uint16_t hfxo_int_cap_ff;
260 const uint16_t lfxo_int_cap_ff;
261} bl_platform_nrf54_t;
262#elif defined(EFR32_PLATFORM)
269 const CMU_HFXOInit_TypeDef * hfxoInit;
273 const CMU_LFXOInit_TypeDef * lfxoInit;
274} bl_platform_efr32_t;
280#if defined(NRF52_PLATFORM)
285#elif defined(NRF54_PLATFORM)
289 const bl_platform_nrf54_t * nrf54;
290#elif defined(NRF91_PLATFORM)
294 const bl_platform_nrf91_t * nrf91;
295#elif defined(EFR32_PLATFORM)
299 const bl_platform_efr32_t * efr32;
401 uint8_t * num_areas);
487 void (*clear_wdt)(void));
bl_interface_res_e(* bl_memory_area_getIdfromType_f)(bl_memory_area_id_t *id, bl_memory_area_type_e type)
Return the memory area id of the FIRST area with provided type.
bl_memory_area_getAreaList_f getAreaList
void(* bl_memory_area_getAreaList_f)(bl_memory_area_id_t *list, uint8_t *num_areas)
Return the list of areas defined in the bootloader.
bl_memory_area_startWrite_f startWrite
const memory_area_services_t * memory_area_services_p
bl_interface_res_e(* bl_scrat_read_f)(void *to, uint32_t from, size_t amount)
Read bytes from a scratchpad file.
uint32_t is_busy_call_time
bl_memory_area_getAreaInfo_f getAreaInfo
bl_interface_res_e(* bl_scrat_clear_f)(void(*clear_wdt)(void))
Erase the scratchpad area.
bl_scrat_modem_file_type_e
@ BL_SCRAT_MODEM_FILE_TYPE_DELTA_IMAGE
@ BL_SCRAT_MODEM_FILE_TYPE_FULL_IMAGE
@ BL_SCRAT_MODEM_FILE_TYPE_INVALID
bl_scrat_modem_file_type_e modem_fw_type
bl_hardware_getCapabilities_f getCapabilities
bl_memory_area_getAreaHeader_f getAreaHeader
bl_scrat_setBootable_f setBootable
bl_scrat_valid_e
Scratchpad validity.
@ BL_SCRAT_IS_INVALID_HEADER
@ BL_SCRAT_IS_INVALID_CRC
bl_scrat_setStatus_f setStatus
bl_interface_res_e(* bl_memory_area_getAreaInfo_f)(bl_memory_area_id_t id, bl_memory_area_info_t *info)
Fills a structure with info about memory area.
const scratchpad_services_t * scratchpad_services_p
bl_memory_area_type_e type
bl_interface_res_e(* bl_scrat_setStatus_f)(uint32_t status)
bl_scrat_getValidity_f getValidity
uint8_t(* bl_memory_area_getMaxNumAreas_f)(void)
Return the total number of areas supported by the bootloader.
const void * dflow_services_p
bl_memory_area_id_t area_id
bl_memory_area_type_e
Types of Memory Areas.
@ BL_MEM_AREA_TYPE_APPLICATION
Application area.
@ BL_MEM_AREA_TYPE_BOOTLOADER
Bootloader area.
@ BL_MEM_AREA_TYPE_MODEMFW
Modem firmware area.
@ BL_MEM_AREA_TYPE_STACK
Stack area.
@ BL_MEM_AREA_TYPE_SCRATCHPAD
Dedicated scratchpad area.
@ BL_MEM_AREA_TYPE_MODEMDELTAFW
Modem delta firmware area.
@ BL_MEM_AREA_TYPE_USER
User defined area.
@ BL_MEM_AREA_TYPE_PERSISTENT
Persistent memory area.
bl_scrat_write_status_e
Scratchpad write status.
@ BL_SCRAT_WRITE_STATUS_INVALID_HEADER
@ BL_SCRAT_WRITE_STATUS_COMPLETED_OK
@ BL_SCRAT_WRITE_STATUS_INVALID_NULL_BYTES
@ BL_SCRAT_WRITE_STATUS_INVALID_START
@ BL_SCRAT_WRITE_STATUS_INVALID_NUM_BYTES
@ BL_SCRAT_WRITE_STATUS_OK
@ BL_SCRAT_WRITE_STATUS_NOT_ONGOING
@ BL_SCRAT_WRITE_STATUS_FLASH_ERROR
@ BL_SCRAT_WRITE_STATUS_COMPLETED_ERROR
bl_interface_res_e(* bl_scrat_begin_f)(uint32_t num_bytes, uint8_t seq, void(*clear_wdt)(void))
Prepare scratchpad memory for storing new data.
uint32_t byte_write_call_time
const bl_hardware_capabilities_t *(* bl_hardware_getCapabilities_f)(void)
Returns board hardware capabilities.
bl_interface_res_e
Bootloader interface operations result.
@ BL_RES_ERROR
Error during operation.
@ BL_RES_TIMEOUT
Synchronous call timeout.
@ BL_RES_BUSY
Underneath flash driver is busy.
@ BL_RES_INVALID_AREA
Area doesn't exists.
@ BL_RES_INVALID_STATE
Write ongoing or scratchpad not valid.
@ BL_RES_OK
Operation is successful.
@ BL_RES_NODRIVER
There is no external flash driver.
@ BL_RES_PARAM
Invalid parameters.
bl_interface_res_e(* bl_memory_area_getAreaHeader_f)(bl_memory_area_id_t id, bl_memory_area_header_t *header)
Return a structure containing the information stored in the header at the beginning of the area.
bl_interface_res_e(* bl_scrat_getInfo_f)(bl_scrat_info_t *info)
Fills a structure with info about the scratchpad.
bl_interface_res_e(* bl_memory_area_startErase_f)(bl_memory_area_id_t id, uint32_t *sector_base, size_t *number_of_sector)
Erase a sector of a memory area.
bl_interface_res_e(* bl_scrat_getValidity_f)(bl_scrat_valid_e *validity)
Check if the scratchpad contains valid data.
bl_scrat_getInfo_f getInfo
bl_interface_res_e(* bl_memory_area_startWrite_f)(bl_memory_area_id_t id, uint32_t to, const void *from, size_t amount)
Write bytes to a memory area.
bl_scrat_type_e
Scratchpad type enum.
bl_interface_res_e(* bl_scrat_write_f)(uint32_t to, const void *from, size_t amount, bl_scrat_write_status_e *status)
Write bytes to scratchpad area.
uint32_t area_physical_address
bl_memory_area_getIdfromType_f getIdfromType
uint32_t bl_memory_area_id_t
Memory Area id definition.
bl_interface_res_e(* bl_memory_area_startRead_f)(bl_memory_area_id_t id, void *to, uint32_t from, size_t amount)
Read bytes from a memory area.
bl_memory_area_getMaxNumAreas_f getMaxNumAreas
uint32_t sector_erase_call_time
bool(* bl_memory_area_isBusy_f)(bl_memory_area_id_t id)
Checks if underlying flash driver is busy.
bl_memory_area_startErase_f startErase
uint32_t sector_erase_time
bl_memory_area_startRead_f startRead
const hardware_services_t * hardware_services_p
bl_interface_res_e(* bl_scrat_setBootable_f)(void)
Set scratchpad as bootable.
uint32_t page_write_call_time
bl_memory_area_isBusy_f isBusy
Scratchpad info definition.
Flash memory info definition.
Hardware features that can be installed on a board.
Global interface entry point with a version id.
Memory Area info definition.