跳到主要内容
版本:Next

3.4.1.3:STM32U5 OEMKEY安全设置

1.概述

文档目的

说明 PW200、PW300、PWX1,是如何处理STM32U59x OEMKEY 的写入与RDP回退。

1.1官方文档信息摘要

  1. OEM1KEY 与 OEM2KEY 不能设置为全0

  2. 写入0xFFFFFFFF清除OEMxLOCK

    • OEM1LOCK 在RDP level 0 时可以清除
    • OEM2LOCK 在RDP level 0或RDP level 0.5 时可以清除
  3. 当OEM1LOCK = 0时,无条件允许RDP level 1回退RDP level 0

  4. 当OEM2LOCK = 0时:

    1. 无条件允许RDP level 1回退RDP level 0.5
    2. 永久禁止RDP level 2回退RDP level 1

1.2OEM1 RDP lock mechanism

  1. 什么情况可以修改OEM1KEY
    • RDP level 0
    • RDP level 0.5 或 RDP level 1,并且OEM1LOCK = 0
  2. 什么时候使用OEM1KEY
    • RDP level 1 回退 RDP level 0时,OEM1LOCK = 1

1.3OEM2 RDP lock mechanism

  1. 什么情况可以修改OEM2KEY
    • RDP level 0 或 RDP level 0.5
    • RDP level 1,并且OEM2LOCK = 0
  2. 什么时候使用OEM2KEY
    • RDP level 1 回退 RDP 0.5时,OEM2KEY = 1
    • 授权RDP level 2 回退 RDP 1

1.4特殊选项字节修改规则(部分)

  1. TZEN

    • 只能在RDP level 0设置
    • 只能在RDP level 1回退RDP level 0时清除
  2. UNLOCK

    • 只能在RDP level 1回退RDP level 0时设置为1(实际测试解锁后可以直接修改?)

2.烧录处理机制说明

当在PowerWriter设备上,选择STM32U5,将可以看到如下的设备界面:

image-20260415154025342

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

    image-20251208110521816

    注:RDP Level 2 回退 RDP Level 0,需要正确配置 OEM1KEY 与 OEM2KEY,并选择【解锁(去保护、回退)】。

  • TZEN = 1

    image-20251208174100361

    注:

    1. RDP Level 2 回退 RDP Level 0,需要正确配置 OEM1KEY 与 OEM2KEY,并选择【解锁(去保护、回退)】。
    2. TZEN = 1 并且 RDP level != 0,调试权限受阻,大概率无法正常连接芯片,请尝试从system bootloader启动后再尝试连接,即便连接上,SECBOOTADDR 与 SECWMx 等安全相关的选项字节依旧可能读到错误的值 。
警告
  • 将芯片的NRST引脚连接到烧录器的RST引脚。
  • 非正常流程使用可能导致未知问题。