起因

上篇文章演示了如何集成EB配置生成的MCAL层代码到keil里面,并创建Demo工程,实现开发和编译。

那么下一步就是烧录了……

(注意不要按照我这样操作,真的会锁死芯片)

keil里的PEmicro

我也是这次才了解到,原来keil也集成了PEmicro接口,以前总以为用USB-TTL,或者ST-link,或者JTAG什么的才行。

配置界面如上,主要就是连接的接口和芯片型号一类的。

下载

把这些都配置好之后,点击LOAD

就回弹出下面这个窗口

配置完成,点击连接,就是下载的意思:

然后你就会发现,确实把程序烧录进去了,灯也点亮了。

出现问题

可当你再想进行烧录时,就会发现,MCU再正常工作,但就是显示连接不上。

我分别在keil、S32DS、Simulink中进行了尝试:

keil直接显示没有链接;

S32DS报错如下,retry也不好使

simulink能明显的看到,要烧录的程序被卡在了传输文件里:

到这里我确实慌了。

尝试办法

更新驱动

一开始以为是驱动要更新,就去官网下载了文件,按照指导进行更新

PEmicro | Experts in Embedded tools for Flash Programming and Development

发现这样也不行,还是老样子,而且设备管理器也显示OpenSDA一直都在,驱动好好的,这时我就意识到是不是芯片被锁了?

解锁芯片

去网上找了,芯片被锁的原因:

基于S32K144的芯片锁死,一般有如下几种可能:

1、时钟配置异常,MCU被倍频以及不配置时钟,都有可能造成芯片保护锁死,我就曾经因为不注意把时钟配置代码注释掉,导致芯片锁死。

2、烧写断电,如果在Debug的时候不小心导致芯片断电,这种情况也有可能导致芯片锁死。

3、修改 0X400-0X40F地址内容。

4、某些操作不规范导致

难道我的时钟配错了??

不过现在现在是如何解锁的问题,解锁办法最简单粗暴的:

  • 拔掉板子电源
  • 一直按住复位引脚
  • 上电
  • 通过S32DS下载程序
  • 等到再次弹出上面这个界面,松开复位

  • 点击retry,再次烧录,成功!
  • 解锁成功

电路部分,使用的时S32K144 EVB板,想要通过复位按键直接对MCU接地,要连接一个跳帽23,这一点也很重要!!!

最后

这个问题一弄就是一晚上,中间问了很多人,还联系了在恩智浦工作的大佬,最后能解决真是不容易。

关于为什么通过Keil会造成芯片锁死,大佬说是flash擦除的问题:

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐