如何使用J-Link闪存NXP S32K148



我正在使用VS Code和J-Link开发S32K148。这是恩智浦S32Kxxx系列基于32位ARM Cortex M4的MCU的一部分,适用于高可靠性汽车和工业应用。

我想用JFlash(带J-Link(来闪存芯片,但似乎已经禁用了闪烁。

我的研究表明,我需要一个S32Kxxx设备的LinkScript文件,但我在任何地方都找不到这样的文件。

我的假设是否正确,即需要一个LinkScript文件?如果是,我在哪里可以找到此文件?

首先,您需要确保MCU的重置引脚连接到J-Link的重置引脚。如果没有正确完成,您将无法通过J-Link进行连接。

接下来,必须注意的是,S32Kxxx系列的设计使得无法通过开箱即用的J-Link连接到调试会话。Segger维基包含一个更详细的描述:

ECC保护的内部RAM

该设备系列提供ECC保护的内部RAM。默认情况下,J-Link在连接时重置MCU,并将RAM内容初始化为0x00。这样做的原因如下:

  • 如果调试器中的内存窗口在调试会话期间打开,并且指向未初始化的RAM区域,则在下一个步骤等中,将抛出不可屏蔽的ECC错误中断

  • J-Link在闪存编程期间临时使用RAM的某些部分,并且访问未初始化的RAM区域会引发不可屏蔽的ECC错误中断

附加到调试会话

由于上述原因[在"ECC保护的内部RAM"部分],不可能进行开箱即用的连接。这是因为无法区分附着和连接。

要连接到设备,可以使用以下J-Link脚本文件:

  • 文件:NXP_Kinetis_S32_Attach.JLinkScript

注意:
此脚本文件只应在连接的情况下使用,因为它会跳过特定于设备的连接。

因此,您的研究是正确的:为了连接到设备,您必须使用J-Link脚本,该脚本可以从Segger下载。内容转载如下:

*               (c) SEGGER Microcontroller GmbH & Co. KG             *
*                        The Embedded Experts                        *
*                           www.segger.com                           *
**********************************************************************
-------------------------- END-OF-HEADER -----------------------------
File    : NXP_Kinetis_S32_Attach.JLinkScript
Purpose : Script file to skip the device specific connect for the
NXP Kinetis S32 devices, to make an attach possible.
Literature:
[1]  J-Link User Guide
*/
/*********************************************************************
*
*       Constants (similar to defines)
*
**********************************************************************
*/
/*********************************************************************
*
*       Global variables
*
**********************************************************************
*/
/*********************************************************************
*
*       Local functions
*
**********************************************************************
*/
/*********************************************************************
*
*       Global functions
*
**********************************************************************
*/
/*********************************************************************
*
*       InitTarget()
*
*  Function description
*    If present, called right before performing generic connect sequence.
*    Usually used for targets which need a special connect sequence.
*    E.g.: TI devices with ICEPick TAP on them where core TAP needs to be enabled via specific ICEPick sequences first
*
*  Return value
*    >= 0:  O.K.
*     < 0:  Error
*
*  Notes
*    (1) Must not use high-level API functions like JLINK_MEM_ etc.
*    (2) For target interface JTAG, this device has to setup the JTAG chain + JTAG TAP Ids.
*/
int InitTarget(void) {
//
// As this script file is only used for attach purposes, no special handling is required.
// Therefore, we override the default connect handled by the J-Link DLL for this device.
// as it would trigger a reset.
//
return 0;
}
/*************************** end of file ****************************/

相关内容

  • 没有找到相关文章

最新更新