Flash Device Exported Functions

group FLASH_DEVICE_Exported_Functions

Functions

bool flash_get_block_protect_locked(uint8_t *bp_lv)

get block protect level

Parameters:

bp_lv -- [in] a set of BPx ~ BP0

Return values:
  • true -- if successful

  • false -- if failed

Returns:

result

bool flash_set_block_protect_locked(uint8_t bp_lv)

set block protect by map

Parameters:

bp_lv -- [in] a set of BPx ~ BP0

Return values:
  • true -- if successful

  • false -- if failed

Returns:

result

bool flash_sw_protect_unlock_by_addr_locked(uint32_t unlock_addr, uint8_t *old_bp_lv)

only unlock preferred section by address

Parameters:
  • unlock_addr -- [in] address section to be unlocked

  • old_bp_lv -- [in] before unlock

Return values:
  • true -- if successful

  • false -- if failed

Returns:

result

bool flash_otp_init(void)

Read vendor_id to switch callback.

Return values:
  • true -- if successful

  • false -- if not supported

Returns:

Result

bool flash_otp_erase_locked(T_ERASE_TYPE type, uint32_t addr)

Safe version of flash_otp_erase.

Parameters:
  • type -- [in] Erase type

  • addr -- [in] Address to erase when erasing block or sector

Return values:
  • true -- if successful

  • false -- if failed

Returns:

Result

bool flash_otp_write_locked(uint32_t start_addr, uint32_t data_len, uint8_t *data)

Safe version of flash_otp_write.

Parameters:
  • start_addr -- [in] Start_addr address where it is going to be flashed in flash

  • data_len -- [in] Data length to be programmed

  • data -- [out] Data buffer to be programmed into

Return values:
  • true -- if successful

  • false -- if failed

Returns:

Result

bool flash_otp_read_locked(uint32_t start_addr, uint32_t data_len, uint8_t *data)

Safe version of flash_otp_read.

Parameters:
  • start_addr -- [in] Start_addr address where it is going to be read in flash

  • data_len -- [in] Data length to be read

  • data -- [out] Data buffer to be read into

Return values:
  • true -- if successful

  • false -- if failed

Returns:

Result

bool flash_otp_enter_locked(void)

Safe version of flash_otp_enter.

Return values:
  • true -- if successful

  • false -- if failed

Returns:

Result

bool flash_otp_exit_locked(void)

Safe version of flash_otp_exit.

Return values:
  • true -- if successful

  • false -- if failed

Returns:

Result

bool flash_otp_set_lb_locked(void)

Safe version of flash_otp_set_lb.

Return values:
  • true -- if successful

  • false -- if failed

Returns:

Result

bool flash_otp_get_lb_locked(void)

Safe version of flash_otp_get_lb.

Return values:
  • true -- if successful

  • false -- if failed

Returns:

Result

bool flash_sfdp_read_locked(uint32_t start_addr, uint32_t data_len, uint8_t *data)

Read SFDP data.

Parameters:
  • start_addr -- [in] Start_addr address in SFDP table

  • data_len -- [in] Data length to be read

  • data -- [out] Data buffer to be read into

Return values:
  • true -- if successful

  • false -- if failed

Returns:

Result

bool flash_read_quick_locked(uint32_t start_addr, uint32_t data_len, uint8_t *data)

The quick user mode read (use split read to improve read speed)

Parameters:
  • start_addr -- [in] Start_addr address where it is going to be read in flash (4 byte aligned)

  • data_len -- [in] Data length to be read

  • data -- [out] Data buffer to be read into

Return values:
  • true -- if successful

  • false -- if failed

Returns:

Result

uint32_t flash_get_id(void)

read flash ID

Parameters:

void -- [in]

Returns:

flash ID

uint32_t flash_nor_get_addr_base(FLASH_NOR_IDX_TYPE idx)

get flash base address

Parameters:

idx -- specific nor flash

Returns:

flash base address

uint32_t flash_nor_auto_read(uint32_t addr)

read flash data via auto mode

Parameters:

addr -- address to read

Returns:

value in this address

void flash_nor_auto_dma_read(FLASH_NOR_DMA_TYPE dma_type, FlashCB flash_cb, uint32_t src_addr, uint32_t dst_addr, uint32_t data_len)

init flash DMA read flow

Parameters:
  • dma_type -- read type, usually memory to memory

  • flash_cb -- call back function

  • src_addr -- read source

  • dst_addr -- read destination

  • data_len -- read length

Returns:

void

void flash_nor_dump_flash_info(void)

dump spic & nor flash info

Returns:

none

uint32_t flash_nor_get_bank_addr(FLASH_LAYOUT_NAME name)

get nor flash layout member start address

Parameters:

name -- specify address of nor flash layout member

Returns:

specific address of nor flash layout member

uint32_t flash_nor_get_bank_size(FLASH_LAYOUT_NAME name)

get nor flash layout member size

Parameters:

name -- specify size of nor flash layout member

Returns:

specific size of nor flash layout member

FLASH_NOR_RET_TYPE flash_nor_set_all_info(FLASH_NOR_IDX_TYPE idx)

set specific nor flash commands and query info

Parameters:

idx -- specific nor flash

Returns:

FLASH_NOR_RET_TYPE result

FLASH_NOR_RET_TYPE flash_nor_ioctl(uint16_t cmd, uint16_t idx, uint32_t p1, uint32_t p2, uint32_t p3)

nor flash IO control entry

Parameters:
Returns:

FLASH_NOR_RET_TYPE result

FLASH_NOR_RET_TYPE flash_nor_set_seq_trans_enable(FLASH_NOR_IDX_TYPE idx, bool enable)

set sequential transfer function

Parameters:
  • idx -- specific nor flash

  • enable -- true if enable

Returns:

FLASH_NOR_RET_TYPE result

uint32_t flash_nor_get_id(FLASH_NOR_IDX_TYPE idx)

get flash ID

Parameters:

idx -- specific nor flash

Returns:

return flash ID

bool flash_nor_auto_read_locked(uint32_t addr, uint32_t *data)

read 4 bytes flash with auto mode (addr should be 4 byte align)

Parameters:
  • addr -- specific nor flash

  • data -- read data

Returns:

true if success

FLASH_NOR_RET_TYPE flash_nor_set_seq_trans(FLASH_NOR_IDX_TYPE idx, bool enable)

set flash sequential transfer

Parameters:
  • idx -- specific nor flash

  • enable -- enable or disable

Returns:

FLASH_NOR_RET_TYPE result

uint32_t flash_nor_get_flash_size(FLASH_NOR_IDX_TYPE idx)

get flash size

Parameters:

idx -- specific nor flash

Returns:

flash size

Variables

FLASH_NOR_RET_TYPE (*flash_nor_try_high_speed_mode)(FLASH_NOR_IDX_TYPE idx, FLASH_NOR_BIT_MODE bit_mode)

set flash bit mode

Param idx:

specific nor flash

Param bit_mode:

wanted bit mode

Return:

FLASH_NOR_RET_SUCCESS if success

void (*check_flash_bp_before_ota_copy)(void)

check flash bp level before ota copy, if flash is locked, must unlock bp in NVRAM

Param none:

Return:

none

FLASH_NOR_RET_TYPE (*flash_nor_read_locked)(uint32_t addr, uint8_t *data, uint32_t byte_len)

task-safe of flash_nor_read

Param addr:

the ram address mapping of nor flash going to be read

Param data:

data buffer to be read into

Param byte_len:

read data length

Return:

FLASH_NOR_RET_TYPE result

FLASH_NOR_RET_TYPE (*flash_nor_write_locked)(uint32_t addr, uint8_t *data, uint32_t byte_len)

task-safe of flash_nor_write

Param addr:

the ram address mapping of nor flash going to be written

Param data:

data buffer to be write into

Param byte_len:

write data length

Return:

FLASH_NOR_RET_TYPE result

FLASH_NOR_RET_TYPE (*flash_nor_erase_locked)(uint32_t addr, FLASH_NOR_ERASE_MODE mode)

task-safe of flash_nor_erase

Param addr:

the ram address mapping of nor flash going to be erased

Param mode:

erase mode defined as FLASH_NOR_ERASE_MODE

Return:

FLASH_NOR_RET_TYPE result

FLASH_NOR_RET_TYPE (*flash_nor_set_tb_bit_locked)(FLASH_NOR_IDX_TYPE idx, bool from_bottom)

set top/bottom of block protect with lock

Param idx:

specific nor flash

Param from_bottom:

true if from bottom

Return:

FLASH_NOR_RET_TYPE result

FLASH_NOR_RET_TYPE (*flash_nor_set_bp_lv_locked)(FLASH_NOR_IDX_TYPE idx, uint8_t bp_lv)

set block protect level with lock

Param idx:

specific nor flash

Param bp_lv:

nor flash BP level

Return:

FLASH_NOR_RET_TYPE result

FLASH_NOR_RET_TYPE (*flash_nor_get_bp_lv_locked)(FLASH_NOR_IDX_TYPE idx, uint8_t *bp_lv)

get block protect level with lock

Param idx:

specific nor flash

Param bp_lv:

nor flash BP level

Return:

FLASH_NOR_RET_TYPE result

uint8_t (*flash_nor_get_default_bp_lv)(void)

get flash default block protect level depend on different flash id and different flash layout

Param none:

Return:

default set bp level

FLASH_NOR_RET_TYPE (*flash_nor_unlock_bp_all)(uint8_t *pre_bp_lv)

set flash bp level to 0

Param pre_bp_lv:

previous bp level

Return:

FLASH_NOR_RET_TYPE result

FLASH_NOR_RET_TYPE (*flash_nor_unlock_bp_by_addr_locked)(uint32_t unlock_addr, uint8_t *old_bp_lv)

set flash bp level to unlock specified address

Param unlock_addr:

specified address

Param old_bp_lv:

previous bp level

Return:

FLASH_NOR_RET_TYPE result

FLASH_NOR_RET_TYPE (*flash_nor_get_bit_mode)(FLASH_NOR_IDX_TYPE idx, FLASH_NOR_BIT_MODE *mode)

get flash current bit mode

Param idx:

specific nor flash

Param mode:

get bit mode

Return:

FLASH_NOR_RET_TYPE result