在使用 S32K1xx MCU 的过程中,因为某些不当操作导致芯片被锁、加密的情况偶有发生,在此总结一篇如何解锁芯片的文档,希望能够帮到有需要的人。
1. S32K 芯片被锁的现象及原因分析
1)在S32K 系列 MCU 开发和生产过程中,可能会出现芯片被锁的情况,具体表现为:
通过 J-Link Commander 我们可以读到芯片的 ID,但是无法通过 JTAG/SWD 调试接口进行Debug
使用 J-Link 调试或下载程序时会提示“Failed to RAMCode”
使用 PEMicro debugger(OpenSDA/U-Multilink) 和 Flash Programmer(U-Cyclone) 时会提示如下错误,调试无法建立与目标MCU的连接:
MCU 周期性复位,RESET(PTA5)引脚有周期性的复位脉冲信号输出。复位信号周期大概为 117us,高电平时间为 600~800ns。通过示波器观察 RESET 波形如下图所示。
注:高电平时间为 600~800ns 的方波信号是去掉RESET引脚的外部滤波电容时的测量结果,若外部连接有滤波电容,将影响RESET引脚输出的波形,变成缓慢下降和上升的锯齿波信号。
2)芯片被锁可能的原因:
时钟配置异常,MCU没有配置时钟、时钟被倍频等。
烧写程序时断电。
MCU 外部电路异常(比如 I/O 引脚电平超出工作电压允许的范围、I/O 外部电路先于 MCU VDD 上电等)导致 MCU 复位失败,Flash 初始化异常。
修改了 0X400-0X40F地址内容,如果是这个原因,在 J-Link Commander 工具中输入命令“connect”后,会提示“Protection bytes in flash at addr. 0x400 – 0x40F indicate that readout protection is set.”
2. 使用 Multilink 解锁
1)通过 mass erase 解密:
连接 PEMicro debugger,如下图打开“Debug Configuration”-> 选中要烧录的程序 -> “Debugger”-> 勾选“Emergency Kinetis Device Recovery by Full Chip Erase”,之后烧录程序即可解密 MCU。
2)如果 PEMicro 版本较新,则无需勾选上述选项,如下图所示,在 Debug 页面会自动弹出芯片已被锁提示窗口,选择“Yes”即可解密芯片。
3. 使用 J-Link 解锁
1)使用 J-Link Commander 的“unlock Kinetis” 命令解锁:
断电后将复位引脚拉低到地(或按下复位按键)再上电,连接 J-Link 到板子。打开 J-Link Commander(J-Link 自带) 输入“unlock Kinetis”,即可执行 mass erase 解密。
2)通过 J-Flash 擦除解锁:
打开 J-Flash(J-Link 自带)选择创建新的工程,之后点击 Start J-Flash:
在创建选项卡里选择芯片,点开后在子选项卡的 Manufacturer 选择芯片厂商,再选择对应型号(例如 NXP S32K116),下载方式等,配置完成后点击 “OK”。
注:在开发阶段,使用 J-Link 作为S32K1xx编程和调试器时,使用不带“ALLOW SECURITY”的Flash算法,从而防止芯片被意外加密。
确保 J-Link 与板子已连接后,点击“Target”-> “Connect”,如果 J-Flash 页面左下角显示连接成功。点击“Target”-> “Erase chip”进行擦除操作。完成上述操作后再次尝试烧录程序。
如果上面的方法无效,可以将复位引脚拉低,连接后再点击“Target”->“Erase chip”。
4. Tips
1)扩展坞、HUB 等转接器也会影响烧录,如果上述方法都无法解锁,请更换转接口,将下载器重新上电,多尝试几次。比如我就遇到过,Multilink 直连电脑和板子时无法解锁,但是通过 USB 2.0 的 Hub 连接电脑就能够成功解锁的情况,原因暂时不明。
2)安装 J-Link 软件包时,除了会自动安装最新的 Flash 算法外,还会安装一些有用的上位机软件,比如 J-Flash,J-Link Commander 等,并会将最新的驱动和 Flash 算法更新到 PC 上已经安装的支持 J-Link 的 MCU 应用程序开发 IDE,比如 S32DS、Keil MDK 和 IAR 等。
以上就是 S32K 芯片的解锁方法,如果还有其他解锁方式的话欢迎大家指出。如果有任何问题或疑虑,都可以在文章下方留言哦!
全部0条评论
快来发表一下你的评论吧 !