JTAG

This guide will show you how to use the JTAG interface on the phyCORE-i.MX8X development kit.

../_images/pcm-065_jtag.png

Requirement

Note

You can find more documentation about the J-link software here: https://wiki.segger.com/J-Link_Commander

Hardware Setup

  • Power off the development kit.

  • Connect your JTAG Debugger to X58 making sure the red line on the ribbon cable aligns with pin 1 on the header.

    ../_images/pcm-065_jtag-connector.png
  • Power on the development kit and boot into Linux

Device Connection Setup

  • Open the J-link software and make sure your debugger is recognized.

    J-Link Commander Console (Host)
    SEGGER J-Link Commander V6.98a (Compiled Mar  5 2021 17:02:18)
    DLL version V6.98a, compiled Mar  5 2021 17:01:02
    
    Connecting to J-Link via USB...O.K.
    Firmware: J-Link V11 compiled Jul 17 2020 16:24:07
    Hardware version: V11.00
    S/N: 51009799
    License(s): GDB
    VTref=0.000V
    
    
    Type "connect" to establish a target connection, '?' for help
    J-Link>
    
  • Initiate the connection sequence.

    J-Link Commander Console (Host)
    connect
    Please specify device / core. <Default>: MK64FN1M0XXX12
    Type '?' for selection dialog
    Device>MK64FN1M0XXX12
    Please specify target interface:
    J) JTAG (Default)
    S) SWD
    T) cJTAG
    TIF>J
    
Expected Output (Host)
Please specify device / core. <Default>: MK64FN1M0XXX12
Type '?' for selection dialog
Device>
  • Specify the device you are connecting to (MK64FN1M0XXX12)

    J-Link Commander Console (Host)
    MK64FN1M0XXX12
    
    Expected Output (Host)
    Please specify target interface:
    J) JTAG (Default)
    S) SWD
    T) cJTAG
    TIF>
    
  • Choose the target interface

    J-Link Commander Console (Host)
    J
    
    Expected Output (Host)
    Device position in JTAG chain (IRPre,DRPre) <Default>: -1,-1 => Auto-detect
    JTAGConf>
    
  • Use the default “Device position” from above by hitting “Enter” to move to the next step.

    Expected Output (Host)
    Specify target interface speed [kHz]. <Default>: 4000 kHz
    Speed>
    
  • Type in a device speed and hit “Enter”.

    J-Link Commander Console (Host)
    4000
    
    Expected Output (Host)
    Device "MK64FN1M0XXX12" selected.
    
    
    Connecting to target via JTAG
    InitTarget()
    Timeout while halting CPU.
    TotalIRLen = 4, IRPrint = 0x01
    JTAG chain detection found 1 devices:
    #0 Id: 0x2890201D, IRLen: 04, JTAG-DP
    DPv0 detected
    Scanning AP map to find all available APs
    AP[7]: Stopped AP scan as end of AP map has been reached
    AP[0]: AXI-AP (IDR: 0x44770004)
    AP[1]: AHB-AP (IDR: 0x24770011)
    AP[2]: AHB-AP (IDR: 0x24770011)
    AP[3]: AHB-AP (IDR: 0x84770001)
    AP[4]: APB-AP (IDR: 0x54770002)
    AP[5]: AHB-AP (IDR: 0x84770001)
    AP[6]: AHB-AP (IDR: 0x84770001)
    Iterating through AP map to find AHB-AP to use
    AP[0]: Skipped. Not an AHB-AP
    AP[1]: Core found
    AP[1]: AHB-AP ROM base: 0xE00FF000
    CPUID register: 0x410FC241. Implementer code: 0x41 (ARM)
    Found Cortex-M4 r0p1, Little endian.
    FPUnit: 6 code (BP) slots and 2 literal slots
    CoreSight components:
    ROMTbl[0] @ E00FF000
    ROMTbl[0][0]: E000E000, CID: B105E00D, PID: 000BB00C SCS-M7
    ROMTbl[0][1]: E0001000, CID: B105E00D, PID: 003BB002 DWT
    ROMTbl[0][2]: E0002000, CID: B105E00D, PID: 002BB003 FPB
    ROMTbl[0][3]: E0000000, CID: B105E00D, PID: 003BB001 ITM
    ROMTbl[0][5]: E0041000, CID: B105900D, PID: 000BB925 ETM
    ROMTbl[0][7]: E0043000, CID: B105900D, PID: 001BB908 CSTF
    Cortex-M4 identified.
    J-Link>
    

Connection Test

  • Type in “h” and hit “Enter” to halt the CPU core.

    J-Link Commander Console (Host)
    h
    
    Expected Output (Host)
     PC = 1FFEBE76, CycleCnt = 00916A51
     R0 = 00000000, R1 = 000C0000, R2 = 00300000, R3 = 00180000
     R4 = 2001F76F, R5 = 41220000, R6 = 00C000C0, R7 = 2001F76F
     R8 = 2001F770, R9 = 0000051A, R10= 00008C01, R11= 001FC231
     R12= 20009419
     SP(R13)= 2001F730, MSP= 2001F730, PSP= 00000000, R14(LR) = 1FFEBE07
     XPSR = 61000000: APSR = nZCvq, EPSR = 01000000, IPSR = 000 (NoException)
     CFBP = 04000000, CONTROL = 04, FAULTMASK = 00, BASEPRI = 00, PRIMASK = 00
    
     FPS0 = 00000000, FPS1 = 00000000, FPS2 = 00000000, FPS3 = 00000000
     FPS4 = 00000000, FPS5 = 00000000, FPS6 = 00000000, FPS7 = 00000000
     FPS8 = 00000000, FPS9 = 00000000, FPS10= 00000000, FPS11= 00000000
     FPS12= 00000000, FPS13= 00000000, FPS14= 5C0100C4, FPS15= 00000004
     FPS16= 00000000, FPS17= 00000000, FPS18= 00000000, FPS19= 00000000
     FPS20= 00000000, FPS21= 00000000, FPS22= 00000000, FPS23= 00000000
     FPS24= 00000000, FPS25= 00000000, FPS26= 00000000, FPS27= 00000000
     FPS28= 00000000, FPS29= 00000000, FPS30= 00000000, FPS31= 00000000
     FPSCR= 00000000
     J-Link>
    
  • Type in “g” and hit “Enter” to start the CPU core. No output expected.

    J-Link Commander Console (Host)
    g
    
  • Type in “mem 0,0” and hit “Enter” to test memory read functionality. No output expected.

    J-Link Commander Console (Host)
    mem 0,0
    
  • Type in “mem 0,1” and hit “Enter” to test memory read functionality.

    J-Link Commander Console (Host)
    mem 0,1
    
    Expected Output (Host)
    00000000 = 00
    
  • Type in “mem 0,10” and hit “Enter” to test memory read functionality.

    J-Link Commander Console (Host)
    mem 0,10
    
    Expected Output (Host)
    00000000 = 00 FC 01 20 D1 06 00 00  7D 06 00 00 7D 06 00 00  ... ....}...}...
    

Exit the Software

J-Link Commander Console (Host)
exit