我正在使用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 ****************************/