Added TraceRecorder also in IAR project for CORTEX_MPS2_QEMU_IAR_GCC demo (#1325)
CI Checks / git-secrets (push) Has been cancelled
CI Checks / formatting (push) Has been cancelled
CI Checks / spell-check (push) Has been cancelled
CI Checks / doxygen (push) Has been cancelled
CI Checks / verify-manifest (push) Has been cancelled
CI Checks / memory-statistics (push) Has been cancelled
CI Checks / proof_ci (push) Has been cancelled
FreeRTOS Demos / WIN32 MSVC (push) Has been cancelled
FreeRTOS Demos / WIN32 MingW (push) Has been cancelled
FreeRTOS Demos / Posix GCC (push) Has been cancelled
FreeRTOS Demos / GNU MSP430 Toolchain (push) Has been cancelled
FreeRTOS Demos / GNU ARM Toolchain (push) Has been cancelled
FreeRTOS MPU Demo / TI-Hercules RM46 and RM57 MPU Demos (push) Has been cancelled
Build FreeRTOS+ Demos / Windows Simulator Cellular Demos (push) Has been cancelled
Build FreeRTOS+ Demos / coreHTTP WinSim Demos (push) Has been cancelled
Build FreeRTOS+ Demos / corePKCS11 WinSim Demos (push) Has been cancelled
Build FreeRTOS+ Demos / core Library Windows Simulator Demos (push) Has been cancelled
Build FreeRTOS+ Demos / AWS IoT Windows Simulator Demos (push) Has been cancelled
Build FreeRTOS+ Demos / FreeRTOS+TCP Posix Simulator Demo (push) Has been cancelled
Build FreeRTOS+ Demos / FreeRTOS+TCP QEMU ARM MPS2 AN385 (push) Has been cancelled
Build FreeRTOS+ Demos / FreeRTOS+TCP Windows Simulator Demos (push) Has been cancelled
Build FreeRTOS+ Demos / FreeRTOS+CLI Windows Simulator Demos (push) Has been cancelled
Kernel Unit Tests / FreeRTOS/Source Submodule Revision (push) Has been cancelled
Kernel Unit Tests / FreeRTOS-Kernel Main Branch (push) Has been cancelled

* * Added TraceRecorder also in IAR project for demo CORTEX_MPS2_QEMU_IAR_GCC.

* * Added TraceRecorder also in IAR project for demo CORTEX_MPS2_QEMU_IAR_GCC.
This commit is contained in:
Johan Kraft
2025-02-10 12:32:38 +05:30
committed by GitHub
parent 3d927557dc
commit 617657c57f
4 changed files with 200 additions and 8 deletions
@@ -136,6 +136,8 @@
#define configENABLE_BACKWARD_COMPATIBILITY 0
/* TODO TraceRecorder (Step 5): Include trcRecorder.h at the end of FreeRTOSConfig.h. */
#include "trcRecorder.h"
#ifndef __IASMARM__
#include "trcRecorder.h"
#endif
#endif /* FREERTOS_CONFIG_H */
@@ -15,27 +15,39 @@
## Tracing with Percepio View
This demo project includes Percepio TraceRecorder, configured for snapshot tracing with Percepio View or Tracealyzer.
Percepio View is a free tracing tool from Percepio, providing the core features of Percepio Tracealyzer but limited to snapshot tracing.
No license or registration is required. More information and download is found at [Percepio's product page for Percepio View](https://traceviewer.io/freertos-view).
No license or registration is required. More information and download is found at [Percepio's product page for Percepio View](https://traceviewer.io/get-view?target=freertos).
### TraceRecorder Integration
If you like to study how TraceRecorder is integrated, the steps for adding TraceRecorder are tagged with "TODO TraceRecorder" comments in the demo source code.
This way, if using an Eclipse-based IDE, you can find a summary in the Tasks window by selecting Window -> Show View -> Tasks (or Other, if not listed).
See also [the official getting-started guide](https://traceviewer.io/getting-started-freertos-view).
### Usage with GCC
To save the TraceRecorder trace, start a debug session with GDB, for example using the provided Eclipse launch profile (should work in most Eclipse-based IDEs).
### Usage with GDB
To save the TraceRecorder trace, start a debug session with GDB.
Halt the execution and the run the command below.
This saves the trace as trace.bin in the build/gcc folder.
Open the trace file in Percepio View or Tracealyzer.
If using an Eclipse-based IDE, run the following command in the "Debugger Console":
```
dump binary value trace.bin *RecorderDataPtr
```
Note that you can copy/paste this command into the Eclipse Debugger Console by using Ctrl-C, Ctrl-V.
If using VS Code, use the "Debug Console" and add "-exec" before the command:
```
-exec dump binary value trace.bin *RecorderDataPtr
```
Note that you can typically copy/paste this command into the debug console.
### Usage with IAR Embedded Workbench for Arm
The IAR project is not yet updated for TraceRecorder (work in progress). However, you can easily extend the existing IAR project with TraceRecorder.
Simply add the source files and include paths for TraceRecorder listed in build/gcc/Makefile. Build and run.
To save the trace, please refer to the guides at [https://percepio.com/iar](https://percepio.com/iar).
Launch the IAR debugger. With the default project configuration, this should connect to the QEMU GDB server.
To save the trace, please refer to the "Snapshot Mode" guide at [https://percepio.com/iar](https://percepio.com/iar).
In summary:
- Download the IAR macro file [save_trace_buffer.mac](https://percepio.com/downloads/save_trace_buffer.mac) (click "save as")
- Add the macro file in the project options -> Debugger -> Use Macro File(s).
- Start debugging and open View -> Macros -> Debugger Macros.
- Locate and run "save_trace_buffer". Open the resulting "trace.hex" in Percepio View or Tracealyzer.
@@ -357,6 +357,10 @@
<state>$PROJ_DIR$\..\..\..\..\Source\include</state>
<state>$PROJ_DIR$\..\..\CMSIS</state>
<state>$PROJ_DIR$\..\..\..\..\Source\portable\IAR\ARM_CM3</state>
<state>$PROJ_DIR$\..\..\TraceRecorderConfig</state>
<state>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\include</state>
<state>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\kernelports\FreeRTOS\include</state>
<state>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\streamports\RingBuffer\include</state>
</option>
<option>
<name>CCStdIncCheck</name>
@@ -1260,6 +1264,93 @@
<name>$PROJ_DIR$\startup_ewarm.c</name>
</file>
</group>
<group>
<name>TraceRecorder</name>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcAssert.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcCounter.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcDependency.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcDiagnostics.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcEntryTable.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcError.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcEvent.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcEventBuffer.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcExtension.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcHardwarePort.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcHeap.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcInternalEventBuffer.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcInterval.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcISR.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\kernelports\FreeRTOS\trcKernelPort.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcMultiCoreEventBuffer.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcObject.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcPrint.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcRunnable.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcSnapshotRecorder.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcStackMonitor.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcStateMachine.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcStaticBuffer.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcStreamingRecorder.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\streamports\RingBuffer\trcStreamPort.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcString.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcTask.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcTimestamp.c</name>
</file>
</group>
<file>
<name>$PROJ_DIR$\..\..\FreeRTOSConfig.h</name>
</file>
@@ -1631,6 +1631,93 @@
<name>$PROJ_DIR$\startup_ewarm.c</name>
</file>
</group>
<group>
<name>TraceRecorder</name>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcAssert.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcCounter.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcDependency.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcDiagnostics.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcEntryTable.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcError.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcEvent.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcEventBuffer.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcExtension.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcHardwarePort.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcHeap.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcInternalEventBuffer.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcInterval.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcISR.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\kernelports\FreeRTOS\trcKernelPort.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcMultiCoreEventBuffer.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcObject.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcPrint.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcRunnable.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcSnapshotRecorder.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcStackMonitor.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcStateMachine.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcStaticBuffer.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcStreamingRecorder.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\streamports\RingBuffer\trcStreamPort.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcString.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcTask.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-Trace\trcTimestamp.c</name>
</file>
</group>
<file>
<name>$PROJ_DIR$\..\..\FreeRTOSConfig.h</name>
</file>