[SOLVED] IMXRT1170 Rev B Support

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • [SOLVED] IMXRT1170 Rev B Support

    Hello, we are encountering a bit of a problem with a JLINK probe / JLINK commander on a custom board which uses the IMXRT1170 Rev B processor. JLINK only has device IMXRT1170 Rev "A" as a supported device, for which most of the functionality works. However, there is one important difference regarding how the chip boots up initially. NXP actually has a pretty good explanation of the issue in the header of the reset script they use for their probes:

    1 REM ======================================
    2 REM Copyright 2020-2023 NXP
    3 REM All rights reserved.
    4 REM SPDX-License-Identifier: BSD-3-Clause
    5 REM ======================================
    100 REM IMXRT1170 Reset script
    110 REM When RT1170 Rev B is reset via SYSRESET_REQ under debugger control, bootROM will
    120 REM not boot an existent flash application, instead it will enter a debug loop at a
    130 REM fixed PC address (0x00223104). The debugger then needs to initialise the execution
    140 REM context in order to jump to the user application.
    150 REM RT1170 Rev A does not present this functionality, so it is allowed to continue
    160 REM the booting process without any other intervention post reset.

    Right now, we must program our board once using the LPC-Link probe and NXP software, and then we can successfully program it forever using the JLINK. If we don't do the initial progamming with the LPC-Link probe, we get the characteristic debug PC address of 0x00223104 and code does not execute. The JLINK is not initializing the execution context correctly for the Rev B IMXRT1170.

    I have two questions 1) when does SEGGER plan to support rev B of the IMX RT1170? and 2) Does anyone have a workaround we can use in the meantime to initalize the execution context correctly the first time we program? Thank you.
  • I figured it out, and thought I would share in case someone else needs the information. Turns out the IMX RT family needs a separate flashloader program that lives on-chip to correctly program external flash. MCUXpresso uses their internal flashloader which is why we needed to use their tool to boot first. But, it turns out an NXP engineer also wrote a flashloader for the IMX RT family to work with JLink:

    github.com/JayHeng/RT-UFL/blob/master/README-en.md

    Instructions on how to use it are here (note that this is for the RT600 but the basic steps are identical):
    https://community.nxp.com/t5/i-MX-RT-Knowledge-Base/RT600-MCUXpresso-JLINK-debug-QSPI-flash/ta-p/134...

    Only unfortunate thing is this flashloader hasn't been updated for a while, and I had to revert to JLINK version 7.60d in order to get it to work.