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 框图
模块框图如图所示:
图 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 解密
图 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 位数据块都具有连续的地址值。
图 3.3: FRTDEC 流控制概述(双突发读取请求)
关于此图的几点说明:
FRTDEC 强制将 RREADY 置低,因为它尚未准备好解密数据(密钥流计算中)
FRTDEC 没有强制将 RREADY 置低,因为有效的掩码已准备好对输入数据进行异或操作。解密如预期那样以零延迟完成。
密钥流 FIFO 已满。下次需要密钥流时,将需要 11 个时钟周期。
FRTDEC 控制器具有预取机制,可以极大地加快对与上一次地址连续的地址的任何读取请求。由于掩码 FIFO 机制,FRTDEC 能够管理这种更短的延迟。
图 3.4 展示了 FRTDEC 如何管理一个 4 字(256 位)突发读取的 AXI 请求,随后是对一个与上一次地址不连续的地址的单次读取。
图 3.4: FRTDEC 流控制概述(突发后接单次读取请求)
关于此图的几点说明:
FRTDEC 强制将 RREADY 置低,因为它尚未准备好解密数据。
FRTDEC 强制将 RREADY 置低,因为预计算的掩码无法用于此请求(加密区域地址不连续)。
FRTDEC 初始化过程
下文推荐两种可信的初始化方案。
注意: 这些序列用于生产代码,因为在固件开发期间,并不总是建议锁定密钥或区域配置。
对配置寄存器的写入在配置锁允许的情况下生效,即使区域已启用。
一个密钥用于所有区域的初始化方案,在此方案中,一个实体拥有用于解密四个受保护区域的秘密密钥。推荐的 FRTDEC 配置序列如下所述:
对于 x=1 到 4,在 RxCFGR 寄存器中写入正确的 MODE[1:0] 值。
对于 x=1 到 4,使用 KEYCRC 中描述的序列编程 RxKEYR 寄存器(以获得有效的 CRC)。警告:密钥寄存器是只写的!
对于 x=1 到 4,检查密钥 CRC。如果正确,则在 RxCFGR 寄存器中设置 KEYLOCK 位。此位无法清除,即该区域 x 中的密钥寄存器不再可写。
执行循环,直到您拥有要解密的区域 x。此任务不一定必须由拥有解密密钥的实体执行。
验证密钥 CRC 是否与存储在该区域中的加密二进制文件对应。
填写与此二进制文件对应的详细信息(nonce、起始地址、结束地址、版本号)。
使用 REG_EN 启用此区域的解密。
在 RxCFGR 中设置 CONFIGLOCK 位。此位无法清除,即区域配置不再可写。
警告: 对于给定区域,当 MODE 位更改时,密钥寄存器会被硬件清零。因此,上述步骤 1 必须在步骤 2 之前完成,并且步骤 2 之后不得修改 MODE 位。
每个区域一个密钥的初始化方案,在此方案中,一个实体可以拥有用于解密一个(或多个)受保护区域的秘密密钥。推荐的 FRTDEC 配置序列如下所述:
当有要解密的区域,此任务必须由拥有相应密钥的实体执行。
在 RxCFGR 寄存器中写入正确的 MODE[1:0] 值。
使用 KEYCRC 中描述的序列编程 RxKEYR 寄存器(以获得有效的密钥 CRC)。警告:密钥寄存器是只写的!
检查密钥 CRC。如果正确,则在 RxCFGR 寄存器中设置 KEYLOCK 位。此位无法清除,即密钥寄存器不再可写。
填写与受保护固件对应的详细信息(nonce、起始地址、结束地址、版本号)。
使用 REG_EN 启用此区域的解密。
在 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 中断源。
位 |
名称 |
描述 |
|---|---|---|
0 |
SEIF |
|
1 |
XONEIF |
对仅执行区域(MODE[1:0]=00)的非法读取,以及对从不执行区域(MODE[1:0]=01)的非法执行请求。此类非法请求返回 0x0,不产生总线错误。 |
2 |
KEIF |
密钥错误:在密钥寄存器因异常事件(篡改检测、未经授权的调试连接、不可信启动、RDP 级别回退)被清除后,对加密区域的读取请求。此类读取请求返回 0x0,不产生总线错误。 |
注意: 发生密钥错误后,必须重新初始化 FRTDEC 密钥,并且如果寄存器被锁定,可能需要复位 FRTDEC。
5. 寄存器
FRTDEC_RF 寄存器
FRTDEC_RF 中的寄存器及其对应的偏移量如表 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
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
IP_VER |
23:0 |
只读 |
0x010003 |
IP 版本号 |
Reserved |
31:24 |
/ |
0x0 |
/ |
GIT 版本号寄存器
地址偏移:0x4
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
GIT_VER |
31:0 |
只读 |
0x0 |
Git 版本号 |
FRTDEC 控制寄存器
地址偏移:0x8
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
ALGO_SEL |
0 |
读写 |
0x0 |
|
保留 |
31:1 |
/ |
0x0 |
/ |
FRTDEC 区域 0 配置寄存器
地址偏移:0x10
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
REG_EN |
0 |
读写 |
0x0 |
注意: :设置此位时,区域上下文(版本、密钥、nonce)必须有效,否则将解密出垃圾数据。 |
CFGLOCK |
1 |
读写 |
0x0 |
|
KEYLOCK |
2 |
读写 |
0x0 |
|
保留 |
3 |
/ |
0x0 |
/ |
MODE |
5:4 |
读写 |
0x0 |
|
保留 |
7:6 |
/ |
0x0 |
/ |
KEYCRC |
15:8 |
只读 |
0x0 |
|
VER |
31:16 |
读写 |
0x0 |
区域固件版本 此 16 位位域必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前正确初始化。 |
FRTDEC 区域 0 起始地址寄存器
地址偏移:0x14
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
STARTADDR |
31:0 |
读写 |
0x0 |
|
FRTDEC 区域 0 结束地址寄存器
地址偏移:0x18
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
ENDADDR |
31:0 |
读写 |
0x0 |
|
FRTDEC 区域 0 Nonce 寄存器 0
地址偏移:0x1C
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
NONCER0 |
31:0 |
读写 |
0x0 |
|
FRTDEC 区域 0 Nonce 寄存器 1
地址偏移:0x20
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
NONCER1 |
31:0 |
读写 |
0x0 |
|
FRTDEC 区域 0 密钥寄存器 0
地址偏移:0x24
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
KEY0 |
31:0 |
只写 |
0x0 |
|
FRTDEC 区域 0 密钥寄存器 1
地址偏移:0x28
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
KEY1 |
31:0 |
只写 |
0x0 |
|
FRTDEC 区域 0 密钥寄存器 2
地址偏移:0x2C
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
KEY2 |
31:0 |
只写 |
0x0 |
|
FRTDEC 区域 0 密钥寄存器 3
地址偏移:0x30
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
KEY3 |
31:0 |
只写 |
0x0 |
|
FRTDEC 区域 1 配置寄存器
地址偏移:0x40
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
REG_EN |
0 |
读写 |
0x0 |
注意: :设置此位时,区域上下文(版本、密钥、nonce)必须有效,否则将解密出垃圾数据。 |
CFGLOCK |
1 |
读写 |
0x0 |
|
KEYLOCK |
2 |
读写 |
0x0 |
|
保留 |
3 |
/ |
0x0 |
/ |
MODE |
5:4 |
读写 |
0x0 |
|
保留 |
7:6 |
/ |
0x0 |
/ |
KEYCRC |
15:8 |
只读 |
0x0 |
|
VER |
31:16 |
读写 |
0x0 |
区域固件版本 此 16 位位域必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前正确初始化。 |
FRTDEC 区域 1 起始地址寄存器
地址偏移:0x44
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
STARTADDR |
31:0 |
读写 |
0x0 |
|
FRTDEC 区域 1 结束地址寄存器
地址偏移:0x48
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
ENDADDR |
31:0 |
读写 |
0x0 |
|
FRTDEC 区域 1 Nonce 寄存器 0
地址偏移:0x4C
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
NONCER0 |
31:0 |
读写 |
0x0 |
|
FRTDEC 区域 1 Nonce 寄存器 1
地址偏移:0x50
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
NONCER1 |
31:0 |
读写 |
0x0 |
|
FRTDEC 区域 1 密钥寄存器 0
地址偏移:0x54
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
KEY0 |
31:0 |
只写 |
0x0 |
|
FRTDEC 区域 1 密钥寄存器 1
地址偏移:0x58
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
KEY1 |
31:0 |
只写 |
0x0 |
|
FRTDEC 区域 1 密钥寄存器 2
地址偏移:0x5C
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
KEY2 |
31:0 |
只写 |
0x0 |
|
FRTDEC 区域 1 密钥寄存器 3
地址偏移:0x60
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
KEY3 |
31:0 |
只写 |
0x0 |
|
FRTDEC 区域 2 配置寄存器
地址偏移:0x70
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
REG_EN |
0 |
读写 |
0x0 |
注意: :设置此位时,区域上下文(版本、密钥、nonce)必须有效,否则将解密出垃圾数据。 |
CFGLOCK |
1 |
读写 |
0x0 |
|
KEYLOCK |
2 |
读写 |
0x0 |
|
保留 |
3 |
/ |
0x0 |
/ |
MODE |
5:4 |
读写 |
0x0 |
|
保留 |
7:6 |
/ |
0x0 |
/ |
KEYCRC |
15:8 |
只读 |
0x0 |
|
VER |
31:16 |
读写 |
0x0 |
区域固件版本 此 16 位位域必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前正确初始化。 |
FRTDEC 区域 2 起始地址寄存器
地址偏移:0x74
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
STARTADDR |
31:0 |
读写 |
0x0 |
|
FRTDEC 区域 2 结束地址寄存器
地址偏移:0x78
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
ENDADDR |
31:0 |
读写 |
0x0 |
|
FRTDEC 区域 2 Nonce 寄存器 0
地址偏移:0x7C
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
NONCER0 |
31:0 |
读写 |
0x0 |
|
FRTDEC 区域 2 Nonce 寄存器 1
地址偏移:0x80
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
NONCER1 |
31:0 |
读写 |
0x0 |
|
FRTDEC 区域 2 密钥寄存器 0
地址偏移:0x84
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
KEY0 |
31:0 |
只写 |
0x0 |
|
FRTDEC 区域 2 密钥寄存器 1
地址偏移:0x88
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
KEY1 |
31:0 |
只写 |
0x0 |
|
FRTDEC 区域 2 密钥寄存器 2
地址偏移:0x8C
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
KEY2 |
31:0 |
只写 |
0x0 |
|
FRTDEC 区域 2 密钥寄存器 3
地址偏移:0x90
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
KEY3 |
31:0 |
只写 |
0x0 |
|
FRTDEC 区域 3 配置寄存器
地址偏移:0xA0
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
REG_EN |
0 |
读写 |
0x0 |
注意: :设置此位时,区域上下文(版本、密钥、nonce)必须有效,否则将解密出垃圾数据。 |
CFGLOCK |
1 |
读写 |
0x0 |
|
KEYLOCK |
2 |
读写 |
0x0 |
|
保留 |
3 |
/ |
0x0 |
/ |
MODE |
5:4 |
读写 |
0x0 |
|
保留 |
7:6 |
/ |
0x0 |
/ |
KEYCRC |
15:8 |
只读 |
0x0 |
|
VER |
31:16 |
读写 |
0x0 |
区域固件版本 此 16 位位域必须在 RxCFGR 寄存器中设置对应区域的 REG_EN 位之前正确初始化。 |
FRTDEC 区域 3 起始地址寄存器
地址偏移:0xA4
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
STARTADDR |
31:0 |
读写 |
0x0 |
|
FRTDEC 区域 3 结束地址寄存器
地址偏移:0xA8
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
ENDADDR |
31:0 |
读写 |
0x0 |
|
FRTDEC 区域 3 Nonce 寄存器 0
地址偏移:0xAC
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
NONCER0 |
31:0 |
读写 |
0x0 |
|
FRTDEC 区域 3 Nonce 寄存器 1
地址偏移:0xB0
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
NONCER1 |
31:0 |
读写 |
0x0 |
|
FRTDEC 区域 3 密钥寄存器 0
地址偏移:0xB4
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
KEY0 |
31:0 |
只写 |
0x0 |
|
FRTDEC 区域 3 密钥寄存器 1
地址偏移:0xB8
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
KEY1 |
31:0 |
只写 |
0x0 |
|
FRTDEC 区域 3 密钥寄存器 2
地址偏移:0xBC
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
KEY2 |
31:0 |
只写 |
0x0 |
|
FRTDEC 区域 3 密钥寄存器 3
地址偏移:0xC0
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
KEY3 |
31:0 |
只写 |
0x0 |
|
FRTDEC 中断状态寄存器
地址偏移:0x100
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
SEIF |
0 |
读写 |
0x0 |
|
XONEIF |
1 |
读写 |
0x0 |
|
KEIF |
2 |
读写 |
0x0 |
|
保留 |
31:3 |
/ |
0x0 |
/ |
FRTDEC 中断使能寄存器
地址偏移:0x104
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
SEIE |
0 |
读写 |
0x0 |
|
XONEIE |
1 |
读写 |
0x0 |
|
KEIE |
2 |
读写 |
0x0 |
|
保留 |
31:3 |
/ |
0x0 |
/ |