WS63 SDK 文档 7021f4f@fbb_ws63
ws63 和 ws63e 解决方案的 SDK 文档
载入中...
搜索中...
未找到
sfc_protect.c 文件参考
#include "hal_sfc_v150.h"
#include "soc_osal.h"
#include "debug_print.h"
#include "hal_sfc_v150_regs_op.h"
#include "osal_interrupt.h"
#include "securec.h"
#include "tcxo.h"
#include "sfc.h"
#include "sfc_porting.h"
#include "hal_sfc.h"
#include "sfc_protect_gd25q32.h"
#include "sfc_protect.h"
sfc_protect.c 的引用(Include)关系图:

结构体

struct  sfc_protect_cfg_t
 

宏定义

#define SR1_BPX_MASK   0x7C
 
#define SR2_CMP_MASK   0x40
 
#define FLASH_PROTECT_NONE_MASK   0x00
 
#define FLASH_PROTECT_ALL_MASK   0x1C
 
#define SPI_CMD_WREN   0x06
 
#define SPI_CMD_WRVSR   0x50
 
#define STANDARD_SPI   0x0
 
#define ENABLE   0x1
 
#define DISABLE   0x0
 
#define READ_MODE   0x1
 
#define WRITE_MODE   0x0
 
#define FLASH_CHIP_PROTECT_4K   0x001000
 
#define FLASH_CHIP_PROTECT_8K   0x002000
 
#define FLASH_CHIP_PROTECT_16K   0x004000
 
#define FLASH_CHIP_PROTECT_32K   0x008000
 
#define FLASH_CHIP_PROTECT_64K   0x010000
 
#define FLASH_CHIP_PROTECT_128K   0x020000
 
#define FLASH_CHIP_PROTECT_256K   0x040000
 
#define FLASH_CHIP_PROTECT_512K   0x080000
 
#define FLASH_CHIP_PROTECT_1M   0x100000
 
#define FLASH_CHIP_PROTECT_2M   0x200000
 
#define FLASH_CHIP_PROTECT_3M   0x300000
 
#define FLASH_CHIP_PROTECT_3584K   0x380000
 
#define FLASH_CHIP_PROTECT_3840K   0x3C0000
 
#define FLASH_CHIP_PROTECT_3968K   0x3E0000
 
#define FLASH_CHIP_PROTECT_4032K   0x3F0000
 
#define FLASH_CHIP_PROTECT_4064K   0x3F8000
 
#define FLASH_CHIP_PROTECT_4080K   0x3FC000
 
#define FLASH_CHIP_PROTECT_4088K   0x3FE000
 
#define FLASH_CHIP_PROTECT_4092K   0x3FF000
 
#define SFC_PROTECT_CFG_NUMS   (sizeof(g_sfc_protect_cfg) / sizeof(g_sfc_protect_cfg[0]))
 
#define FLASH_GD25Q32   0x1640C8
 

函数

errcode_t hal_sfc_regs_wait_ready (uint8_t wip_bit)
 
void sfc_port_write_sr (bool is_volatile, uint8_t cmd, uint8_t data)
 写状态寄存器。
 
uint32_t sfc_port_read_sr (uint32_t cmd)
 读取状态寄存器的值。
 
uint32_t sfc_port_write_lock (uint32_t start_addr, uint32_t end_addr)
 SFC上锁,同时根据地址信息,放开对应区域的擦、写权限。
 
void sfc_port_write_unlock (uint32_t lock_sts)
 SFC解锁。
 
errcode_t sfc_port_fix_sr (void)
 修复状态寄存器。
 

宏定义说明

◆ DISABLE

#define DISABLE   0x0

◆ ENABLE

#define ENABLE   0x1

◆ FLASH_CHIP_PROTECT_128K

#define FLASH_CHIP_PROTECT_128K   0x020000

◆ FLASH_CHIP_PROTECT_16K

#define FLASH_CHIP_PROTECT_16K   0x004000

◆ FLASH_CHIP_PROTECT_1M

#define FLASH_CHIP_PROTECT_1M   0x100000

◆ FLASH_CHIP_PROTECT_256K

#define FLASH_CHIP_PROTECT_256K   0x040000

◆ FLASH_CHIP_PROTECT_2M

#define FLASH_CHIP_PROTECT_2M   0x200000

◆ FLASH_CHIP_PROTECT_32K

#define FLASH_CHIP_PROTECT_32K   0x008000

◆ FLASH_CHIP_PROTECT_3584K

#define FLASH_CHIP_PROTECT_3584K   0x380000

◆ FLASH_CHIP_PROTECT_3840K

#define FLASH_CHIP_PROTECT_3840K   0x3C0000

◆ FLASH_CHIP_PROTECT_3968K

#define FLASH_CHIP_PROTECT_3968K   0x3E0000

◆ FLASH_CHIP_PROTECT_3M

#define FLASH_CHIP_PROTECT_3M   0x300000

◆ FLASH_CHIP_PROTECT_4032K

#define FLASH_CHIP_PROTECT_4032K   0x3F0000

◆ FLASH_CHIP_PROTECT_4064K

#define FLASH_CHIP_PROTECT_4064K   0x3F8000

◆ FLASH_CHIP_PROTECT_4080K

#define FLASH_CHIP_PROTECT_4080K   0x3FC000

◆ FLASH_CHIP_PROTECT_4088K

#define FLASH_CHIP_PROTECT_4088K   0x3FE000

◆ FLASH_CHIP_PROTECT_4092K

#define FLASH_CHIP_PROTECT_4092K   0x3FF000

◆ FLASH_CHIP_PROTECT_4K

#define FLASH_CHIP_PROTECT_4K   0x001000

◆ FLASH_CHIP_PROTECT_512K

#define FLASH_CHIP_PROTECT_512K   0x080000

◆ FLASH_CHIP_PROTECT_64K

#define FLASH_CHIP_PROTECT_64K   0x010000

◆ FLASH_CHIP_PROTECT_8K

#define FLASH_CHIP_PROTECT_8K   0x002000

◆ FLASH_GD25Q32

#define FLASH_GD25Q32   0x1640C8

◆ FLASH_PROTECT_ALL_MASK

#define FLASH_PROTECT_ALL_MASK   0x1C

◆ FLASH_PROTECT_NONE_MASK

#define FLASH_PROTECT_NONE_MASK   0x00

◆ READ_MODE

#define READ_MODE   0x1

◆ SFC_PROTECT_CFG_NUMS

#define SFC_PROTECT_CFG_NUMS   (sizeof(g_sfc_protect_cfg) / sizeof(g_sfc_protect_cfg[0]))

◆ SPI_CMD_WREN

#define SPI_CMD_WREN   0x06

◆ SPI_CMD_WRVSR

#define SPI_CMD_WRVSR   0x50

◆ SR1_BPX_MASK

#define SR1_BPX_MASK   0x7C

Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2022-2022. All rights reserved.

Description: Provides sfc port template
History:
2022-11-30, Create file.

◆ SR2_CMP_MASK

#define SR2_CMP_MASK   0x40

◆ STANDARD_SPI

#define STANDARD_SPI   0x0

◆ WRITE_MODE

#define WRITE_MODE   0x0

函数说明

◆ hal_sfc_regs_wait_ready()

errcode_t hal_sfc_regs_wait_ready ( uint8_t  wip_bit)

◆ sfc_port_fix_sr()

errcode_t sfc_port_fix_sr ( void  )

修复状态寄存器。

返回值
ERRCODE_SUCC成功。
Other失败,参考 errcode_t

◆ sfc_port_read_sr()

uint32_t sfc_port_read_sr ( uint32_t  cmd)

读取状态寄存器的值。

参数
[in]cmd命令字可以是:05H/35H/15H。 05H: 读 SR1 35H: 读 SR2 15H: 读 SR3
返回值
读取到的SR中的值。

◆ sfc_port_write_lock()

uint32_t sfc_port_write_lock ( uint32_t  start_addr,
uint32_t  end_addr 
)

SFC上锁,同时根据地址信息,放开对应区域的擦、写权限。

◆ sfc_port_write_sr()

void sfc_port_write_sr ( bool  is_volatile,
uint8_t  cmd,
uint8_t  data 
)

写状态寄存器。

参数
[in]is_volatile是否是易失性写入。 True: 易失性写入, 掉电后配置丢失。 False: 非易失性写入, 掉电后配置不丢失。
[in]cmd命令字可以是:01H/31H/11H。 01H: 写 SR1 31H: 写 SR2 11H: 写 SR3
[in]data待写入的SR寄存器的数据。
返回值
ERRCODE_SUCC成功。
Other失败,参考 errcode_t

◆ sfc_port_write_unlock()

void sfc_port_write_unlock ( uint32_t  lock_sts)

SFC解锁。