USER GUIDE / SECURITY / EFUSE / OVERVIEW
概述
电子保险丝是一种采用标准 CMOS 逻辑工艺制造的非易失性存储器。EFUSE 的初始值为 0,当其已编程为 1 时,不能再编程回 0。不要试图对任何已编程为 1 的位进行编程,否则会导致整个 EFUSE 阵列处于不可预测的状态。该电气保险丝宏广泛应用于芯片 ID、内存冗余、安全代码、配置设置和功能选择等。
功能
- 控制 2048 位内部非易失一次性可编程存储器的读写
- 带保护位的分段管理
- 保护段和 Special 段的备份
- 两种读取方法:寄存器读取或 AHB 映射读取
- 可配置编程和读取时序
框图

EFUSE 的结构框图如上图所示,主要包括 EFUSE 控制器和 EFUSE 阵列两部分。所有 1024 位根据其功能被划分为 9 个段。各部分的大小和功能如下表 1 所示。2 号段、3 号段、4 号段和 10 号段外,每个段都有自己的保护位。
4 号段是 2 号段的备份段,由硬件做备份,当 EFUCTRL.Redn 为 1 时,读写 2 号段时硬件可自动读写 4 号段。当映射到 2 号段或 4 号段的保护位被编程时,相应的段将无法再次编程,只能读取。特殊的,在保护段中有 1bit 可以控制 User Key 段和 OS Key 段不能被读取。
9 号段是 6 号段的备份段,由软件做备份。
表1 分部和职能划分
| Segment | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
|---|---|---|---|---|---|---|---|---|---|
| Function | CHIPID | Protection | Special Function | ProtectionBak | Retention | SCBOOT | OSKEY | User Key | SCBootBak |
| Bits | 96 | 16 | 16 | 16 | 112 | 256 | 128 | 128 | 256 |
| Mapped Address (Byte) | 200 | 20B | 20C | 20D | 20E | 20F | 210 | 211 | 212 | 21F | 220 | 23F | 240 | 24F | 250 | 25F | 260 | 27F |
| Segment | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| Function | PSRAM_INIT_PROT | PSRAM_TYPE | PSRAM_CFG_REG | PSRAM_TPU | PSRAM_TRST | PSRAM_TCEM | PSRAM_THS_INIT | PSRAM_TDPD_INIT | PSRAM_THS |
| Bits | 32 | 32 | 32 | 32 | 32 | 32 | 32 | 32 | 32 |
| Mapped Address (Byte) | 280 | 283 | 284 | 287 | 288 | 28B | 28C | 28F | 290 | 293 | 294 | 297 | 298 | 29B | 29C | 29F | 2A0 | 2A3 |
| Segment | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| Function | PSRAM_TXPHS | PSRAM_TXHS | PSRAM_TDPD | PSRAM_TXPDPD | PSRAM_TXDPD | PSRAM_COMMAND_TIMING | PSRAM_RW_LATENCY | PSRAM_MR_INIT | PSRAM_CSN_DUMMY |
| Bits | 32 | 32 | 32 | 32 | 32 | 32 | 32 | 32 | 32 |
| Mapped Address (Byte) | 2A4 | 2A7 | 2A8 | 2AB | 2AC | 2AF | 2B0 | 2B3 | 2B4 | 2B7 | 2B8 | 2BB | 2BC | 2BF | 2C0 | 2C3 | 2C4 | 2C7 |
| Segment | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 |
| Function | PSRAM_TCQLZ | PSRAM_MEMORY_SPECIAL | PSRAM_TRP | PSRAM_RWDS_CTRL | PSRAM_TRWR | PSRAM_Reserved0 | PSRAM_Reserved1 | PSRAM_Reserved2 | Reserved |
| Bits | 32 | 32 | 32 | 32 | 32 | 32 | 32 | 32 | 168 |
| Mapped Address (Byte) | 2C8 | 2CB | 2CC | 2CF | 2D0 | 2D3 | 2D4 | 2D7 | 2D8 | 2DB | 2DC | 2DF | 2E0 | 2E3 | 2E4 | 2E7 | 2E8 | 2FC |
| Segment | 37 | 38 | |||||||
| Function | Special Function Bak | OSC_TRIM | |||||||
| Bits | 16 | 8 | |||||||
| Mapped Address (Byte) | 2FD | 2FE | 2FF | 2FF |
- 保护位段存储其他段的写保护位,如果保护位编程为 1,则相应段无法编程。特殊的,当 READ_USER_KEY 为 1 时,User Key 段是不可读的,当 READ_OS_KEY 为 1 时,OS Key 段是不可读的。保护位映射如下表所示。
第 2/4 段:
| 位 | 映射到 EFUSE 状态寄存器 |
|---|---|
| 15 | PROT_USER_KEY |
| 14 | WDT_EN |
| 13 | OSC_TRIM |
| 12 | DIS_JTAG |
| 11 | READ_OS_KEY |
| 10 | READ_USER_KEY |
| 9 | KEY_RST_RD |
| 8 | PROT_CHIP_ID |
| 7 | BOOT_MSC1_SEL |
| 6 | PROT_SCBOOT_BAK |
| 5 | PROT_RETETION |
| 4 | PROT_OS_KEY |
| 3 | SC_DEC_EN |
| 2 | SC_RSA_E3 |
| 1 | PROT_SCBOOT |
| 0 | SC_EN |
PSRAM param 段的保护段,25bit 中每个 bit 对应保护 PSRAM param 中的 32bit,该段中 bit0-bit24 按顺序对 0x284~0x2E7 做保护,剩余 bit 为 Reserved。
第 10 段:
| 位 | 映射到 EFUSE PSRAM状态寄存器 |
|---|---|
| 31 | |
| 30 | |
| 29 | |
| 28 | |
| 27 | |
| 26 | |
| 25 | |
| 24 | PORT_Reserved2 |
| 23 | PORT_Reserved1 |
| 22 | PORT_Reserved0 |
| 21 | PORT_CR_TRWR |
| 20 | PORT_CR_RWDS_CTRL |
| 19 | PORT_CR_TRP |
| 18 | PORT_CR_MEMORY_SPECIAL |
| 17 | PORT_CR_TCQLZ |
| 16 | PORT_CR_CSN_DUMMY |
| 15 | PORT_CR_MR_INIT |
| 14 | PORT_CR_RW_LATENCY |
| 13 | PORT_CR_COMMAND_TIMING |
| 12 | PORT_CR_TXDPD |
| 11 | PORT_CR_TXPDPD |
| 10 | PORT_CR_TDPD |
| 9 | PORT_CR_TXHS |
| 8 | PORT_CR_TXPHS |
| 7 | PORT_CR_THS |
| 6 | PORT_CR_TDPD_INIT |
| 5 | PORT_CR_THS_INIT |
| 4 | PORT_CR_TCEM |
| 3 | PORT_CR_TRST |
| 2 | PORT_CR_TPU |
| 1 | PORT_CR_CFG_REG |
| 0 | PORT_PSRAM_TYPE |
- EFUSE 每次可编程一个字节
- EFUSE 空间对齐为字节,读取和编程时直接映射到 EFUDATA 寄存器。在编程操作中,EFUDATA 位为 “1”时,将向 EFUSE 编程,位为 “0”时将忽略。