NEORV32 Software Framework Documentation
The NEORV32 RISC-V Processor
Loading...
Searching...
No Matches
neorv32_tracer.h File Reference

Execution trace buffer (TRACER) HW driver header file. More...

#include <stdint.h>

Go to the source code of this file.

Data Structures

struct  neorv32_tracer_t
 

Functions

void neorv32_tracer_start (void)
 
void neorv32_tracer_stop (void)
 
Prototypes
int neorv32_tracer_available (void)
 
void neorv32_tracer_enable (int hsel, uint32_t stop_addr)
 
void neorv32_tracer_disable (void)
 
int neorv32_tracer_get_buffer_depth (void)
 
int neorv32_tracer_run (void)
 
void neorv32_tracer_irq_ack (void)
 
int neorv32_tracer_data_avail (void)
 
uint32_t neorv32_tracer_data_get_src (void)
 
uint32_t neorv32_tracer_data_get_dst (void)
 

IO Device: Execution tracer (TRACER)

#define NEORV32_TRACER   ((neorv32_tracer_t*) (NEORV32_TRACER_BASE))
 
enum  NEORV32_TRACER_CTRL_enum {
  TRACER_CTRL_EN = 0 , TRACER_CTRL_HSEL = 1 , TRACER_CTRL_START = 2 , TRACER_CTRL_STOP = 3 ,
  TRACER_CTRL_RUN = 4 , TRACER_CTRL_AVAIL = 5 , TRACER_CTRL_IRQ_CLR = 6 , TRACER_CTRL_TBM_LSB = 7 ,
  TRACER_CTRL_TBM_MSB = 10
}
 

Detailed Description

Execution trace buffer (TRACER) HW driver header file.

Macro Definition Documentation

◆ NEORV32_TRACER

#define NEORV32_TRACER   ((neorv32_tracer_t*) (NEORV32_TRACER_BASE))

TRACER module hardware handle (neorv32_tracer_t)

Enumeration Type Documentation

◆ NEORV32_TRACER_CTRL_enum

TRACER control register bits

Enumerator
TRACER_CTRL_EN 

TRACER control register (0) (r/w): TRACER enable, reset module when 0

TRACER_CTRL_HSEL 

TRACER control register (1) (r/w): Hart select for tracing

TRACER_CTRL_START 

TRACER control register (2) (r/w): Start tracing, flag always reads as zero

TRACER_CTRL_STOP 

TRACER control register (3) (r/w): Manually stop tracing, flag always reads as zero

TRACER_CTRL_RUN 

TRACER control register (3) (r/-): Tracing in progress when set

TRACER_CTRL_AVAIL 

TRACER control register (5) (r/-): Trace data available when set

TRACER_CTRL_IRQ_CLR 

TRACER control register (6) (r/w): Clear pending interrupt when writing 1

TRACER_CTRL_TBM_LSB 

TRACER control register (7) (r/-): log2(trace buffer depth), LSB

TRACER_CTRL_TBM_MSB 

TRACER control register(10) (r/-): log2(trace buffer depth), MSB

Function Documentation

◆ neorv32_tracer_available()

int neorv32_tracer_available ( void )

Check if TRACER module was synthesized.

Returns
0 if TRACER was not synthesized, non-zero if TRACER is available.

◆ neorv32_tracer_data_avail()

int neorv32_tracer_data_avail ( void )

Check if trace data is available.

Returns
Non-zero if trace data available, zero if no trace data available.

◆ neorv32_tracer_data_get_dst()

uint32_t neorv32_tracer_data_get_dst ( void )

Get trace data: delta-destination.

Important
Use AFTER neorv32_tracer_data_get_src().
Returns
32-bit delta-destination address + first-packet flag (in LSB).

◆ neorv32_tracer_data_get_src()

uint32_t neorv32_tracer_data_get_src ( void )

Get trace data: delta-source.

Important
Check if data is available before with neorv32_tracer_data_avail().
Returns
32-bit delta-source address + trap-entry flag (in LSB).

◆ neorv32_tracer_disable()

void neorv32_tracer_disable ( void )

Reset and disable tracer.

◆ neorv32_tracer_enable()

void neorv32_tracer_enable ( int hsel,
uint32_t stop_addr )

Reset, enable and configure trace module.

Parameters
[in]hselHart ID of the CPU that is traced (0/1).
[in]stop_addrStop tracing at this address. Use -1 to disable auto-stopping.

◆ neorv32_tracer_get_buffer_depth()

int neorv32_tracer_get_buffer_depth ( void )

Get trace buffer depth.

Returns
Trace buffer depth (number of entries)

◆ neorv32_tracer_irq_ack()

void neorv32_tracer_irq_ack ( void )

Acknowledge/clear pending tracer interrupt.

◆ neorv32_tracer_run()

int neorv32_tracer_run ( void )

Check if tracer is running.

Returns
Non-zero if tracing in progress, zero if tracing is stopped/halted.

◆ neorv32_tracer_start()

void neorv32_tracer_start ( void )
inline

Start tracing.

◆ neorv32_tracer_stop()

void neorv32_tracer_stop ( void )
inline

Stop tracing.