SWO trace with Jtrace + Keil

Hi all,

         I am trying to get SWO trace working in Keil.

Board: MIMXRT1010-EVK

Debugger: Jtrace Pro

Connection : SWD  (Not using ETM Trace since board does not have provision)

I was able to get it running with MCUXpresso. I could see sensible data in SWO Trace profile window as below.

The MCU IMX RT 1010 uses different clocks for core and trace. I could set it appropriately in the SWO configuration window in MCUXpresso as shown below.

I tried the same steps in Keil & I run into following problems.

1. The SWO clock and core clock are linked. Only integer divisions are allowed. This is the case when JTrace Pro is selected as the debugger.  

I see that the clocks can be decoupled when debugger is selected as Ulink Pro

2. I cannot see any status of trace in Keil status window. None of the analysis windows get any data.

I have configured the GPIO and clocks in Keil example the same way as I had done in MCUXpresso example.

My questions are.

  1. Is there a feature in Keil that matches SWO profile in MCUXpresso ?
  2. Does performance analyser match or exceed MCUXpresso's SWO profile feature?
  3. Will minor mismatch in SWO clock make trace non functional in Keil
  4. Can the SWO clock be decoupled from core clock when Segger JTRACE is used ? 
  5. Can the analysis windows in Keil work with Segger Jtrace ?
  6. Is it 4 wire ETB mandatory for Analysis>Performance Analyzer to work?

I am inclined to Keil MDK  because of the middle ware, professional support & the stability of compiler and debugger. I need to convince my management to move from a 'free' IDE (MCUXpresso in my case) to a paid one. Trace is a feature that MCUXpresso impresses us with. How can i find that in Keil :-) ?

Keil Installation details:

IDE-Version:
µVision V5.40.0.0
Copyright (C) 2024 ARM Ltd and ARM Germany GmbH. All rights reserved.

License Information:
Syam Krishnan
Cradlewise
User-based license: Keil MDK Community (non-commercial free of charge)
Valid until: Jun 1 2033. Cached until: Jul 17 2024


Tool Version Numbers:
Toolchain: Keil MDK Community (non-commercial free of charge Version: 5.40.0.3
Toolchain Path: C:\Users\syam\AppData\Local\Keil_v5\ARM\ARMCLANG\Bin
C Compiler: ArmClang.exe V6.22
Assembler: Armasm.exe V6.22
Linker/Locator: ArmLink.exe V6.22
Library Manager: ArmAr.exe V6.22
Hex Converter: FromElf.exe V6.22
CPU DLL: SARMCM3.DLL V5.40.0.3
Dialog DLL: TCM.DLL V1.56.4.0
Target DLL: Segger\JL2CM3.dll V2.99.44.0
Dialog DLL: TCM.DLL V1.56.4.0

Thanks in Advance

Syam Krishnan

  • IMX RT Processors use a different trace clock than core clock. The clock is derived from a separate PLL. and dividers. The system apparently does not allow me to change it to a integer ratio of core clock.

    My CPU core is 500MHz and trace clock (set in code by dividers) is 33MHz.