Как я могу прошить NXP S32K148 с помощью J-Link?

#cortex-m #nxp-microcontroller #segger-jlink

#cortex-m #nxp-микроконтроллер #сеггер-jlink

Вопрос:

Я работаю над S32K148 с VS Code и J-Link. Это часть серии 32-разрядных микроконтроллеров NXP серии S32Kxxx на базе ARM Cortex M4, предназначенных для высоконадежных автомобильных и промышленных приложений.

Я хочу прошить чип с помощью JFlash (с помощью J-Link), но, похоже, что перепрошивка отключена.

Мои исследования показывают, что мне нужен файл LinkScript для устройства S32Kxxx, но я нигде не могу найти такой файл.

Верно ли мое предположение, что необходим файл LinkScript? Если да, то где я могу найти этот файл?

Комментарии:

1. Перекрестные публикации на форумах NXP

Ответ №1:

Во-первых, вам нужно убедиться, что вывод сброса MCU подключен к выводу сброса J-Link. Если это не будет сделано должным образом, вы не сможете подключиться через J-Link.

Далее следует отметить, что конструкция серии S32Kxxx делает невозможным подключение к сеансу отладки через J-Link «из коробки». Segger wiki содержит более подробное описание:

Внутренняя оперативная память, защищенная ECC

Устройства этой серии обеспечивают внутреннюю оперативную память с защитой ECC. По умолчанию J-Link сбрасывает MCU при подключении и инициализирует содержимое ОЗУ до 0x00. Это делается по следующим причинам:

  • Если окно памяти в отладчике открыто во время сеанса отладки и указывает на неинициализированную область ОЗУ, На следующем шаге и т. Д. Будет выдано немаскируемое прерывание с ошибкой ECC
  • J-Link временно использует некоторые части ОЗУ во время программирования на флэш-памяти, а доступ к неинициализированным областям ОЗУ приведет к появлению немаскируемых прерываний с ошибками ECC

Подключиться к сеансу отладки

По причинам, указанным [выше, в разделе «Внутренняя оперативная память, защищенная ECC»], подключение из коробки невозможно. Это потому, что нет способа отличить подключение от подключения.

Для подключения к устройству можно использовать следующий файл сценария J-Link:

Примечание:
Предполагается, что этот файл сценария используется только в случае подключения, поскольку он пропускает подключение к конкретному устройству.

Итак, ваше исследование верно: чтобы подключиться к устройству, вы должны использовать скрипт J-Link, который можно загрузить здесь из Segger. Содержимое перепечатывается ниже:

 *               (c) SEGGER Microcontroller GmbH amp; 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 ****************************/
 

Комментарии:

1. Спасибо @Cody Gray, я понимаю, что мой вопрос был очень, очень глупым вопросом. Я не могу прошить чип с помощью JFlash только потому, что я выбираю настройки проекта по умолчанию, а проект defaut использует Cortex-M0 в качестве устройства, поэтому JFlash не может прошить S32K (Cortex-M4).