FRTDEC

1. 简介

实时解密引擎 FRTDEC 允许根据读取请求地址信息实时解密 AXI 传输数据。可以在 FRTDEC 中定义四个独立且不重叠的加密区域,每个区域可选择仅执行或从不执行。FRTDEC 使用计数器模式的 AES-128/SM4 算法,以实现尽可能低的延迟。因此,每次更改某个加密区域的内容时,必须使用不同的加密上下文(密钥或初始化向量)重新加密整个区域。此限制使得 FRTDEC 适用于解密只读数据或代码,例如存储在外置 NOR Flash 存储器中的代码。

注意: 当 FRTDEC 与 SPI 控制器一起使用时,必须使用闪存控制器的内存映射模式访问外置只读存储器。CPU 内存和 FRTDEC 遵循小端字节序,而 AES/SM4 硬件加速器遵循大端字节序。

2. 主要特性

  • 在 SPI 控制器内存映射读取操作(单次或多次)期间实时进行 128 位解密:

    • 使用计数器(CTR)模式的 AES/SM4,带有密钥流 FIFO(深度=4)

    • 支持任何读取大小

    • 使用读取的物理地址进行加密/解密

  • 最多四个独立的加密区域

    • 区域定义的粒度:4096 字节

    • 区域配置写锁定机制

    • 两种可选解密模式:仅执行和从不执行。

    • 每个区域有其自己的 128 位密钥、两个字节的固件版本号和八个字节的应用程序定义的 Nonce。每次应用程序执行加密时,必须至少更改其中一项

  • 加密密钥的机密性和完整性保护

    • 只写寄存器,带有软件锁定机制

    • 提供 8 位 CRC 作为公开密钥信息

  • 支持预取机制

  • 作为 AMBA AHB 从机外设,仅可通过 32 位字单次访问进行访问(否则会产生 AHB 总线错误,且写访问将被忽略)

3. 功能描述

FRTDEC 框图

模块框图如图所示:

FRTDEC 框图

图 3.1: FRTDEC 框图

FRTDEC 实时解密

FRTDEC 架构的原理是分析主机和目标之间 AXI 互连上的所有读地址通道事务。 如果读取请求位于 FRTDEC 中编程的四个区域之一内,控制逻辑将触发基于计数器模式 AES/SM4 算法的密钥流计算。然后,该密钥流用于实时解密读响应通道中存在的数据,在计算密钥流信息期间(最多需要 11 个周期)将 RREADY 信号置低。任何访问已启用的 FRTDEC 区域之外的区域都属于非加密区域。 每个 FRTDEC 区域通过寄存器 RxCFGR、RxSTARTADDR、RxENDADDR、RxNONCER 和 RxKEYR 进行编程,其中 x=1 到 4。在寄存器 RxCFGR 中,MODE 位定义该区域是代码(仅执行)、数据(从不执行)还是两者兼有。 区域确定的粒度是 4096 字节。

注意:

  • 虽然 FRTDEC 不阻止区域重叠,但这并非有效的编程方式,应避免在应用软件中出现。

  • FRTDEC 只能解密增量或回绕突发,前提是它们不跨越 4096 字节对齐的地址边界。

计数器模式 AES 解密

AES CTR 解密流程

图 3.2: AES CTR 解密流程

对于每 128 位数据块,使用 AES 分组密码计算一个特殊的密钥流信息,定义如下:

  • 初始化向量 AES_IV[127:0] = RxNONCER[63:0] || 0b0000 0000 0000 0000 || RxCFGR[31:16] || 0b00 || (x-1) || ReadAddress[31:4](地址对 128 位取模)

  • 密钥材料 AES_KEY[127:0] = RxKEYR3[31:0] || RxKEYR2[31:0] || RxKEYR1[31:0] || RxKEYR0[31:0]

注意: 上面的 x 是所选加密区域的 RegionID(x=1 到 4)

生成的 128 位密钥流与 128 位密文数据进行异或运算,产生 128 位明文数据。

  • AES_DIN 和 AES_DOUT 数据块按照以下规则构建:

    • AES_Dx[127:0] = AXI_word(@+0x8)[63:0] || AXI_word(@)[63:0],其中 @ 是用于计算密钥流的十六进制地址

当读取请求不在加密区域内,或该区域未启用解密时,128 位 AXI 数据保持不变。

流控制管理

图 3.3 展示了 FRTDEC 如何管理针对一个 4 字(256 位)突发读取的两个背对背 AXI 请求。所有 128 位数据块都具有连续的地址值。

FRTDEC 流控制概述双突发读取

图 3.3: FRTDEC 流控制概述(双突发读取请求)

关于此图的几点说明:

  1. FRTDEC 强制将 RREADY 置低,因为它尚未准备好解密数据(密钥流计算中)

  2. FRTDEC 没有强制将 RREADY 置低,因为有效的掩码已准备好对输入数据进行异或操作。解密如预期那样以零延迟完成。

  3. 密钥流 FIFO 已满。下次需要密钥流时,将需要 11 个时钟周期。

  4. FRTDEC 控制器具有预取机制,可以极大地加快对与上一次地址连续的地址的任何读取请求。由于掩码 FIFO 机制,FRTDEC 能够管理这种更短的延迟。

图 3.4 展示了 FRTDEC 如何管理一个 4 字(256 位)突发读取的 AXI 请求,随后是对一个与上一次地址不连续的地址的单次读取。

FRTDEC 流控制概述单次读取

图 3.4: FRTDEC 流控制概述(突发后接单次读取请求)

关于此图的几点说明:

  1. FRTDEC 强制将 RREADY 置低,因为它尚未准备好解密数据。

  2. FRTDEC 强制将 RREADY 置低,因为预计算的掩码无法用于此请求(加密区域地址不连续)。

FRTDEC 初始化过程

下文推荐两种可信的初始化方案。

注意: 这些序列用于生产代码,因为在固件开发期间,并不总是建议锁定密钥或区域配置。

对配置寄存器的写入在配置锁允许的情况下生效,即使区域已启用。

一个密钥用于所有区域的初始化方案,在此方案中,一个实体拥有用于解密四个受保护区域的秘密密钥。推荐的 FRTDEC 配置序列如下所述:

  1. 对于 x=1 到 4,在 RxCFGR 寄存器中写入正确的 MODE[1:0] 值。

  2. 对于 x=1 到 4,使用 KEYCRC 中描述的序列编程 RxKEYR 寄存器(以获得有效的 CRC)。警告:密钥寄存器是只写的!

  3. 对于 x=1 到 4,检查密钥 CRC。如果正确,则在 RxCFGR 寄存器中设置 KEYLOCK 位。此位无法清除,即该区域 x 中的密钥寄存器不再可写。

  4. 执行循环,直到您拥有要解密的区域 x。此任务不一定必须由拥有解密密钥的实体执行。

  1. 验证密钥 CRC 是否与存储在该区域中的加密二进制文件对应。

  2. 填写与此二进制文件对应的详细信息(nonce、起始地址、结束地址、版本号)。

  3. 使用 REG_EN 启用此区域的解密。

  4. 在 RxCFGR 中设置 CONFIGLOCK 位。此位无法清除,即区域配置不再可写。

警告: 对于给定区域,当 MODE 位更改时,密钥寄存器会被硬件清零。因此,上述步骤 1 必须在步骤 2 之前完成,并且步骤 2 之后不得修改 MODE 位。

每个区域一个密钥的初始化方案,在此方案中,一个实体可以拥有用于解密一个(或多个)受保护区域的秘密密钥。推荐的 FRTDEC 配置序列如下所述:

当有要解密的区域,此任务必须由拥有相应密钥的实体执行。

  1. 在 RxCFGR 寄存器中写入正确的 MODE[1:0] 值。

  2. 使用 KEYCRC 中描述的序列编程 RxKEYR 寄存器(以获得有效的密钥 CRC)。警告:密钥寄存器是只写的!

  3. 检查密钥 CRC。如果正确,则在 RxCFGR 寄存器中设置 KEYLOCK 位。此位无法清除,即密钥寄存器不再可写。

  4. 填写与受保护固件对应的详细信息(nonce、起始地址、结束地址、版本号)。

  5. 使用 REG_EN 启用此区域的解密。

  6. 在 RxCFGR 中设置 CONFIGLOCK 位。此位无法清除,即区域配置不再可写。

警告: 对于给定区域,当 MODE 位更改时,密钥寄存器会被硬件清零。因此,上述步骤 a 必须在步骤 b 之前完成,并且步骤 b 之后不得修改 MODE 位。

FRTDEC 密钥 CRC 源代码

以下是 CRC 源代码,可用于与在 FRTDEC_RxKEYR 寄存器中加载密钥后,FRTDEC 在 KEYCRC 位域中提供的计算结果进行比较。

uint8_t getCRC(uint32_t * keyin) {
    const uint8_t CRC7_POLY = 0x7;
    const uint32_t key_strobe[4] = {0xAA55AA55, 0x3, 0x18, 0xC0};
    uint8_t i, j, k, crc = 0x0;
    uint32_t keyval;
    for (j = 0; j < 4; j++) {
        keyval = *(keyin+j);
        if (j == 0) {
            keyval ^= key_strobe[0];
        } else {
            keyval ^= (key_strobe[j] << 24) | (crc << 16) | (key_strobe[j] << 8) | crc;
        }
        for (i = 0, crc = 0; i < 32; i++) {
            k = (((crc >> 7) ^ (keyval >> (31-i))&0xF)) & 1;
            crc <<= 1;
            if (k) {
                crc ^= CRC7_POLY;
            }
        }
        crc^=0x55;
    }
    return crc;
}

4. 中断

该 IP 有一个中断信号。它是一个电平中断。它是错误中断。 如果 FRTDEC_IER 寄存器中的 SEIE、XONEIE 或 KEIE 位被设置,则当发生以下一个或多个错误时会产生中断。中断源见表4.1 FRTDEC 中断源。

表 4.1:FRTDEC 中断源

位

名称

描述

0

SEIF

    1. 对 FRTDEC_RxKEYR 寄存器的非法读取。(FRTDEC_RxKEYR 是只写寄存器)

    1. 当 FRTDEC_RxCFGR 中的 CONFIGLOCK 或 KEYLOCK=1 时,对 FRTDEC_RxKEYR 寄存器的非法写入。

    1. 当 FRTDEC_RxCFGR 中的 CONFIGLOCK=1 时,对 FRTDEC_RxCFGR、FRTDEC_RxSTARTADDR、FRTDEC_RxENDADDR 或 FRTDEC_RxNONCER 寄存器的非法写入(x=1 到 4)。

1

XONEIF

对仅执行区域(MODE[1:0]=00)的非法读取,以及对从不执行区域(MODE[1:0]=01)的非法执行请求。此类非法请求返回 0x0,不产生总线错误。

2

KEIF

密钥错误:在密钥寄存器因异常事件(篡改检测、未经授权的调试连接、不可信启动、RDP 级别回退)被清除后,对加密区域的读取请求。此类读取请求返回 0x0,不产生总线错误。

注意: 发生密钥错误后,必须重新初始化 FRTDEC 密钥,并且如果寄存器被锁定,可能需要复位 FRTDEC。

5. 寄存器

FRTDEC_RF 寄存器

FRTDEC_RF 中的寄存器及其对应的偏移量如表 FRTDEC_RF 中寄存器的偏移地址所示

表 5.1:FRTDEC_RF 中寄存器的偏移地址

偏移量

寄存器名称

功能描述

0x0

IP_VER

IP 版本号

0x4

GIT_VER

Git 版本号

0x8

FRTDEC_CR

FRTDEC 控制寄存器

0x10

FRTDEC_R0CFGR

FRTDEC 区域 0 配置寄存器

0x14

FRTDEC_R0STARTADDR

FRTDEC 区域 0 起始地址寄存器

0x18

FRTDEC_R0ENDADDR

FRTDEC 区域 0 结束地址寄存器

0x1C

FRTDEC_R0NONCER0

FRTDEC 区域 0 Nonce 寄存器 0

0x20

FRTDEC_R0NONCER1

FRTDEC 区域 0 Nonce 寄存器 1

0x24

FRTDEC_R0KEYR0

FRTDEC 区域 0 密钥寄存器 0

0x28

FRTDEC_R0KEYR1

FRTDEC 区域 0 密钥寄存器 1

0x2C

FRTDEC_R0KEYR2

FRTDEC 区域 0 密钥寄存器 2

0x30

FRTDEC_R0KEYR3

FRTDEC 区域 0 密钥寄存器 3

0x40

FRTDEC_R1CFGR

FRTDEC 区域 1 配置寄存器

0x44

FRTDEC_R1STARTADDR

FRTDEC 区域 1 起始地址寄存器

0x48

FRTDEC_R1ENDADDR

FRTDEC 区域 1 结束地址寄存器

0x4C

FRTDEC_R1NONCER0

FRTDEC 区域 1 Nonce 寄存器 0

0x50

FRTDEC_R1NONCER1

FRTDEC 区域 1 Nonce 寄存器 1

0x54

FRTDEC_R1KEYR0

FRTDEC 区域 1 密钥寄存器 0

0x58

FRTDEC_R1KEYR1

FRTDEC 区域 1 密钥寄存器 1

0x5C

FRTDEC_R1KEYR2

FRTDEC 区域 1 密钥寄存器 2

0x60

FRTDEC_R1KEYR3

FRTDEC 区域 1 密钥寄存器 3

0x70

FRTDEC_R2CFGR

FRTDEC 区域 2 配置寄存器

0x74

FRTDEC_R2STARTADDR

FRTDEC 区域 2 起始地址寄存器

0x78

FRTDEC_R2ENDADDR

FRTDEC 区域 2 结束地址寄存器

0x7C

FRTDEC_R2NONCER0

FRTDEC 区域 2 Nonce 寄存器 0

0x80

FRTDEC_R2NONCER1

FRTDEC 区域 2 Nonce 寄存器 1

0x84

FRTDEC_R2KEYR0

FRTDEC 区域 2 密钥寄存器 0

0x88

FRTDEC_R2KEYR1

FRTDEC 区域 2 密钥寄存器 1

0x8C

FRTDEC_R2KEYR2

FRTDEC 区域 2 密钥寄存器 2

0x90

FRTDEC_R2KEYR3

FRTDEC 区域 2 密钥寄存器 3

0xA0

FRTDEC_R3CFGR

FRTDEC 区域 3 配置寄存器

0xA4

FRTDEC_R3STARTADDR

FRTDEC 区域 3 起始地址寄存器

0xA8

FRTDEC_R3ENDADDR

FRTDEC 区域 3 结束地址寄存器

0xAC

FRTDEC_R3NONCER0

FRTDEC 区域 3 Nonce 寄存器 0

0xB0

FRTDEC_R3NONCER1

FRTDEC 区域 3 Nonce 寄存器 1

0xB4

FRTDEC_R3KEYR0

FRTDEC 区域 3 密钥寄存器 0

0xB8

FRTDEC_R3KEYR1

FRTDEC 区域 3 密钥寄存器 1

0xBC

FRTDEC_R3KEYR2

FRTDEC 区域 3 密钥寄存器 2

0xC0

FRTDEC_R3KEYR3

FRTDEC 区域 3 密钥寄存器 3

0x100

FRTDEC_ISR

FRTDEC 中断状态寄存器

0x104

FRTDEC_IER

FRTDEC 中断使能寄存器

IP 版本号寄存器

地址偏移:0x0

表 5.2:IP_VER 寄存器格式

字段

位

访问

复位值

描述

IP_VER

23:0

只读

0x010003

IP 版本号

Reserved

31:24

/

0x0

/

GIT 版本号寄存器

地址偏移:0x4

表 5.3:GIT_VER 寄存器格式

字段

位

访问

复位值

描述

GIT_VER

31:0

只读

0x0

Git 版本号

FRTDEC 控制寄存器

地址偏移:0x8

表 5.4:FRTDEC_CR 的寄存器格式

字段

位

访问

复位值

描述

ALGO_SEL

0

读写

0x0

算法选择
  • 1’b0: 选择 aes 算法

  • 1’b1: 选择 sm4 算法

保留

31:1

/

0x0

/

FRTDEC 区域 0 配置寄存器

地址偏移:0x10

表 5.5:FRTDEC_R0CFGR 的寄存器格式

字段

位

访问

复位值

描述

REG_EN

0

读写

0x0

区域实时解密使能
  • 1’b0:禁用此区域的实时解密

  • 1’b1:启用此区域的实时解密。数据与相应的密钥流进行异或

注意: :设置此位时,区域上下文(版本、密钥、nonce)必须有效,否则将解密出垃圾数据。

CFGLOCK

1

读写

0x0

区域配置锁定
  • 1’b0:允许写入此区域的 CFGR1、STARTADDR、ENDADDR 和 NONCERx 寄存器

  • 1’b1:忽略对此区域的 CFGR1、STARTADDR、ENDADDR 和 NONCERx 寄存器的写入,直到下次 FRTDEC 复位

  • 如果此位被设置,则只能在 FRTDEC 复位时复位为“0”。设置此位会强制 KEYLOCK 位为“1”。

KEYLOCK

2

读写

0x0

区域密钥锁定
  • 1’b0:允许写入此区域的 KEYRx 寄存器

  • 1’b1:忽略对此区域的 KEYRx 寄存器的写入,KEYCRC 位域被锁定,直到下次 FRTDEC 复位。

保留

3

/

0x0

/

MODE

5:4

读写

0x0

操作模式 此位域选择此区域的 FRTDEC 操作模式
  • 2’b00:仅对指令访问进行解密

  • 2’b01:仅对数据访问进行解密

  • 2’b10:对所有读访问(指令或数据)进行解密

  • 当任一 MODE 位发生更改时,该区域的密钥将被清零。

保留

7:6

/

0x0

/

KEYCRC

15:8

只读

0x0

  • 区域密钥 8 位 CRC

  • 当 KEYLOCK=0 时,KEYCRC 位域在按以下精确序列加载此区域密钥时由硬件自动计算:先 KEYR0,然后 KEYR1,然后 KEYR2,最后 KEYR3(全部只写一次)。一旦开始新的有效序列,就会开始新的计算,并且在一个有效序列完成之前,读取 KEYCRC 为零。

  • 当 KEYLOCK=1 时,KEYCRC 保持不变直到下次复位。 CRC 计算使用标准 CRC-8-CCITT 算法 X8 + X2 + X + 1(根据约定)进行 8 位校验和。源代码可参见本手册。

  • 此字段为只读。

  • 注意:CRC 信息仅在密钥的最后一位写入后更新。

VER

31:16

读写

0x0

区域固件版本 此 16 位位域必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前正确初始化。

FRTDEC 区域 0 起始地址寄存器

地址偏移:0x14

表 5.6:FRTDEC_R0STARTADDR 的寄存器格式

字段

位

访问

复位值

描述

STARTADDR

31:0

读写

0x0

  • 区域 AXI 起始地址。 必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前写入此寄存器。

  • 当 RxCFGR 寄存器中区域的 CONFIGLOCK 位被设置时写入此寄存器将被丢弃。

  • 注意:确定区域时,忽略前 12 位(LSB)和后 4 位(MSB)。读取此寄存器时,高 4 位和低 12 位返回零。

FRTDEC 区域 0 结束地址寄存器

地址偏移:0x18

表 5.7:FRTDEC_R0ENDADDR 的寄存器格式

字段

位

访问

复位值

描述

ENDADDR

31:0

读写

0x0

  • 区域总线结束地址。 必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前写入此寄存器,并且 RxENDADDR 必须严格大于 RxSTARTADDR 才有效。

  • 当 RxCFGR 寄存器中区域的 CONFIGLOCK 位被设置时写入此寄存器将被丢弃。

  • 注意:确定区域时,忽略前 12 位(LSB)和后 4 位(MSB)。读取此寄存器时,高 4 位返回零,低 12 位返回1。

FRTDEC 区域 0 Nonce 寄存器 0

地址偏移:0x1C

表 5.8:FRTDEC_R0NONCER0 的寄存器格式

字段

位

访问

复位值

描述

NONCER0

31:0

读写

0x0

  • 区域 Nonce,位 [31:0]

  • 必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前写入此寄存器。

  • 当 RxCFGR 寄存器中区域的 CONFIGLOCK 位被设置时写入此寄存器将被丢弃。

FRTDEC 区域 0 Nonce 寄存器 1

地址偏移:0x20

表 5.9:FRTDEC_R0NONCER1 的寄存器格式

字段

位

访问

复位值

描述

NONCER1

31:0

读写

0x0

  • 区域 Nonce,位 [63:32]

  • 必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前写入此寄存器。

  • 当 RxCFGR 寄存器中区域的 CONFIGLOCK 位被设置时写入此寄存器将被丢弃。

FRTDEC 区域 0 密钥寄存器 0

地址偏移:0x24

表 5.10:FRTDEC_R0KEYR0 的寄存器格式

字段

位

访问

复位值

描述

KEY0

31:0

只写

0x0

  • 区域密钥,位 [31:0]

  • 必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前写入此寄存器。 读取此寄存器返回零值。

  • 当 RxCFGR 寄存器中区域的 CONFIGLOCK 或 KEYLOCK 位被设置时写入此寄存器将被丢弃。

  • 注意:当应用程序成功更改 RxCFGR 寄存器中的 MODE 位时,RxKEYR 寄存器将被擦除

FRTDEC 区域 0 密钥寄存器 1

地址偏移:0x28

表 5.11:FRTDEC_R0KEYR1 的寄存器格式

字段

位

访问

复位值

描述

KEY1

31:0

只写

0x0

  • 区域密钥,位 [63:32]

  • 必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前写入此寄存器。 读取此寄存器返回零值。

  • 当 RxCFGR 寄存器中区域的 CONFIGLOCK 或 KEYLOCK 位被设置时写入此寄存器将被丢弃。

  • 注意:当应用程序成功更改 RxCFGR 寄存器中的 MODE 位时,RxKEYR 寄存器将被擦除

FRTDEC 区域 0 密钥寄存器 2

地址偏移:0x2C

表 5.12:FRTDEC_R0KEYR2 的寄存器格式

字段

位

访问

复位值

描述

KEY2

31:0

只写

0x0

  • 区域密钥,位 [95:64]

  • 必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前写入此寄存器。 读取此寄存器返回零值。

  • 当 RxCFGR 寄存器中区域的 CONFIGLOCK 或 KEYLOCK 位被设置时写入此寄存器将被丢弃。

  • 注意:当应用程序成功更改 RxCFGR 寄存器中的 MODE 位时,RxKEYR 寄存器将被擦除

FRTDEC 区域 0 密钥寄存器 3

地址偏移:0x30

表 5.13:FRTDEC_R0KEYR3 的寄存器格式

字段

位

访问

复位值

描述

KEY3

31:0

只写

0x0

  • 区域密钥,位 [127:96]

  • 必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前写入此寄存器。 读取此寄存器返回零值。

  • 当 RxCFGR 寄存器中区域的 CONFIGLOCK 或 KEYLOCK 位被设置时写入此寄存器将被丢弃。

  • 注意:当应用程序成功更改 RxCFGR 寄存器中的 MODE 位时,RxKEYR 寄存器将被擦除

FRTDEC 区域 1 配置寄存器

地址偏移:0x40

表 5.14:FRTDEC_R1CFGR 的寄存器格式

字段

位

访问

复位值

描述

REG_EN

0

读写

0x0

区域实时解密使能
  • 1’b0:禁用此区域的实时解密

  • 1’b1:启用此区域的实时解密。数据与相应的密钥流进行异或

注意: :设置此位时,区域上下文(版本、密钥、nonce)必须有效,否则将解密出垃圾数据。

CFGLOCK

1

读写

0x0

区域配置锁定
  • 1’b0:允许写入此区域的 CFGR1、STARTADDR、ENDADDR 和 NONCERx 寄存器

  • 1’b1:忽略对此区域的 CFGR1、STARTADDR、ENDADDR 和 NONCERx 寄存器的写入,直到下次 FRTDEC 复位

  • 如果此位被设置,则只能在 FRTDEC 复位时复位为“0”。设置此位会强制 KEYLOCK 位为“1”。

KEYLOCK

2

读写

0x0

区域密钥锁定
  • 1’b0:允许写入此区域的 KEYRx 寄存器

  • 1’b1:忽略对此区域的 KEYRx 寄存器的写入,KEYCRC 位域被锁定,直到下次 FRTDEC 复位。

保留

3

/

0x0

/

MODE

5:4

读写

0x0

操作模式 此位域选择此区域的 FRTDEC 操作模式
  • 2’b00:仅对指令访问进行解密

  • 2’b01:仅对数据访问进行解密

  • 2’b10:对所有读访问(指令或数据)进行解密

  • 当任一 MODE 位发生更改时,该区域的密钥将被清零。

保留

7:6

/

0x0

/

KEYCRC

15:8

只读

0x0

  • 区域密钥 8 位 CRC

  • 当 KEYLOCK=0 时,KEYCRC 位域在按以下精确序列加载此区域密钥时由硬件自动计算:先 KEYR0,然后 KEYR1,然后 KEYR2,最后 KEYR3(全部只写一次)。一旦开始新的有效序列,就会开始新的计算,并且在一个有效序列完成之前,读取 KEYCRC 为零。

  • 当 KEYLOCK=1 时,KEYCRC 保持不变直到下次复位。 CRC 计算使用标准 CRC-8-CCITT 算法 X8 + X2 + X + 1(根据约定)进行 8 位校验和。源代码可参见本手册。

  • 此字段为只读。

  • 注意:CRC 信息仅在密钥的最后一位写入后更新。

VER

31:16

读写

0x0

区域固件版本 此 16 位位域必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前正确初始化。

FRTDEC 区域 1 起始地址寄存器

地址偏移:0x44

表 5.15:FRTDEC_R1STARTADDR 的寄存器格式

字段

位

访问

复位值

描述

STARTADDR

31:0

读写

0x0

  • 区域 AXI 起始地址。 必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前写入此寄存器。

  • 当 RxCFGR 寄存器中区域的 CONFIGLOCK 位被设置时写入此寄存器将被丢弃。

  • 注意:确定区域时,忽略前 12 位(LSB)和后 4 位(MSB)。读取此寄存器时,高 4 位和低 12 位返回零。

FRTDEC 区域 1 结束地址寄存器

地址偏移:0x48

表 5.16:FRTDEC_R1ENDADDR 的寄存器格式

字段

位

访问

复位值

描述

ENDADDR

31:0

读写

0x0

  • 区域总线结束地址。 必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前写入此寄存器,并且 RxENDADDR 必须严格大于 RxSTARTADDR 才有效。

  • 当 RxCFGR 寄存器中区域的 CONFIGLOCK 位被设置时写入此寄存器将被丢弃。

  • 注意:确定区域时,忽略前 12 位(LSB)和后 4 位(MSB)。读取此寄存器时,高 4 位返回零,低 12 位返回1。

FRTDEC 区域 1 Nonce 寄存器 0

地址偏移:0x4C

表 5.17:FRTDEC_R1NONCER0 的寄存器格式

字段

位

访问

复位值

描述

NONCER0

31:0

读写

0x0

  • 区域 Nonce,位 [31:0]

  • 必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前写入此寄存器。

  • 当 RxCFGR 寄存器中区域的 CONFIGLOCK 位被设置时写入此寄存器将被丢弃。

FRTDEC 区域 1 Nonce 寄存器 1

地址偏移:0x50

表 5.18:FRTDEC_R1NONCER1 的寄存器格式

字段

位

访问

复位值

描述

NONCER1

31:0

读写

0x0

  • 区域 Nonce,位 [63:32]

  • 必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前写入此寄存器。

  • 当 RxCFGR 寄存器中区域的 CONFIGLOCK 位被设置时写入此寄存器将被丢弃。

FRTDEC 区域 1 密钥寄存器 0

地址偏移:0x54

表 5.19:FRTDEC_R1KEYR0 的寄存器格式

字段

位

访问

复位值

描述

KEY0

31:0

只写

0x0

  • 区域密钥,位 [31:0]

  • 必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前写入此寄存器。 读取此寄存器返回零值。

  • 当 RxCFGR 寄存器中区域的 CONFIGLOCK 或 KEYLOCK 位被设置时写入此寄存器将被丢弃。

  • 注意:当应用程序成功更改 RxCFGR 寄存器中的 MODE 位时,RxKEYR 寄存器将被擦除

FRTDEC 区域 1 密钥寄存器 1

地址偏移:0x58

表 5.20:FRTDEC_R1KEYR1 的寄存器格式

字段

位

访问

复位值

描述

KEY1

31:0

只写

0x0

  • 区域密钥,位 [63:32]

  • 必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前写入此寄存器。 读取此寄存器返回零值。

  • 当 RxCFGR 寄存器中区域的 CONFIGLOCK 或 KEYLOCK 位被设置时写入此寄存器将被丢弃。

  • 注意:当应用程序成功更改 RxCFGR 寄存器中的 MODE 位时,RxKEYR 寄存器将被擦除

FRTDEC 区域 1 密钥寄存器 2

地址偏移:0x5C

表 5.21:FRTDEC_R1KEYR2 的寄存器格式

字段

位

访问

复位值

描述

KEY2

31:0

只写

0x0

  • 区域密钥,位 [95:64]

  • 必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前写入此寄存器。 读取此寄存器返回零值。

  • 当 RxCFGR 寄存器中区域的 CONFIGLOCK 或 KEYLOCK 位被设置时写入此寄存器将被丢弃。

  • 注意:当应用程序成功更改 RxCFGR 寄存器中的 MODE 位时,RxKEYR 寄存器将被擦除

FRTDEC 区域 1 密钥寄存器 3

地址偏移:0x60

表 5.22:FRTDEC_R1KEYR3 的寄存器格式

字段

位

访问

复位值

描述

KEY3

31:0

只写

0x0

  • 区域密钥,位 [127:96]

  • 必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前写入此寄存器。 读取此寄存器返回零值。

  • 当 RxCFGR 寄存器中区域的 CONFIGLOCK 或 KEYLOCK 位被设置时写入此寄存器将被丢弃。

  • 注意:当应用程序成功更改 RxCFGR 寄存器中的 MODE 位时,RxKEYR 寄存器将被擦除

FRTDEC 区域 2 配置寄存器

地址偏移:0x70

表 5.23:FRTDEC_R2CFGR 的寄存器格式

字段

位

访问

复位值

描述

REG_EN

0

读写

0x0

区域实时解密使能
  • 1’b0:禁用此区域的实时解密

  • 1’b1:启用此区域的实时解密。数据与相应的密钥流进行异或

注意: :设置此位时,区域上下文(版本、密钥、nonce)必须有效,否则将解密出垃圾数据。

CFGLOCK

1

读写

0x0

区域配置锁定
  • 1’b0:允许写入此区域的 CFGR1、STARTADDR、ENDADDR 和 NONCERx 寄存器

  • 1’b1:忽略对此区域的 CFGR1、STARTADDR、ENDADDR 和 NONCERx 寄存器的写入,直到下次 FRTDEC 复位

  • 如果此位被设置,则只能在 FRTDEC 复位时复位为“0”。设置此位会强制 KEYLOCK 位为“1”。

KEYLOCK

2

读写

0x0

区域密钥锁定
  • 1’b0:允许写入此区域的 KEYRx 寄存器

  • 1’b1:忽略对此区域的 KEYRx 寄存器的写入,KEYCRC 位域被锁定,直到下次 FRTDEC 复位。

保留

3

/

0x0

/

MODE

5:4

读写

0x0

操作模式 此位域选择此区域的 FRTDEC 操作模式
  • 2’b00:仅对指令访问进行解密

  • 2’b01:仅对数据访问进行解密

  • 2’b10:对所有读访问(指令或数据)进行解密

  • 当任一 MODE 位发生更改时,该区域的密钥将被清零。

保留

7:6

/

0x0

/

KEYCRC

15:8

只读

0x0

  • 区域密钥 8 位 CRC

  • 当 KEYLOCK=0 时,KEYCRC 位域在按以下精确序列加载此区域密钥时由硬件自动计算:先 KEYR0,然后 KEYR1,然后 KEYR2,最后 KEYR3(全部只写一次)。一旦开始新的有效序列,就会开始新的计算,并且在一个有效序列完成之前,读取 KEYCRC 为零。

  • 当 KEYLOCK=1 时,KEYCRC 保持不变直到下次复位。 CRC 计算使用标准 CRC-8-CCITT 算法 X8 + X2 + X + 1(根据约定)进行 8 位校验和。源代码可参见本手册。

  • 此字段为只读。

  • 注意:CRC 信息仅在密钥的最后一位写入后更新。

VER

31:16

读写

0x0

区域固件版本 此 16 位位域必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前正确初始化。

FRTDEC 区域 2 起始地址寄存器

地址偏移:0x74

表 5.24:FRTDEC_R2STARTADDR 的寄存器格式

字段

位

访问

复位值

描述

STARTADDR

31:0

读写

0x0

  • 区域 AXI 起始地址。 必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前写入此寄存器。

  • 当 RxCFGR 寄存器中区域的 CONFIGLOCK 位被设置时写入此寄存器将被丢弃。

  • 注意:确定区域时,忽略前 12 位(LSB)和后 4 位(MSB)。读取此寄存器时,高 4 位和低 12 位返回零。

FRTDEC 区域 2 结束地址寄存器

地址偏移:0x78

表 5.25:FRTDEC_R2ENDADDR 的寄存器格式

字段

位

访问

复位值

描述

ENDADDR

31:0

读写

0x0

  • 区域总线结束地址。 必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前写入此寄存器,并且 RxENDADDR 必须严格大于 RxSTARTADDR 才有效。

  • 当 RxCFGR 寄存器中区域的 CONFIGLOCK 位被设置时写入此寄存器将被丢弃。

  • 注意:确定区域时,忽略前 12 位(LSB)和后 4 位(MSB)。读取此寄存器时,高 4 位返回零,低 12 位返回1。

FRTDEC 区域 2 Nonce 寄存器 0

地址偏移:0x7C

表 5.26:FRTDEC_R2NONCER0 的寄存器格式

字段

位

访问

复位值

描述

NONCER0

31:0

读写

0x0

  • 区域 Nonce,位 [31:0]

  • 必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前写入此寄存器。

  • 当 RxCFGR 寄存器中区域的 CONFIGLOCK 位被设置时写入此寄存器将被丢弃。

FRTDEC 区域 2 Nonce 寄存器 1

地址偏移:0x80

表 5.27:FRTDEC_R2NONCER1 的寄存器格式

字段

位

访问

复位值

描述

NONCER1

31:0

读写

0x0

  • 区域 Nonce,位 [63:32]

  • 必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前写入此寄存器。

  • 当 RxCFGR 寄存器中区域的 CONFIGLOCK 位被设置时写入此寄存器将被丢弃。

FRTDEC 区域 2 密钥寄存器 0

地址偏移:0x84

表 5.28:FRTDEC_R2KEYR0 的寄存器格式

字段

位

访问

复位值

描述

KEY0

31:0

只写

0x0

  • 区域密钥,位 [31:0]

  • 必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前写入此寄存器。 读取此寄存器返回零值。

  • 当 RxCFGR 寄存器中区域的 CONFIGLOCK 或 KEYLOCK 位被设置时写入此寄存器将被丢弃。

  • 注意:当应用程序成功更改 RxCFGR 寄存器中的 MODE 位时,RxKEYR 寄存器将被擦除

FRTDEC 区域 2 密钥寄存器 1

地址偏移:0x88

表 5.29:FRTDEC_R2KEYR1 的寄存器格式

字段

位

访问

复位值

描述

KEY1

31:0

只写

0x0

  • 区域密钥,位 [63:32]

  • 必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前写入此寄存器。 读取此寄存器返回零值。

  • 当 RxCFGR 寄存器中区域的 CONFIGLOCK 或 KEYLOCK 位被设置时写入此寄存器将被丢弃。

  • 注意:当应用程序成功更改 RxCFGR 寄存器中的 MODE 位时,RxKEYR 寄存器将被擦除

FRTDEC 区域 2 密钥寄存器 2

地址偏移:0x8C

表 5.30:FRTDEC_R2KEYR2 的寄存器格式

字段

位

访问

复位值

描述

KEY2

31:0

只写

0x0

  • 区域密钥,位 [95:64]

  • 必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前写入此寄存器。 读取此寄存器返回零值。

  • 当 RxCFGR 寄存器中区域的 CONFIGLOCK 或 KEYLOCK 位被设置时写入此寄存器将被丢弃。

  • 注意:当应用程序成功更改 RxCFGR 寄存器中的 MODE 位时,RxKEYR 寄存器将被擦除

FRTDEC 区域 2 密钥寄存器 3

地址偏移:0x90

表 5.31:FRTDEC_R2KEYR3 的寄存器格式

字段

位

访问

复位值

描述

KEY3

31:0

只写

0x0

  • 区域密钥,位 [127:96]

  • 必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前写入此寄存器。 读取此寄存器返回零值。

  • 当 RxCFGR 寄存器中区域的 CONFIGLOCK 或 KEYLOCK 位被设置时写入此寄存器将被丢弃。

  • 注意:当应用程序成功更改 RxCFGR 寄存器中的 MODE 位时,RxKEYR 寄存器将被擦除

FRTDEC 区域 3 配置寄存器

地址偏移:0xA0

表 5.32:FRTDEC_R3CFGR 的寄存器格式

字段

位

访问

复位值

描述

REG_EN

0

读写

0x0

区域实时解密使能
  • 1’b0:禁用此区域的实时解密

  • 1’b1:启用此区域的实时解密。数据与相应的密钥流进行异或

注意: :设置此位时,区域上下文(版本、密钥、nonce)必须有效,否则将解密出垃圾数据。

CFGLOCK

1

读写

0x0

区域配置锁定
  • 1’b0:允许写入此区域的 CFGR1、STARTADDR、ENDADDR 和 NONCERx 寄存器

  • 1’b1:忽略对此区域的 CFGR1、STARTADDR、ENDADDR 和 NONCERx 寄存器的写入,直到下次 FRTDEC 复位

  • 如果此位被设置,则只能在 FRTDEC 复位时复位为“0”。设置此位会强制 KEYLOCK 位为“1”。

KEYLOCK

2

读写

0x0

区域密钥锁定
  • 1’b0:允许写入此区域的 KEYRx 寄存器

  • 1’b1:忽略对此区域的 KEYRx 寄存器的写入,KEYCRC 位域被锁定,直到下次 FRTDEC 复位。

保留

3

/

0x0

/

MODE

5:4

读写

0x0

操作模式 此位域选择此区域的 FRTDEC 操作模式
  • 2’b00:仅对指令访问进行解密

  • 2’b01:仅对数据访问进行解密

  • 2’b10:对所有读访问(指令或数据)进行解密

  • 当任一 MODE 位发生更改时,该区域的密钥将被清零。

保留

7:6

/

0x0

/

KEYCRC

15:8

只读

0x0

  • 区域密钥 8 位 CRC

  • 当 KEYLOCK=0 时,KEYCRC 位域在按以下精确序列加载此区域密钥时由硬件自动计算:先 KEYR0,然后 KEYR1,然后 KEYR2,最后 KEYR3(全部只写一次)。一旦开始新的有效序列,就会开始新的计算,并且在一个有效序列完成之前,读取 KEYCRC 为零。

  • 当 KEYLOCK=1 时,KEYCRC 保持不变直到下次复位。 CRC 计算使用标准 CRC-8-CCITT 算法 X8 + X2 + X + 1(根据约定)进行 8 位校验和。源代码可参见本手册。

  • 此字段为只读。

  • 注意:CRC 信息仅在密钥的最后一位写入后更新。

VER

31:16

读写

0x0

区域固件版本 此 16 位位域必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前正确初始化。

FRTDEC 区域 3 起始地址寄存器

地址偏移:0xA4

表 5.33:FRTDEC_R3STARTADDR 的寄存器格式

字段

位

访问

复位值

描述

STARTADDR

31:0

读写

0x0

  • 区域 AXI 起始地址。 必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前写入此寄存器。

  • 当 RxCFGR 寄存器中区域的 CONFIGLOCK 位被设置时写入此寄存器将被丢弃。

  • 注意:确定区域时,忽略前 12 位(LSB)和后 4 位(MSB)。读取此寄存器时,高 4 位和低 12 位返回零。

FRTDEC 区域 3 结束地址寄存器

地址偏移:0xA8

表 5.34:FRTDEC_R3ENDADDR 的寄存器格式

字段

位

访问

复位值

描述

ENDADDR

31:0

读写

0x0

  • 区域总线结束地址。 必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前写入此寄存器,并且 RxENDADDR 必须严格大于 RxSTARTADDR 才有效。

  • 当 RxCFGR 寄存器中区域的 CONFIGLOCK 位被设置时写入此寄存器将被丢弃。

  • 注意:确定区域时,忽略前 12 位(LSB)和后 4 位(MSB)。读取此寄存器时,高 4 位返回零,低 12 位返回1。

FRTDEC 区域 3 Nonce 寄存器 0

地址偏移:0xAC

表 5.35:FRTDEC_R3NONCER0 的寄存器格式

字段

位

访问

复位值

描述

NONCER0

31:0

读写

0x0

  • 区域 Nonce,位 [31:0]

  • 必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前写入此寄存器。

  • 当 RxCFGR 寄存器中区域的 CONFIGLOCK 位被设置时写入此寄存器将被丢弃。

FRTDEC 区域 3 Nonce 寄存器 1

地址偏移:0xB0

表 5.36:FRTDEC_R3NONCER1 的寄存器格式

字段

位

访问

复位值

描述

NONCER1

31:0

读写

0x0

  • 区域 Nonce,位 [63:32]

  • 必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前写入此寄存器。

  • 当 RxCFGR 寄存器中区域的 CONFIGLOCK 位被设置时写入此寄存器将被丢弃。

FRTDEC 区域 3 密钥寄存器 0

地址偏移:0xB4

表 5.37:FRTDEC_R3KEYR0 的寄存器格式

字段

位

访问

复位值

描述

KEY0

31:0

只写

0x0

  • 区域密钥,位 [31:0]

  • 必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前写入此寄存器。 读取此寄存器返回零值。

  • 当 RxCFGR 寄存器中区域的 CONFIGLOCK 或 KEYLOCK 位被设置时写入此寄存器将被丢弃。

  • 注意:当应用程序成功更改 RxCFGR 寄存器中的 MODE 位时,RxKEYR 寄存器将被擦除

FRTDEC 区域 3 密钥寄存器 1

地址偏移:0xB8

表 5.38:FRTDEC_R3KEYR1 的寄存器格式

字段

位

访问

复位值

描述

KEY1

31:0

只写

0x0

  • 区域密钥,位 [63:32]

  • 必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前写入此寄存器。 读取此寄存器返回零值。

  • 当 RxCFGR 寄存器中区域的 CONFIGLOCK 或 KEYLOCK 位被设置时写入此寄存器将被丢弃。

  • 注意:当应用程序成功更改 RxCFGR 寄存器中的 MODE 位时,RxKEYR 寄存器将被擦除

FRTDEC 区域 3 密钥寄存器 2

地址偏移:0xBC

表 5.39:FRTDEC_R3KEYR2 的寄存器格式

字段

位

访问

复位值

描述

KEY2

31:0

只写

0x0

  • 区域密钥,位 [95:64]

  • 必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前写入此寄存器。 读取此寄存器返回零值。

  • 当 RxCFGR 寄存器中区域的 CONFIGLOCK 或 KEYLOCK 位被设置时写入此寄存器将被丢弃。

  • 注意:当应用程序成功更改 RxCFGR 寄存器中的 MODE 位时,RxKEYR 寄存器将被擦除

FRTDEC 区域 3 密钥寄存器 3

地址偏移:0xC0

表 5.40:FRTDEC_R3KEYR3 的寄存器格式

字段

位

访问

复位值

描述

KEY3

31:0

只写

0x0

  • 区域密钥,位 [127:96]

  • 必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前写入此寄存器。 读取此寄存器返回零值。

  • 当 RxCFGR 寄存器中区域的 CONFIGLOCK 或 KEYLOCK 位被设置时写入此寄存器将被丢弃。

  • 注意:当应用程序成功更改 RxCFGR 寄存器中的 MODE 位时,RxKEYR 寄存器将被擦除

FRTDEC 中断状态寄存器

地址偏移:0x100

表 5.41:FRTDEC_ISR 的寄存器格式

字段

位

访问

复位值

描述

SEIF

0

读写

0x0

  • 安全错误中断标志状态 此位由硬件设置,仅由应用程序读取。

  • 当检测到至少一个安全错误(非法访问密钥、对锁定配置的非法写入)时,此位被设置。

  • 由应用程序在此位写入 1’b1 清除。应用程序写入 1’b0 无效。

  • 1’b0:无错误,无安全错误状态,无中断挂起。

  • 1’b1:错误,安全错误标志状态,有中断挂起。实际中断生成取决于 FRTDEC_IER 中的相应位 SEIE。

XONEIF

1

读写

0x0

  • 仅执行/从不执行错误中断标志状态 此位由硬件设置,仅由应用程序读取

  • 当在任何 MODE 位设置为 00 的加密区域上检测到读取访问而非指令取指时,此位被设置。

  • 当在任何 MODE 位设置为 01 的加密区域上检测到指令取指而非读取访问时,此位也被设置。

  • 由应用程序在此位写入 1’b1 清除。应用程序写入 1’b0 无效。

  • 1’b0:无错误,无安全错误状态,无中断挂起。

  • 1’b1:错误,在 MODE 位设置为 00 的区域上检测到读取访问,或在 MODE 位设置为 01 的区域上检测到执行访问。

  • FRTDEC 对非法访问返回零值,并且如果 FRTDEC_IER 寄存器中的 XONEIE 位设置为“1”,则会生成可选中断。

KEIF

2

读写

0x0

  • 密钥错误中断标志状态 此位由硬件设置,仅由应用程序读取。

  • 当密钥寄存器因异常事件(篡改检测、未经授权的调试器连接、不可信启动、RDP 级别回退)被复位后,在任何加密区域上发生读取访问时,此位被设置。

  • 由应用程序在此位写入 1’b1 清除。应用程序写入 1’b0 无效。

  • 1’b0:无错误,FRTDEC 正常运行

  • 1’b1:错误,在异常事件之后,在已启用的加密区域上检测到读取访问

  • FRTDEC 对该读取返回零值,并且如果 FRTDEC_IER 寄存器中的 KEIE 位设置为“1”,则会生成可选中断。

  • KEIF 设置后,对任何已启用的加密区域的任何后续读取都返回零值。此状态持续到 FRTDEC 密钥被重新初始化为止。

保留

31:3

/

0x0

/

FRTDEC 中断使能寄存器

地址偏移:0x104

表 5.42:FRTDEC_IER 的寄存器格式

字段

位

访问

复位值

描述

SEIE

0

读写

0x0

安全错误中断使能
  • 1’b0:禁用,安全错误 SEIF 的中断生成被禁用(屏蔽)

  • 1’b1:启用,安全错误 SEIF 的中断生成被启用(未屏蔽)

XONEIE

1

读写

0x0

仅执行/从不执行错误中断使能
  • 1’b0:禁用,仅执行错误 XONEIF 的中断生成被禁用(屏蔽)

  • 1’b1:启用,仅执行错误 XONEIF 的中断生成被启用(未屏蔽)

KEIE

2

读写

0x0

密钥错误中断使能
  • 1’b0:禁用,密钥错误标志 KEIF 的中断生成被禁用(屏蔽)

  • 1’b1:启用,密钥错误标志 KEIF 的中断生成被启用(未屏蔽)

保留

31:3

/

0x0

/