NXP MCU 技术论坛
直播中

张鹏

7年用户 1090经验值
私信 关注
[问答]

如何在芯片被JTAG保护后用Ozone调试?

一般使用Jlink连接S32K312是可以的,但是我们已经通过写ADKP key实现了JTAG保护,芯片生命周期从CUST_DEL提前到IN_FIELD,我们想在芯片被JTAG保护后用Ozone调试。

由于 Ozone 使用与 Jlink.exe 类似的机制,我们使用 Jlink.exe 命令行界面进行调试。

我们做的步骤:
1 创建一个名为 S32K312_JTAG_auth.JlinkScript 的文件并将内容放入此文件中:
    void InitTarget()
    {
    }

2 在命令行中调用 Jlink.exe,如:
    jlink.exe -jlinkscriptfile "D:\...\S32K312_JTAG_auth.JlinkScript"

3 使用connect 命令并选择S32K312 作为目标设备进行连接,jlink 打印错误信息如下:

通过 SWD ConfigTargetSettings()连接到目标start
ConfigTargetSettings() end - Took 16us
InitTarget() start
InitTarget() end - Took 3us
Found SW-DP with ID 0x6BA02477
DPIDR: 0x6BA02477
CoreSight SoC-400 或更早的
AP 映射检测被跳过。找到手动配置的 AP 映射。
AP[0]:MEM-AP(IDR:未设置)
AP[1]:APB-AP(IDR:未设置)
AP[2]:MEM-AP(IDR:未设置)
AP[3]:MEM-AP (IDR:未设置)
AP[4]:AHB-AP(IDR:未设置)
AP[5]:AHB-AP(IDR:未设置)
AP[6]:MEM-AP(IDR:未设置)
AP[ 7]:MEM-AP(IDR:未设置)
AP[4]:跳过 ROMBASE 读取。用户
AP[4] 手动设置的 CoreBaseAddr:已跳过。无法读取 CPUID 寄存器
附加到 CPU 失败。在重置下执行连接。
DPIDR:0x6BA02477
CoreSight SoC-400 或更早版本的
AP 映射检测被跳过。找到手动配置的 AP 映射。
AP[0]:MEM-AP(IDR:未设置)
AP[1]:APB-AP(IDR:未设置)
AP[2]:MEM-AP(IDR:未设置)
AP[3]:MEM-AP (IDR:未设置)
AP[4]:AHB-AP(IDR:未设置)
AP[5]:AHB-AP(IDR:未设置)
AP[6]:MEM-AP(IDR:未设置)
AP[ 7]:MEM-AP(IDR:未设置)
AP[4]:跳过 ROMBASE 读取。用户
AP[4] 手动设置的 CoreBaseAddr:已跳过。无法读取 CPUID 寄存器
在 Coresight 设置中找不到核心
ConfigTargetSettings() start
ConfigTargetSettings() end - Took 34us
InitTarget() start
InitTarget() 结束 - 用 9us
找到 ID 为 0x6BA02477
DPIDR 的 SW-DP:0x6BA02477
CoreSight SoC-400 或更早的
AP 映射检测被跳过。找到手动配置的 AP 映射。
AP[0]:MEM-AP(IDR:未设置)
AP[1]:APB-AP(IDR:未设置)
AP[2]:MEM-AP(IDR:未设置)
AP[3]:MEM-AP (IDR:未设置)
AP[4]:AHB-AP(IDR:未设置)
AP[5]:AHB-AP(IDR:未设置)
AP[6]:MEM-AP(IDR:未设置)
AP[ 7]:MEM-AP(IDR:未设置)
AP[4]:跳过 ROMBASE 读取。用户
AP[4] 手动设置的 CoreBaseAddr:已跳过。无法读取 CPUID 寄存器
附加到 CPU 失败。在重置下执行连接。
DPIDR:0x6BA02477
CoreSight SoC-400 或更早版本
AP 地图检测已跳过。找到手动配置的 AP 映射。
AP[0]:MEM-AP(IDR:未设置)
AP[1]:APB-AP(IDR:未设置)
AP[2]:MEM-AP(IDR:未设置)
AP[3]:MEM-AP (IDR:未设置)
AP[4]:AHB-AP(IDR:未设置)
AP[5]:AHB-AP(IDR:未设置)
AP[6]:MEM-AP(IDR:未设置)
AP[ 7]:MEM-AP(IDR:未设置)
AP[4]:跳过 ROMBASE 读取。用户
AP[4] 手动设置的 CoreBaseAddr:已跳过。无法读取 CPUID 寄存器
无法在 Coresight 设置中找到核心
无法连接到目标。

问题描述:好像我用自己的InitTarget()函数替换Jlink定义的函数时,jlink.exe程序无法连接到target。

此外,我们计划在 Jlink 连接并开始调试之前,使用密码验证模式在 InitTarget() 中取消保护 S32K312 设备。

你能弄清楚这是否可以在这个芯片上工作吗?


































更多回帖

发帖
×
20
完善资料,
赚取积分