FLASH

Macros

flash iomode

1#define FLASH_IOMODE_NIO 0
2#define FLASH_IOMODE_DO  1
3#define FLASH_IOMODE_QO  2
4#define FLASH_IOMODE_DIO 3
5#define FLASH_IOMODE_QIO 4

Structs

Functions

bflb_flash_init

说明: flash 初始化,自动识别支持的 flash 并重新配置 flash 的参数。如果返回错误,必须停止运行代码。

1int bflb_flash_init(void);

parameter

description

return

返回 0 表示成功,其他表示错误,必须停止运行代码

bflb_flash_get_jedec_id

说明: 获取 flash jedec id。

1uint32_t bflb_flash_get_jedec_id(void);

parameter

description

return

返回 flash jedec id

bflb_flash_get_cfg

说明: 获取 flash 配置。

1void bflb_flash_get_cfg(uint8_t **cfg_addr, uint32_t *len);

parameter

description

cfg_addr

保存 flash 配置的地址

len

flash 配置的长度

bflb_flash_set_iomode

说明: 设置 flash IO 工作模式。

1void bflb_flash_set_iomode(uint8_t iomode);

parameter

description

iomode

flash IO 工作模式

bflb_flash_get_image_offset

说明: 获取代码 xip 虚拟地址实际所在的 flash 物理地址。

1uint32_t bflb_flash_get_image_offset(void);

parameter

description

return

返回 flash xip 物理地址

bflb_flash_erase

说明: flash 扇区擦除。 len 为擦除的长度,需要为 4096 倍数,假设 addr 为0 , len 为 4096,则擦除范围为 0 ~ 4095。

1int bflb_flash_erase(uint32_t addr, uint32_t len);

parameter

description

addr

擦除的物理地址

len

擦除长度,需要是 4096 的倍数

return

返回 0 表示成功,其他表示错误

bflb_flash_write

说明: 获取代码 xip 虚拟地址实际所在的 flash 物理地址。

1int bflb_flash_write(uint32_t addr, uint8_t *data, uint32_t len);

parameter

description

addr

写入的物理地址

data

写入的数据缓冲区

len

写入长度

return

返回 0 表示成功,其他表示错误

bflb_flash_read

说明: 获取代码 xip 虚拟地址实际所在的 flash 物理地址。

1int bflb_flash_read(uint32_t addr, uint8_t *data, uint32_t len);

parameter

description

addr

读取的物理地址

data

读取的数据缓冲区

len

读取长度

return

返回 0 表示成功,其他表示错误

bflb_flash_aes_init

说明: 配置某一段 flash 区域进行硬件 aes 解密,能够通过 xip 直接读取解密后的内容。

1void bflb_flash_aes_init(struct bflb_flash_aes_config_s *config);

parameter

description

config

flash aes 配置

bflb_flash_aes_enable

说明: 使能 flash aes 解密。

1void bflb_flash_aes_enable(void);

bflb_flash_aes_disable

说明: 关闭 flash aes 解密。

1void bflb_flash_aes_disable(void);