2026 / 07 / 22
RA 系列:ID 代码保护(通过 127 位=0 启用保护的情况)
Question:
在ID 代码保护被启用,且ALeRASE指令被禁用的情况下,如何连接调试器或编程器?
Answer:
注意:如果MCU受此方式保护,不会检查ID代码,也就是说ID代码始终不匹配,设备无法连接到调试器或者串行编程器,但是可以使用ALeRASE指令擦除用户闪存区域的内容。
如何设置 ID 代码
FSP 配置器中不支持该设置。如下图所示,在 C 预处理器设置中添加 BSP_ID_CODE_PERMANENTLY_LOCKED 定义后方可启用。
OSIS 寄存器中的 ID 代码值
为了便于理解 ID 代码值与 OSIS 寄存器之间的关系,下面我们将ID 代码按每 4 个字节为一组用不同的颜色做标记,如:“00112233445566778899AABBCCDDEEFF”。
如下所示,设置会输出到 ra_cfg/fsp_cfg/bsp/bsp_mcu_family_cfg.h 中,且ID代码被设置为了全00h。
|
/*
ID Code
Note: To permanently lock and disable the debug interface define the BSP_ID_CODE_PERMANENTLY_LOCKED in the compiler settings.
WARNING: This will disable debug access to the part and cannot be reversed by a debug probe.
*/
#if defined(BSP_ID_CODE_PERMANENTLY_LOCKED)
#define BSP_CFG_ID_CODE_LONG_1 (0x00000000)
#define BSP_CFG_ID_CODE_LONG_2 (0x00000000)
#define BSP_CFG_ID_CODE_LONG_3 (0x00000000)
#define BSP_CFG_ID_CODE_LONG_4 (0x00000000)
#else
/* ID CODE: 00112233445566778899AABBCCDDEEBF */
#define BSP_CFG_ID_CODE_LONG_1 (0x33221100)
#define BSP_CFG_ID_CODE_LONG_2 (0x77665544)
#define BSP_CFG_ID_CODE_LONG_3 (0xBBAA9988)
#define BSP_CFG_ID_CODE_LONG_4 (0xBFEEDDCC)
#endif
|
ID 代码在程序镜像文件(program image file)中生成,如下所示。具体会因OSIS寄存器的地址不同而有差异:
以RA2L1为例:
|
S3150101001800000000FFFFFFFF00000000FFFFFFFFD8
S3110101002800000000FFFFFFFF00000000C8
|
以 RA6M3为例:
|
S3150100A15000000000000000000000000000000000F8
|
以RA4E2为例:
|
S3150100A1200000000000000000000000000000000028
|
e2 studio 中的调试器连接(ID 代码验证)
由于 ID 代码验证始终不匹配,因此会跳出验证错误对话框,如下图所示。
J-Link调试器:
E2/E2 Lite 调试器:
e2 studio 中的调试器连接(执行ALeRASE)
如果是 E2 或 E2 Lite,即使将 ID 代码设为ALeRASE ID 代码(FFFFFFFFFFFFFFFFFF45534152654C41) ,也不会执行擦除。如下图所示,对话框会显示擦除闪存进程失败。使用 J-Link 时无法执行擦除指令。
在此模式(*1)下可用ALeRASE的MCU产品上,可通过将 ID 代码设置为ALeRASE ID 代码(FFFFFFFFFFFFFFFFFF45534152654C41) 来擦除整个内部闪存 ROM。如果设置了要加载的程序镜像,则将在执行 ALeRASE 之后加载镜像。
*1: "RA2A1 Group, RA2L1 Group, RA2E1 Group, RA4M1 Group, RA4W1 Group, RA6M1 Group, RA6M2 Group, RA6M3 Group, RA6T1 Group, Note on ALeRASE command” (TN-RA*-A0014A/E)
通过RFP连接(ID 代码验证)
由于 ID 代码验证总是不匹配,因此会跳出验证错误对话框,如下图所示。
通过RFP连接(执行ALeRASE)
输入ALeRASE ID 代码(414C6552415345FFFFFFFFFFFFFFFFFF) ,可以成功执行ALeRASE,如下所示。