查看: 5873|回复: 4

[原创] LPC546xx:禁用 SWD后,如何重新启用

[复制链接]

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24932
最后登录
2025-7-23
发表于 2022-6-29 10:23:00 | 显示全部楼层 |阅读模式
本帖最后由 小恩GG 于 2022-7-14 16:10 编辑

LPC546xx禁用 SWD后,如何重新启用

1.问题描述
    LPC546xx系列的ECRP(Enhanced Code Read Protection)用于配置用户程序的不同安全级别,在启动镜像文件偏移量为 0x20处配置,和OTP结合使用。LPC546xx 的用户可以通过配置 ECRP 值来禁用SWD、ISP。 有些用户在禁用SWD后,又需要恢复,可以使用J-link commander 中“unlock LPC5460x”命令。
    例如:
1.jpg

    但对于一些芯片,这个方法仍然无法恢复SWD。本文给出了基于LPC-LINK2 恢复SWD的方法。当用“unlock LPC546xx”命令无效时,可以尝试使用本文中方法。
2.理论分析及解决方法
    客户实例:LPC54605, 配置ECRP为0x00015800禁掉SWD后,需要恢复。
    当ECRP 值为 0x00015800时,通过数据手册我们由高位向低位分析。
16-28bit.jpg

    ECRP中31:18位保留,17:16位配置是否使能SWD。在本例中17:16=01,意味着SWD被禁用。
14-15.jpg
    15:14 =01,不允许通过 IAP 调用进入 ISP
12-13.jpg
    13:12 = 01,不允许通过引脚进入 ISP
10-11.jpg
    11:10 = 10, IAP 扇区擦除/写保护被禁用,所以忽略 SECTORE PROTECT (5:0)。
0-5.jpg

    此时,SWD功能被禁用。在OTP字段处于默认值的前提下,若想恢复,需要使用在ISP模式和Debug Mailbox中的批量擦除命令(mass erase)。如果已经配置过OTP,且设置bit 4 为1,即禁掉了masserase功能,则无论如何也无法恢复SWD了。
OTP.jpg
    当启用批量擦除时,Debug Mailbox也被启用并允许调试器与引导加载程序通信以执行批量擦除。
    因此,可以使用 Debug Mailbox 来执行 Mass Erase操作,恢复ECRP设置,即恢复SWD。
3.操作步骤
    IDE:MCUXpressoIDE_11.4.0_6237或其它版本
    IDE安装路径:C:\nxp\MCUXpressoIDE_11.4.0_6237
    工具脚本:LPC546xxMassErase.scp
    工具脚本路径:C:\nxp\MCUXpressoIDE_11.4.0_6237\ide\binaries\Scripts
    在操作中,其他版本的 MCUXpressoIDE及其他安装路径操作相同。
    1)      将LPC546xxMassErase.scp脚本放至上述路径中。
    2)      打开命令提示符窗口。
    3)      将路径更改为C:\nxp\MCUXpressoIDE_11.4.0_6237\ide\binaries。
cmd.jpg
    4)      执行redlinkserv -commandline的命令。
    5)      执行redlinkserv -commandline 命令后,应该会看到redlink> 提示符。

cmd2.jpg
    6)      执行加载命令“C:\nxp\MCUXpressoIDE_11.4.0_6237\ide\binaries\Scripts\LPC546xxMassErase.scp”。
    7)      执行加载命令后,您应该看到正在加载“LPC546xxMassErase.scp”。
    8)      执行运行命令。
    9)      执行运行命令后,您应该会看到以下消息。
cmd3.jpg
    此时,SWD接口可以正常调试使用。
4.ECRP返回值补充
    在LPC546xx用户手册中,我们可以看到ISP-AP 命令,其中一个功能是可以读取ECRP的设置等级,也就是可以查看此芯片ECRP的配置情况。
ISP-AP.jpg
    通过本文第3部分运行脚本后返回信息也可以看到ECRP返回值,只是此处名字为CRP:
CRP.jpg
    但是在用户手册中并没有它的解释,我们从用户定义的 ECRP 级别和 ROM 代码使用的 ECRP 定义中找到了相关资料,使用此功能的用户可以作为参考:
    #defineCRP_JTAG_EN_BIT         (1 << 6)
    #define CRP_MASS_ERASE_DIS_BIT (1 << 7)
    #defineCRP_IAP_PROT_EN_BIT     (1 << 8)
    #defineCRP_ISP_PINS_EN_BIT     (1 << 9)
    #define CRP_ISP_IAP_EN_BIT      (1 << 10)
    #defineCRP_DBG_MBOX_EN_BIT     (1 << 11)
    #defineCRP_COUNT_MASK          0x3F
    #define CRP_DEFAULT_FEATURES   0xFFFFFFFF
    #defineCRP_MASS_ERASE_ONLY     (CRP_SECT_ERASE_DIS_BIT)
例如:
    CRP_JTAG_EN_BIT:           1启用 JTAG/SWD,0表示禁用。对应ECRP值位17和16。
    CRP_IAP_PROT_EN_BIT:    1启用IAP保护,0表示禁用。对应ECRP值位14~15。
    CRP_ISP_PINS_EN_BIT:      1启用 ISP引脚,0表示禁用。对应ECRP值位12~13。
    CRP_ISP_IAP_EN_BIT:        1启用 IAP 模式的 ISP,0表示禁用。对应ECRP值位14~15。
    CRP_MASS_ERASE_DIS_BIT:0允许整体擦除,1不允许。对应ECRP值位0~5、位10~11、位14~15的组合。
    CRP_DBG_MBOX_EN_BIT: 1启用ISP-AP 或Debug Mailbox,0表示禁用。它对应一些保留的 ECRP 位和 OTP 设置的组合。

    注意,ROM 使用的所有这些 ECRP 值不仅会查看用户定义的 ECRP 值,还会检查 OTP 设置。当调用“Query ECRP Level”时,它返回ROM代码使用的值,而不是用户在镜像文件中编程的ECRP值。

小结:
    在LPC546xx系列产品中,即使 SWD 被禁用,调试器也可以通过Debug mailbox与 LPC5460x 通信。 只要OTP没有禁掉Mass Erase功能,则调试器可以请求 LPC5460x 通过Debug Mailbox执行mass erase以恢复SWD功能。
    此外,文章还补充了关于使用ISP-AP命令返回值的具体含义。








LPC546xxMassErase.zip

1.09 KB, 下载次数: 34, 下载积分: 威望 1

回复

使用道具 举报

  • TA的每日心情

    2025-5-29 09:38
  • 签到天数: 632 天

    连续签到: 1 天

    [LV.9]以坛为家II

    94

    主题

    1639

    帖子

    2

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    4470

    热心会员

    最后登录
    2025-6-10
    发表于 2022-6-29 12:12:08 | 显示全部楼层
    很有作用,谢谢分享~
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-6-10 23:03
  • 签到天数: 1502 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    97

    主题

    4688

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    10080
    最后登录
    2025-7-2
    发表于 2022-6-29 14:44:21 | 显示全部楼层
    当年就曾经办过使用jtag引脚的事。
    最后,也是通过ISP的方式恢复的
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    前天 08:50
  • 签到天数: 711 天

    连续签到: 1 天

    [LV.9]以坛为家II

    14

    主题

    2307

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    4423
    最后登录
    2025-7-25
    发表于 2022-7-1 08:19:22 | 显示全部楼层
    谢谢分享
    哎...今天够累的,签到来了~
    回复

    使用道具 举报

    该用户从未签到

    26

    主题

    97

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    386
    最后登录
    2023-9-12
    发表于 2023-3-4 16:55:21 | 显示全部楼层
    谢谢分享 , 牛x
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-25 10:00 , Processed in 0.093708 second(s), 24 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表