起因
上篇文章演示了如何集成EB配置生成的MCAL层代码到keil里面,并创建Demo工程,实现开发和编译。
那么下一步就是烧录了……
(注意不要按照我这样操作,真的会锁死芯片)
keil里的PEmicro
我也是这次才了解到,原来keil也集成了PEmicro接口,以前总以为用USB-TTL,或者ST-link,或者JTAG什么的才行。
配置界面如上,主要就是连接的接口和芯片型号一类的。
下载
把这些都配置好之后,点击LOAD
就回弹出下面这个窗口
配置完成,点击连接,就是下载的意思:
然后你就会发现,确实把程序烧录进去了,灯也点亮了。
出现问题
可当你再想进行烧录时,就会发现,MCU再正常工作,但就是显示连接不上。
我分别在keil、S32DS、Simulink中进行了尝试:
keil直接显示没有链接;
S32DS报错如下,retry也不好使
simulink能明显的看到,要烧录的程序被卡在了传输文件里:
到这里我确实慌了。
尝试办法
更新驱动
一开始以为是驱动要更新,就去官网下载了文件,按照指导进行更新
https://www.pemicro.com/opensda/
发现这样也不行,还是老样子,而且设备管理器也显示OpenSDA一直都在,驱动好好的,这时我就意识到是不是芯片被锁了?
解锁芯片
去网上找了,芯片被锁的原因:
基于S32K144的芯片锁死,一般有如下几种可能: 1、时钟配置异常,MCU被倍频以及不配置时钟,都有可能造成芯片保护锁死,我就曾经因为不注意把时钟配置代码注释掉,导致芯片锁死。 2、烧写断电,如果在Debug的时候不小心导致芯片断电,这种情况也有可能导致芯片锁死。 3、修改 0X400-0X40F地址内容。 4、某些操作不规范导致
难道我的时钟配错了??
不过现在现在是如何解锁的问题,解锁办法最简单粗暴的:
- 拔掉板子电源
- 一直按住复位引脚
- 上电
- 通过S32DS下载程序
- 等到再次弹出上面这个界面,松开复位
- 点击retry,再次烧录,成功!
- 解锁成功
电路部分,使用的时S32K144 EVB板,想要通过复位按键直接对MCU接地,要连接一个跳帽23,这一点也很重要!!!
最后
这个问题一弄就是一晚上,中间问了很多人,还联系了在恩智浦工作的大佬,最后能解决真是不容易。
关于为什么通过Keil会造成芯片锁死,大佬说是flash擦除的问题: