NXP S32K3 Jlink 烧录失败解决办法

一、问题描述

相信不少用户在刚接触 S32K3 系列的时候都会遇到这么一个问题:客户使用 Jlink 烧录器烧录 S32DS 的工程,提示烧录失败。万事开头难,刚刚上手就遇到这样的问题,相信大家都是非常郁闷的——烧录都不行,调试不是更无从谈起。所以我这里将会从几个可能出错的地方分析原因,当然烧录失败的原因可能不止我提到的这些点,但是也希望能起到缩窄问题范围的作用。

二、失败原因分析

相信之前大家对于 NXP S32K1XX 系列一定很熟悉了,并且一定使用过 S32DS 这个开发环境。需要注意的一点是,S32K1XX 系列使用的 S32DS 版本通常来说是 S32DS v2.2。但是 S32K3XX 系列使用的版本则是 S32DS v3.4 或者是 S32DS v3.5,所以在编译以及烧录的时候一定要注意 S32DS 的版本。

开发环境确认无误之后,需要确认 SW32K3_S32DS_3.4.1_D2XXX.zip(S32DS S32K3 的 RTD 基础开发包,包含有 GCC v10.2 等编译工具链)以及 SW32K3_RTD_4.4_1.0.0_DS_updatesite_D2XXX.zip(S32DS S32K3 的 RTD 插件包,包含相关的驱动插件)是否正确安装。

之后,我们需要注意 Jlink 的驱动版本,因为 S32K3XX 系列才上市不久,所以 Segger 以往的版本是没办法兼容的。也就是说旧的版本由于本身无法识别 S32K3XX,烧录编译时会使用它的 S32DS 开发环境自然就会报告错误。此时就需要客户使用较新的 Jlink 驱动,此处我使用的是 Jlink v7.86,该版本下的相关工具都可正常识别 S32K3XX。


用户可前往 www.segger.com 获取相关 Jlink 软件驱动,但是安装完毕只能保证你使用该工具时能够正常连接 S32K3XX 芯片,但是不能保证 S32DS 能够正确识别。所以我们需要建立 JLink v7.86 与 S32DS 之间的连接。原理其实就是将 S32DS 安装路径 S32DS.3.4\Drivers\Segger 或者 S32DS.3.5\Drivers\Segger 下的文件进行更新。具体实现方法我们可以使用 JLink 工具 Jlink DLL Updater。

它可以帮助用户自动更新 S32DS 中的 Jlink 驱动。勾选需要更新的 IDE 版本。然后选择 OK 即可。



S32DS Segger Jlink 驱动跟新之后的内容如下:


目前 Jlink DLL Updater 可能还没法识别 S32DS v3.5 路径,解决办法有很多:① 如果有安装多个版本的 S32DS,那么可以先将 DLL 更新到以往的版本中,然后将其路径中的文件复制到 S32DS.3.5\Drivers\Segger 路径中即可;②用户可以前往 Jlink 的安装路径将对应的 dll 以及 exe 文件复制过去。


接着可以点击 JLinkGDBServer.exe 确认能否正确与 S32K3 设备建立连接。


SWD 接口配置参数如下,目标接口可以根据实际硬件情况做调整:


        
当 JLink 状态栏显示 Connected,即表示连接成功,此时距离成功已经过半。


接下来,我们需要打开对应的 S32DS ,选择要烧录的工程,进入 Debug Configurations,Debugger 中的配置十分重要,它们很大程度的决定了是否能烧录成功。首先先是 J-Link GDB Server Setup Executable 中的路径,说白了就是 S32DS 要从 S32DS.3.x\Drivers\Segger 路径下调用  JLinkGDBServerCL.exe 建立与 S32DS 之间的连接。


所以我们需要确认 ${jlink_path}/${jlink_gdbserver} 这个相对路径中的变量代表的路径是否正确。


最后是 GDB Client Setup Executable 中的路径,..\S32DS.3.5\S32DS\build_tools\gcc_v9.2\gcc-9.2-arm32-eabi\bin\arm-none-eabi-gdb.exe 就是其路径下需要执行的应用程序,这是安装了 SW32K3_S32DS_3.4.1_D2XXX.zip(S32DS S32K3 的 RTD 基础开发包,包含有 GCC v10.2 等编译工具链)之后就会有的一个应用,所以用户一定要确保基础包正确安装(确认工具链路径是否存在该应用)。当然用户一旦确定了绝对路径正确无误,可以通过变量将其设置为相对路径,便于工程后续提供给他人时能够直接使用。

配置完毕之后,点击 Debug,即可进入调试界面。


        

三、总结

总而言之,用户在 Jlink 烧录失败时,可以先检查相关版本(主要是 Jlink 的驱动版本),然后就是要将 Jlink 驱动更新到 S32DS 对应的文件夹中,最后就是在 Debug 配置中,确保烧录目标以及应用程序所在路径正确。最后希望我的这篇博文能够帮助大家更快的上手 S32K3。

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论