2025 / 03 / 28
RA 系列:ID 代码保护(通过 127位=1 及 126位=0 启用保护的情况)
问题:
在ID 代码保护被启用,且ALeRASE指令被禁用的情况下,如何连接调试器或编程器?
回答:
如何设置 ID 代码
如下所示,在 FSP 配置器的BSP 属性设置中,将“ ID Code Mode ” 设为 “ Locked ”,并将“ ID code (32 Hex Characters) ” 设为 16字节ID代码 。
OSIS 寄存器中的 ID 代码值
为了便于理解 ID 代码值与 OSIS 寄存器之间的关系,下面我们将ID 代码按每 4 个字节为一组用不同的颜色做标记,如:“00112233445566778899AABBCCDDEEFF”。
设置输出到 ra_cfg/fsp_cfg/bsp/bsp_mcu_family_cfg.h 中,如下所示,由于应该是 Bit127=1 和 Bit126=0,因此 FF 变为BF。
/* 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)
|
ID 代码在程序镜像文件(program image file)中生成,如下所示。具体会因OSIS寄存器的地址不同而有差异:
以RA2L1为例:
S3150101001800112233FFFFFFFF44556677FFFFFFFFFC S311010100288899AABBFFFFFFFFCCDDEEBFEC
|
以 RA6M3为例:
S3150100A15000112233445566778899AABBCCDDEEBF40
|
以RA4E2为例:
S3150100A12000112233445566778899AABBCCDDEEBF70
|
e2 studio 中的调试器连接(ID 代码验证)
如下图所示,与 e2 studio 连接时,在Debugger -> Connection Settings -> Connection -> ID Code (Bytes) 中设置ID代码。ID 代码的 Bit127 和 Bit126 应分别为 1 和 0,如 (00112233445566778899AABBCCDDEEBF) 。这里显示的是 J-Link 的情况,也同样适用于 E2 和 E2 Lite。
单击"... "按钮后,会出现如下对话框。也可以在此对话框中设置 ID 代码。
若启动调试连接后 ID 代码验证成功,则调试连接照常进行。如果 ID 代码验证失败,将出现以下对话框。
J-Link 调试器:
E2/E2 Lite 调试器:
e2 studio 中的调试器连接(执行ALeRASE)
如果是 E2 或 E2 Lite,即使将 ID 代码设为ALeRASE ID 代码(FFFFFFFFFFFFFFFFFF45534152654C41) ,擦除整个闪存的进程仍会失败。使用 J-Link 时则无法执行擦除指令。
通过RPF连接(ID 代码验证)
连接RFP时出现验证对话框后,输入ID代码 (BFEEDDCCBBAA99887766554433221100),127位 = 1 和 126位 = 0。如下所示。
创建RFP工程后,按照下图设置ID代码。
通过RPF连接(执行ALeRASE)
连接RFP时出现验证对话框后,即使输入ALeRASE ID 代码(414C6552415345FFFFFFFFFFFFFFFFFF) ,RFP仍会出现验证失败的错误提示。
