NEORV32 Software Framework Documentation
The NEORV32 RISC-V Processor
Loading...
Searching...
No Matches
neorv32_tracer.h
Go to the documentation of this file.
1// ================================================================================ //
2// The NEORV32 RISC-V Processor - https://github.com/stnolting/neorv32 //
3// Copyright (c) NEORV32 contributors. //
4// Copyright (c) 2020 - 2025 Stephan Nolting. All rights reserved. //
5// Licensed under the BSD-3-Clause license, see LICENSE for details. //
6// SPDX-License-Identifier: BSD-3-Clause //
7// ================================================================================ //
8
13
14#ifndef NEORV32_TRACER_H
15#define NEORV32_TRACER_H
16
17#include <stdint.h>
18
19
20/**********************************************************************/
25typedef volatile struct __attribute__((packed,aligned(4))) {
26 uint32_t CTRL;
27 uint32_t STOP_ADDR;
28 const uint32_t DELTA_SRC;
29 const uint32_t DELTA_DST;
31
33#define NEORV32_TRACER ((neorv32_tracer_t*) (NEORV32_TRACER_BASE))
34
47
48
49
50/**********************************************************************/
55void neorv32_tracer_enable(int hsel, uint32_t stop_addr);
56void neorv32_tracer_disable(void);
58int neorv32_tracer_run(void);
59void neorv32_tracer_irq_ack(void);
61uint32_t neorv32_tracer_data_get_src(void);
62uint32_t neorv32_tracer_data_get_dst(void);
64
65
66/**********************************************************************/
69inline void __attribute__ ((always_inline)) neorv32_tracer_start(void) {
70 NEORV32_TRACER->CTRL |= (1 << TRACER_CTRL_START);
71}
72
73/**********************************************************************/
76inline void __attribute__ ((always_inline)) neorv32_tracer_stop(void) {
77 NEORV32_TRACER->CTRL |= (1 << TRACER_CTRL_STOP);
78}
79
80#endif // NEORV32_TRACER_H
NEORV32_TRACER_CTRL_enum
Definition neorv32_tracer.h:36
@ TRACER_CTRL_EN
Definition neorv32_tracer.h:37
@ TRACER_CTRL_START
Definition neorv32_tracer.h:39
@ TRACER_CTRL_AVAIL
Definition neorv32_tracer.h:42
@ TRACER_CTRL_HSEL
Definition neorv32_tracer.h:38
@ TRACER_CTRL_IRQ_CLR
Definition neorv32_tracer.h:43
@ TRACER_CTRL_STOP
Definition neorv32_tracer.h:40
@ TRACER_CTRL_RUN
Definition neorv32_tracer.h:41
@ TRACER_CTRL_TBM_LSB
Definition neorv32_tracer.h:44
@ TRACER_CTRL_TBM_MSB
Definition neorv32_tracer.h:45
int neorv32_tracer_run(void)
Definition neorv32_tracer.c:73
int neorv32_tracer_data_avail(void)
Definition neorv32_tracer.c:93
uint32_t neorv32_tracer_data_get_dst(void)
Definition neorv32_tracer.c:117
void neorv32_tracer_enable(int hsel, uint32_t stop_addr)
Definition neorv32_tracer.c:34
void neorv32_tracer_disable(void)
Definition neorv32_tracer.c:50
void neorv32_tracer_stop(void)
Definition neorv32_tracer.h:76
void neorv32_tracer_irq_ack(void)
Definition neorv32_tracer.c:82
uint32_t neorv32_tracer_data_get_src(void)
Definition neorv32_tracer.c:105
int neorv32_tracer_get_buffer_depth(void)
Definition neorv32_tracer.c:61
int neorv32_tracer_available(void)
Definition neorv32_tracer.c:22
void neorv32_tracer_start(void)
Definition neorv32_tracer.h:69
#define NEORV32_TRACER
Definition neorv32_tracer.h:33
Definition neorv32_tracer.h:25
uint32_t CTRL
Definition neorv32_tracer.h:26
uint32_t STOP_ADDR
Definition neorv32_tracer.h:27
const uint32_t DELTA_DST
Definition neorv32_tracer.h:29
const uint32_t DELTA_SRC
Definition neorv32_tracer.h:28