3.4.1.3:STM32U5 OEMKEY安全设置
1.概述
文档目的
说明 PW200、PW300、PWX1,是如何处理STM32U59x OEMKEY 的写入与RDP回退。
1.1官方文档信息摘要
OEM1KEY 与 OEM2KEY 不能设置为全0
写入0xFFFFFFFF清除OEMxLOCK
- OEM1LOCK 在RDP level 0 时可以清除
- OEM2LOCK 在RDP level 0或RDP level 0.5 时可以清除
当OEM1LOCK = 0时,无条件允许RDP level 1回退RDP level 0
当OEM2LOCK = 0时:
- 无条件允许RDP level 1回退RDP level 0.5
- 永久禁止RDP level 2回退RDP level 1
1.2OEM1 RDP lock mechanism
- 什么情况可以修改OEM1KEY
- RDP level 0
- RDP level 0.5 或 RDP level 1,并且OEM1LOCK = 0
- 什么时候使用OEM1KEY
- RDP level 1 回退 RDP level 0时,OEM1LOCK = 1
1.3OEM2 RDP lock mechanism
- 什么情况可以修改OEM2KEY
- RDP level 0 或 RDP level 0.5
- RDP level 1,并且OEM2LOCK = 0
- 什么时候使用OEM2KEY
- RDP level 1 回退 RDP 0.5时,OEM2KEY = 1
- 授权RDP level 2 回退 RDP 1
1.4特殊选项字节修改规则(部分)
TZEN
- 只能在RDP level 0设置
- 只能在RDP level 1回退RDP level 0时清除
UNLOCK
- 只能在RDP level 1回退RDP level 0时设置为1(实际测试解锁后可以直接修改?)
2.烧录处理机制说明
当在PowerWriter设备上,选择STM32U5,将可以看到如下的设备界面:

2.1OEMKEY 写入(离线,在线)
注:OEMKEY的写入与写选项字绑定,因此【选项字模式】设置为【无操作=>无操作】时,OEMKEY不会写入。
写入条件
写入选项字节前,获取插件数据,根据插件配置确定是否写入OEMKEY,与写入的选项字节值无关。
当扩展中的OEM Key 功能设置 设置为【写入(加保护、配置)】对应的OEMKEY写入寄存器。需要注意,OEMKEY 只能在芯片当前处于RDP Level 0时写入,RDP Level 不满足条件时,返回错误。
2.2RDP Level 回退(在线)
注:
- 解锁流程根据扩展配置执行,若未正确配置,会导致回退失败。
2.2.1OEM2KEY 解锁,回退
- 处理机制
当芯片处于RDP level 2 时,无法连接调试,可以读取IDCODE。
利用上述限制,写入选项字节前读取RDP,最大连续读取3次。若3次都失败,检查是否已经读取到IDCODE,若已经读取到IDCODE,若当前写入的RDP为Level 1(0xDC或0xFF)或Level0(0xAA),执行回退流程。
- RDP level 2回退RDP level 1
将扩展中的OEM key 2功能设置为 【解锁(去保护、回退)】, 并输入正确的OEM key 2。最后,将选项字节的RDP设置为Level 1(0xDC 或 0xFF)或Level 0(0xAA),回到选项字节页面点击【写入】。
2.2.2OEM1KEY 解锁,回退
处理机制
结合芯片当前的RDP值与设置的目标值决定是否执行回退流程,若回退需要密码解锁,密码从扩展中获取,若未正确配置扩展,返回错误。
RDP level 1回退RDP level 0
将扩展中的OEM key 1功能设置为【解锁(去保护、回退)】,并输入正确的OEM key 1,回到选项字节页面点击【写入】。
2.2.3RDP level 2 回退 RDP level 0
处理机制
烧录器支持RDP level 2回退到RDP level 0,实际是自动执行了两次RDP回退(RDP2->RDP1->RDP0)。
扩展配置
将扩展中的OEM key 1功能设置为【解锁(去保护、回退)】,并输入正确的OEM key 1。OEM key 2功能设置为 【解锁(去保护、回退)】, 并输入正确的OEM key 2,回到选项字节页面点击【写入】。
2.3RDP Level 回退(离线)
注:
- 解锁流程根据扩展配置执行,若未正确配置,会导致回退失败。
2.3.1OEM2KEY 解锁,回退
当芯片处于RDP level 2 时,无法连接调试。
处理机制
离线模式下,按下烧录按键后,烧录器多次访问失败将会执行回退流程。
RDP level 2回退RDP level 1
将扩展中的OEM key 2功能设置为 【解锁(去保护、回退)】, 并输入正确的OEM key 2。最后,将选项字节的RDP设置为Level 1(0xDC 或 0xFF)或Level 0(0xAA),加载离线档案到烧录器,按键启动离线烧录。
2.3.2OEM1KEY 解锁,回退
处理机制
结合芯片当前的RDP值与设置的目标值决定是否执行回退流程,若回退需要密码解锁,密码从扩展中获取,若未正确配置扩展,返回错误。
RDP level 1回退RDP level 0
将扩展中的OEM key 1功能设置为【解锁(去保护、回退)】,并输入正确的OEM key 1,加载离线档案到烧录器,按键启动离线烧录。
2.3.3RDP level 2 回退 RDP level 0
处理机制
烧录器支持RDP level 2回退到RDP level 0,实际是自动执行了两次RDP回退(RDP2->RDP1->RDP0)。
扩展配置
将扩展中的OEM key 1功能设置为【解锁(去保护、回退)】,并输入正确的OEM key 1。OEM key 2功能设置为 【解锁(去保护、回退)】, 并输入正确的OEM key 2,加载离线档案到烧录器,按键启动离线烧录。
3.PW200 PW300 PWX1 支持的操作
烧录器不支持任意RDP等级的切换。
TZEN = 0
注:RDP Level 2 回退 RDP Level 0,需要正确配置 OEM1KEY 与 OEM2KEY,并选择【解锁(去保护、回退)】。
TZEN = 1
注:
- RDP Level 2 回退 RDP Level 0,需要正确配置 OEM1KEY 与 OEM2KEY,并选择【解锁(去保护、回退)】。
- TZEN = 1 并且 RDP level != 0,调试权限受阻,大概率无法正常连接芯片,请尝试从system bootloader启动后再尝试连接,即便连接上,SECBOOTADDR 与 SECWMx 等安全相关的选项字节依旧可能读到错误的值 。
- 将芯片的NRST引脚连接到烧录器的RST引脚。
- 非正常流程使用可能导致未知问题。