Buffer (FIFO) overflows

29-Jul-2024

In some cases, CPU is not able to stream the trace data quickly enough which results in overflow errors. Errors are displayed in the Analyzer Output window and indicated in the Trace window with brown colored lines. 




Possible solutions

Limit the scope of the recorded variables (e.g. task/irq switches, functions, runnables).

Configure Code Areas/Data Areas in the Analyzer Configuration / Profiler.


Disable timestamp (Infineon TriCore)

Set the options:

  • Assume the source is none via View | Analyzer | Analyzer Configuration | Manual Trigger | Configure | MCDS.
  • Profiler Time Source to none via Hardware | CPU Options | SoC Advanced.


Upload while sampling
Infineon TriCore

Make sure:

  • EMEM Trigger is set to END via View | Analyzer | Analyzer Configuration |Manual Trigger | Configure | MCDS.
  • Action trace_done is set to NEVER via View | Analyzer | Analyzer Configuration | Manual Trigger | Configure | MCX.

NXP/ST Power Architecture

Enable the option Upload while sampling via View | Analyzer | Analyzer Configuration | Recorder.


Disable Program Flow tracing

Uncheck in the Analyzer Configuration dialog:

    • Code in Profiler 
    • Coverage in Hardware


    Aurora Trace Port

    Increase Lane link speed in Hardware | CPU Options | Aurora.


    Nexus Trace Port (Renesas RH850)
    • Use the full trace port width available on your target and Increase MDO width in Hardware | CPU Options | Nexus.
    • Select the highest possible trace clock  in Hardware | CPU Options | Nexus:
      • If supported, select a double data rate
      • Decrease the clock divider


    DAP Debug channel (Infineon TriCore)

    If possible in Hardware | CPU Options | SoC:

    • Use DAP Wide Debug channel Mode
    • Use the DAPE Debug channel 
    • Set the highest clock


    Decrease the amount of branch/call instructions

    An idle loop in the code constantly calls a function which returns immediately. Such programming generates excessive amounts of messages and prevents long recordings.

    For example, instead of:

    void Idle()
    {
    }
    …
    while(true)
    {
      Idle();
    }


    write:

    while(true)
    {
    }


    Limitations inside the CPUs also exist  (e.g. on some CPU architectures only 1-bit Aurora is supported). Generated data can fill the internal buffer even before BlueBox is able to fetch the data from the CPU. It is necessary to find a balance between the accuracy of recorded data and how much information to record.


    Renesas RH850

    Refer to Trace overflows.


    More resources in winIDEA Help

    Was this answer helpful?