生命周期状态判定与切换
芯片通过 OTP 中 0x700 bit[7:0] 的值来标识当前生命周期状态。判定规则基于该字节的比特 1 数量:
比特 1 数量 |
当前状态 |
OTP 值示例 |
|---|---|---|
偶数(且不为 0) |
正常使用态 |
0xFF(8 个 1)、0xFC(6 个 1)、0xF0(4 个 1) |
奇数 |
RMA 态 |
0xFE(7 个 1)、0xF8(5 个 1)、0xE0(3 个 1) |
0 |
废弃态 |
0x00 |
RMA 状态的进入和退出通过修改该 OTP 值实现,每次切换需要将比特 1 数量在奇数和偶数之间变化: 进入 RMA 时编程为奇数,退出时编程为偶数。由于 OTP 只能从 1 编程为 0(不可逆),每次编程只能减少比特 1 数量,因此相邻两次切换需编程为不同值。 下表列出从初始状态开始,完整 3 次 RMA 进出的推荐编程序列:
操作步骤 |
目标状态 |
OTP 值 |
说明 |
|---|---|---|---|
初始 |
正常使用态 |
0xFF |
出厂默认值,8 个 1,偶数 |
第 1 次进入 RMA |
RMA 态 |
0xFE |
7 个 1,奇数 |
第 1 次退出 RMA |
正常使用态 |
0xFC |
6 个 1,偶数 |
第 2 次进入 RMA |
RMA 态 |
0xF8 |
5 个 1,奇数 |
第 2 次退出 RMA |
正常使用态 |
0xF0 |
4 个 1,偶数 |
第 3 次进入 RMA |
RMA 态 |
0xE0 |
3 个 1,奇数 |
第 3 次退出 RMA |
正常使用态 |
0xC0 |
2 个 1,偶数 |
超过 3 次 |
废弃态 |
0x00 |
自动触发或手动编程 |
RMA 操作流程
RMA 次数限制
Ameba SoC 最多允许 3 次完整的 RMA 进出循环。当尝试第 4 次进入 RMA 时需要将 OTP 编程为 0x00 ,芯片将进入废弃态,此操作不可逆。 因此需要严格记录每颗芯片的 RMA 次数,避免意外进入废弃态。
操作步骤
进入 RMA 状态:
确认当前芯片处于正常使用态
将
0x700 bit[7:0]编程为对应值(参见上方编程序列表)AT+OTP=WRAW,0x700,1,FE
复位芯片,芯片进入 RMA 状态
退出 RMA 状态:
RMA 流程完成后,将
0x700 bit[7:0]编程为对应值(参见上方编程序列表)AT+OTP=WRAW,0x700,1,FC
复位芯片,芯片退出 RMA 状态
备注
RTL8721F 之后的 chip, RMA 相关区域,只能在 secure 下访问。
废弃态(EOL/Decommission)
废弃态是芯片生命周期的终点,用于芯片报废、失效或主动安全销毁场景。进入废弃态后:
所有 OTP 位被擦除或失效
芯片 Boot 阶段彻底锁死,无法恢复至其他任何生命周期状态
芯片无法被调试或解锁
芯片上电后仅能通过串口打印废弃特征码,无法执行应用程序
触发条件
芯片进入废弃态有以下两种方式:
方式一:超过 RMA 次数限制
当 RMA 进出次数超过 3 次后,芯片需要手动编程进入废弃态。
方式二:主动安全销毁
用户可通过烧写物理 OTP 主动进入废弃态:
用户需要自行实现废弃态逻辑。 Realtek 建议:如果 OTP 的 User Define 区域没有被锁住,则需要将此区域全部写 0 擦除,保护敏感数据不泄漏。
用户需要自行实现废弃态逻辑。 Realtek 建议:如果 OTP 的 User Define 区域没有被锁住,则需要将此区域全部写 0 擦除,保护敏感数据不泄漏。
用户需要自行实现废弃态逻辑。 Realtek 建议:如果 OTP 的 User Define 区域没有被锁住,则需要将此区域全部写 0 擦除,保护敏感数据不泄漏。
用户需要自行实现废弃态逻辑。 Realtek 建议:如果 OTP 的 User Define 区域没有被锁住,则需要将此区域全部写 0 擦除,保护敏感数据不泄漏。
用户需要自行实现废弃态逻辑。 Realtek 建议:如果 OTP 的 User Define 区域没有被锁住,则需要将此区域全部写 0 擦除,保护敏感数据不泄漏。
用户需要自行实现废弃态逻辑。 Realtek 建议:如果 OTP 的 User Define 区域没有被锁住,则需要将此区域全部写 0 擦除,保护敏感数据不泄漏。
用户可以通过烧写物理 OTP 进入废弃态:
将
0x700 bit[7:0]的值编程为0,进入废弃态。AT+OTP=WRAW,0x700,1,00
复位芯片,芯片将无法启动。
OTP 烧录后:
所有 OTP 位彻底擦除
整个芯片 Boot 阶段彻底锁死,无法恢复至其他任何生命周期
不可再进入 RMA 态,也无法再被调试或解锁
在废弃状态下,如果芯片尝试上电,仅能串口打印出废弃特征码,无法执行应用程序
RMA 状态下的安全机制
为在 RMA 流程中保护用户数据安全,芯片启用了以下安全机制:
OTP 数据保护
芯片进入 RMA 态后,部分 OTP 区域将不可访问:
RMA 模式下,安全区域 0x200 ~ 0x37F 和所有 user-defined 物理区域 0x380 ~ 0x4FF 不可访问。
RMA 模式下,安全区域 0x200 ~ 0x37F 和部分 user-defined 物理区域 0x380 ~ 0x3FF 不可访问。
RMA 模式下,安全区域 0x200 ~ 0x37F 和部分 user-defined 物理区域 0x380 ~ 0x3FF 不可访问。
RMA 模式下,安全区域 0x200 ~ 0x37F 和部分 user-defined 物理区域 0x380 ~ 0x3FF 不可访问。
RMA 模式下,安全区域 0x200 ~ 0x37F 和部分 user-defined 物理区域 0x380 ~ 0x3FF 不可访问。
RMA 模式下,安全区域 0x200 ~ 0x37F 和部分 user-defined 物理区域 0x380 ~ 0x3FF 不可访问。
RMA 模式下,安全区域 0x200 ~ 0x37F 和所有 user-defined 物理区域 0x380 ~ 0x4FF 不可访问。
由于安全区域不可读,所有依赖 HUK 的数据加密与身份认证将中止,有效防止用户敏感数据在 RMA 流程中泄露。
RMA 安全启动
为避免在 RMA 流程中运行未被授权的固件,芯片实现了 RMA 安全启动机制。用户需预先烧写 RMA Public Key Hash,之后在 RMA 状态下只能运行由此密钥签名的固件。
详细机制参见 安全启动 。
RMA SWD 调试保护
SWD(Serial Wire Debug)是芯片调试的主要接口。为防止在 RMA 状态下被恶意利用,芯片在 RMA 状态下启用 SWD 密码保护机制,需要输入正确的 RMA SWD Key 后才能连接调试器。 RMA SWD Key 由用户自行生成并烧写至 OTP,建议在正常使用态下完成配置。若 RMA SWD Key 丢失,将无法在 RMA 状态下进行调试。
详细机制参见 SWD 保护 。
小心
所有产线、售后、维修环节应严格记录并审计废弃处理过程,确认操作不可逆。
与 RMA 态不同,废弃态后芯片彻底报废,无法用于分析和恢复。