| 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 |