S32K锁死之谜?Failed to download RAMCode? Failed to Read Memory?

1.背景

近期在做一个小产品,是基于S32K144为MCU的板子。在调试过程中发现,虽然采用Jlink可以连接上,但是无法用S32DS的Debug模式进行调试。也就是.elf文件无法下载进入FLASH,而错误提示总是如下:

(1)Failed to download RAMCode

(2)Failed to Read Memory xxx

而且让人崩溃的是焊接了10套板子,有百分之八九十会有这种现象,现象还是一模一样。

首先是怀疑焊接有问题,焊接了N次,也换过N次MCU,最终的结果都是一样的。

xxxxx:真是让人欲哭无泪

2.排除的N种方法

2.1 是否S32DS的Debug模式有问题

网上遍历了各种帖子,也搜寻了各种官方的文档,然而没有任何作用。并不是各位大牛不牛,只能说没有对症下药

 2.2 怀疑复位和晶振问题

             既然焊接确保了,电压也测量了,阻抗也测量了,Debug设置也没问题,那是否是复位和晶振的问题,一查复位,还真是有问题,出现了谜之一样的波形:三角波形状的复位信号。抱着试试看的心里,看各位广大的网友是否也遇到类似的情况,还真找到了一遍很相关的S32K1xx系列MCU应用指南之芯片锁死(lockup)复位原因分析与恢复方法详解 (qq.com)

       刚开始以为看了希望,按照上面的步骤一步步稳扎稳打,通过SWD读取MDM-AP状态寄存器的命令:

(1)SWDWriteDP 2 0x01000000 //SELECT[31:24] = 0x01选择MDM-AP,且设置DPACC寄存器的SELECT[7:4] = 0x0

(2)SWDReadAP 0   //通过AP index(A[3:2]=0b00)读取MDM-AP状态寄存器

(3)SWDReadAP 0   //dump out真实的AP寄存器值

然后出现了如下界面:

        根据读取的指令确定FLASH已经初始化成功,就开始给FLASH解锁,解锁指令就是unlock Kinetis,出现了比较友好的结果:unlock device ok

         以为看到了未来,开始又尝试用S32DS的debug模式下载程序,然后问题依旧!!!!!!!令人很抓狂的。

        是不是复位的RC值不对,换了几组RC后,问题依旧存在。

进一步抓狂!!!!!!!!!!!!!!!

 2.3 FLASH Lock?

   在尝试了N次 unlock Kinetis后,也没有成效,又研究了这个帖子S32K1xx系列MCU应用指南之芯片锁死(lockup)复位原因分析与恢复方法详解 (qq.com)

    是不是没有mass  erase的原因,但是直接输入mass erase没有任何反应,Jlink Command根本不识别,后参考Jlink command的Help ,发现Erase指令,如下图:

   直接输入Erase,果真能Erase,然后S32DS Debug还是不行。愤慨了,再Erase下,结果再也连不上Jlink了,MCU变成砖了。愤慨没用,继续搬砖

 令人跟崩溃的,换了MCU,采用Jlink的UI界面手动擦除,结果MCU又变成砖了。又一次躺倒在希望的道路上

 3.N中死法后的重生

既然已经死了N次,再来一次,换了颗MCU后,尝试了下Jliink UI界面的如下指令,如下图所示

        既然出现了奇迹,如下图所示,擦写、下载、验证都是OK的,重新上电,跑马灯起来了,整个世界都亮了。

4.重生后的回味

        重生后的喜悦是必然的,但是到底是什么原因了,原来官方的手册写的很明白,当FLASH Memory的安全机制是激活的时候,仿真器是可以连上,但是没法读取Flash Memory的内容的,就出现了Debug模式下的:Failed to Read Memory xxx。

        那需要怎么解除安装机制呢,官方手册也说了,就是trigger a mass erase。 

       那上文尝试的几次Erase怎么还变砖了,那就是擦除的方式不对,导致mass erase disable,这样无法连接上仿真器,这个时候的方法是采用后门钥匙,但这是天方夜谭,除非你找到原厂支持。

      因此,不要随便擦除,还是按照Jlink自带的Production Programming就行擦除下载。

5.tips

当使用Jlink  UI执行Production Programming没有证书,可以私信。

  • 7
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值