#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).