介绍关于FLASH信息获取、读写、擦除、加密、转换等功能所调用的一些抽象函数。

API列表

函数名称 功能描述
hal_flash_info_get 获取指定区域的FLASH信息
hal_flash_erase 擦除FLASH的指定区域
hal_flash_write 写FLASH的指定区域
hal_flash_erase_write 先擦除再写FLASH的指定区域
hal_flash_read 读FLASH的指定区域
hal_flash_enable_secure 使能加密FLASH的指定区域
hal_flash_dis_secure 关闭加密FLASH的指定区域
hal_flash_addr2offset 将物理地址转换为分区号和偏移

hal_flash_info_get

定义描述
定义 描述
函数原型 int32_t hal_flash_info_get(hal_partition_t in_partition, hal_logic_partition_t *partition)
描述 获取指定区域的FLASH信息
参数
  • in_partition:FLASH分区
  • partition:分区详细信息的数据指针
返回值 成功则返回分区信息,否则返回NULL

hal_flash_erase

定义描述
定义 描述
函数原型 int32_t hal_flash_erase(hal_partition_t in_partition, uint32_t off_set, uint32_t size)
描述 擦除FLASH的指定区域
参数
  • in_partition:FLASH分区
  • off_set:偏移量
  • size:要擦除的字节数
返回值 返回成功或失败,返回0表示擦除成功,非0表示失败

hal_flash_write

定义描述
定义 描述
函数原型 int32_t hal_flash_write(hal_partition_t in_partition, uint32_t *off_set, const void *in_buf, uint32_t in_buf_len)
描述 写FLASH的指定区域
参数
  • in_partition:FLASH分区
  • off_set:偏移量
  • in_buf:指向要写入数据的指针
  • in_buf_len:要写入的字节数
返回值 返回成功或失败,返回0表示写入成功,非0表示失败

hal_flash_erase_write

定义描述
定义 描述
函数原型 int32_t hal_flash_erase_write(hal_partition_t in_partition, uint32_t *off_set, const void *in_buf, uint32_t in_buf_len)
描述 先擦除再写FLASH的指定区域
参数
  • in_partition:FLASH分区
  • off_set:偏移量
  • in_buf:指向要写入数据的指针
  • in_buf_len:要写入的字节数
返回值 返回成功或失败,返回0表示擦除并写入成功,非0表示失败

hal_flash_read

定义描述
定义 描述
函数原型 int32_t hal_flash_read(hal_partition_t in_partition, uint32_t *off_set, void *out_buf, uint32_t in_buf_len)
描述 读FLASH的指定区域
参数
  • in_partition:FLASH分区
  • off_set:偏移量
  • out_buf:数据缓冲区地址
  • in_buf_len:要读取的字节数
返回值 返回成功或失败, 返回0表示读取成功,非0表示失败

hal_flash_enable_secure

定义描述
定义 描述
函数原型 int32_t hal_flash_enable_secure(hal_partition_t partition, uint32_t off_set, uint32_t size)
描述 使能加密FLASH的指定区域
参数
  • partition:FLASH分区
  • off_set:偏移量
  • size:使能区域字节数
返回值 返回成功或失败,返回0表示使能成功,非0表示失败

hal_flash_dis_secure

定义描述
定义 描述
函数原型 int32_t hal_flash_dis_secure(hal_partition_t partition, uint32_t off_set, uint32_t size)
描述 关闭加密FLASH的指定区域
参数
  • partition:FLASH分区
  • off_set:偏移量
  • size:使能区域字节数
返回值 返回成功或失败,返回0表示关闭成功,非0表示失败

hal_flash_addr2offset

定义描述
定义 描述
函数原型 int32_t hal_flash_addr2offset(hal_partition_t in_partition, uint32_t *off_set, uint32_t addr)
描述 将物理地址转换为分区号和偏移
参数
  • in_partition:FLASH分区
  • off_set:偏移量
  • addr:要转换的物理地址
返回值 返回成功或失败,返回0表示转换成功,非0表示失败

相关宏定义

#define PAR_OPT_READ_POS  ( 0 )
#define PAR_OPT_WRITE_POS ( 1 )

#define PAR_OPT_READ_MASK  ( 0x1u << PAR_OPT_READ_POS )
#define PAR_OPT_WRITE_MASK ( 0x1u << PAR_OPT_WRITE_POS )

#define PAR_OPT_READ_DIS  ( 0x0u << PAR_OPT_READ_POS )
#define PAR_OPT_READ_EN   ( 0x1u << PAR_OPT_READ_POS )
#define PAR_OPT_WRITE_DIS ( 0x0u << PAR_OPT_WRITE_POS )
#define PAR_OPT_WRITE_EN  ( 0x1u << PAR_OPT_WRITE_POS )

hal_logic_partition_t数据结构

typedef struct {
    hal_flash_t partition_owner;
    const char *partition_description;
    uint32_t    partition_start_addr;
    uint32_t    partition_length;
    uint32_t    partition_options;
} hal_logic_partition_t;

hal_flash_t数据结构

typedef enum {
    HAL_FLASH_EMBEDDED,
    HAL_FLASH_SPI,
    HAL_FLASH_QSPI,
    HAL_FLASH_MAX,
    HAL_FLASH_NONE,
} hal_flash_t;

hal_partition_t数据结构

typedef enum {
    HAL_PARTITION_ERROR = -1,
    HAL_PARTITION_BOOTLOADER,
    HAL_PARTITION_APPLICATION,
    HAL_PARTITION_ATE,
    HAL_PARTITION_OTA_TEMP,
    HAL_PARTITION_RF_FIRMWARE,
    HAL_PARTITION_PARAMETER_1,
    HAL_PARTITION_PARAMETER_2,
    HAL_PARTITION_PARAMETER_3,
    HAL_PARTITION_PARAMETER_4,
    HAL_PARTITION_BT_FIRMWARE,
    HAL_PARTITION_SPIFFS,
    HAL_PARTITION_CUSTOM_1,
    HAL_PARTITION_CUSTOM_2,
    HAL_PARTITION_RECOVERY,
    HAL_PARTITION_RECOVERY_BACK_PARA,
    HAL_PARTITION_MAX,
    HAL_PARTITION_NONE,
} hal_partition_t;