
Tracealyzer - Uploading the trace data
-----------------------------------------
Percepio AB, Jan. 23, 2014

This document decribes how to upload the trace data from the target system to
Tracealyzer. 

Tracealyzer uses your existing debugger to upload the trace data from the 
chip RAM. This is a plain RAM dump, that is done whenever you want to look at 
the trace buffer contents. This means it works with essentially with any debug 
probe on the market.

Built-in support for Segger J-Link/J-Trace and Atmel SAM-ICE
------------------------------------------------------------
Tracealyzer v2.3 supports Segger J-Link and J-Link compatible debuggers 
directly, without any debugger IDE involved. Using other debug probes is 
also possible, but requires some extra steps, described below.

If you have a Segger J-Link/J-Trace debug probe or another J-Link compatible 
debug probe, just select "Read Trace" in the "J-Link" menu. Note that this 
menu is only available if a compatible debug probe is found.

This opens a dialog where you get to enter the memory region where
the recorder data structure is located. Normally you select the entire 
internal RAM according to the datasheet of your MCU, but the exact address
can be found can by inspecting the "RecorderData" struct or the 
"RecorderDataPtr" pointer with your debugger.

J-Link compatible debug probes also include Atmel SAM-ICE and many built-in 
debug interfaces on demonstration/evaluation boards (where there is a USB 
connection directly to the board). Look for a Segger J-Link label on the board.

MemoryLogger extension in Atmel Studio 6
----------------------------------------
Atmel's MemoryLogger extension provides a superb integration with FreeRTOS+Trace. 
Look for "MemoryLogger" in Atmel Gallery, available in Atmel Studio and at the 
Atmel website (http://gallery.atmel.com).

This extension automatically detects the path to FreeRTOS+Trace, if 
installed, and gives you a single-click upload/refresh. You can use it 
while debugging and optionally get an automatic refresh eash time the 
MCU is halted, e.g., on each breakpoint.

Using other development environments and debug probes
-----------------------------------------------------
Most debuggers are able to save the RAM contents to a file. Tracealyzer 
supports the following common formats:
- Binary (.bin), supporting gdb, J-Link and Renesas HEW.
- Intel Hex (.hex), supporting IAR Embedded Workbench and Atmel Studio (atprogram.exe)
- MCH (.mch), supporting Microchip MPLAB.

When you store the RAM dump, you must also make sure to select the right region, 
i.e., start address and size. The recorder data is stored in a single data 
block, identified by the pointer RecorderDataPtr. 
It is not necessary to match the begin and end of the recorder data, as long as 
it is fully included by the dumped memory region. Tracealyzer automatically 
finds the trace data in the RAM dump, thanks to special signatures. For chips 
with on-chip RAM only, we therefore recommend to dump the entire RAM. This is 
usually very fast.
For chips with larger amounts of (external) RAM, it is typically possible to 
dump a limited region where the data is typically found.

Using IAR Embedded Workbench for ARM, version 6.3
-------------------------------------------------
In the debugger view, when stopped on a breakpoint:
- Select "Debug" menu, "Memory" submenu, "Save..." (keyboard shortcut: ALT,d,y,s)
- In the Save dialog
	- Zone: Memory
	- Start Adress: 10000000 (for NXP LPC1766 in the demo project)
	- End Adress: 1000FFFF (for NXP LPC1766 in the demo project)
	- File format: Intel Extended
	- Filename: <name>.hex
	- Press "Save" button
You can now open <name>.hex in Tracealyzer.

To find the right Start and End addresses, check the address of the symbol 
"RecorderData". The addresses does not need to match this symbol exactly, as 
long as the whole data is included.

Using Renesas High-performance Embedded Workshop v4.09
------------------------------------------------------
In the debugger view, when stopped on a breakpoint:
- Select "Debug" menu, "Save Memory..." (keyboard shortcut: ALT,d,a)
- In the Save dialog
	- Format: Binary
	- Filename: <name>.bin
	- Start Address: 00000000 (For RX62N in the demo project)
	- End Address: 0000FFFF (For RX62N in the demo project)
	- Access size: 1
	- Press "Save" button and open <name>.bin in Tracealyzer.
	
Using Microchip MPLAB v8.86
------------------------------------------------------
- Select "View" -> "File Registers". This shows you the memory contents.
- Make sure "Hex" is selected in the bottom left (instead of "Symbolic"). Hex mode seems to be default.
- Right click in the view and select "Export Table...".
- In the dialog ("Export As"), make sure "Single Column Output" is selected (seems to be default).
- Select start address 0x0000 and make sure the end address is beyond the RecorderData structure. 
  The default values seems to be the whole RAM, so you probably don't need to change this.
- Save as a .mch file and open this file in Tracealyzer v2.2.4 or later (support for the .mch format was added in v2.2.4).

Using STM32 ST-Link
------------------------------------------------------
- Start "ST-Link Utility"
- Connect to the device and view the device memory.
- Set the view to display the entire RAM, or at least the section containing the RecorderData structure.
- Select "Save as" and choose binary (.bin) or Intel Hex (.hex) format.
- Open the resulting file in Tracealyzer.

In case you have any question, contact support@percepio.com

Percepio AB
www.percepio.com
