Skip to content

Commit

Permalink
rvswd: gate rvswd functionality behind platform define and project op…
Browse files Browse the repository at this point in the history
…tion
  • Loading branch information
perigoso authored and Rafael Silva committed Jan 23, 2025
1 parent dbb40bb commit c0e8934
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 1 deletion.
5 changes: 5 additions & 0 deletions meson_options.txt
Original file line number Diff line number Diff line change
Expand Up @@ -149,3 +149,8 @@ option(
value: false,
description: 'Enable firmware-side protocol acceleration of RISC-V Debug'
)
option(
'rvswd_support',
type: 'boolean',
value: 'false'
)
9 changes: 8 additions & 1 deletion src/command.c
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,9 @@ static bool cmd_help(target_s *target, int argc, const char **argv);

static bool cmd_jtag_scan(target_s *target, int argc, const char **argv);
static bool cmd_swd_scan(target_s *target, int argc, const char **argv);
#if defined(ENABLE_RVSWD) && defined(PLATFORM_HAS_RVSWD)
static bool cmd_rvswd_scan(target_s *target, int argc, const char **argv);
#endif
static bool cmd_auto_scan(target_s *target, int argc, const char **argv);
static bool cmd_frequency(target_s *target, int argc, const char **argv);
static bool cmd_targets(target_s *target, int argc, const char **argv);
Expand Down Expand Up @@ -95,7 +97,9 @@ const command_s cmd_list[] = {
{"jtag_scan", cmd_jtag_scan, "Scan JTAG chain for devices"},
{"swd_scan", cmd_swd_scan, "Scan SWD interface for devices: [TARGET_ID]"},
{"swdp_scan", cmd_swd_scan, "Deprecated: use swd_scan instead"},
#if defined(ENABLE_RVSWD) && defined(PLATFORM_HAS_RVSWD)
{"rvswd_scan", cmd_rvswd_scan, "Scan RVSWD for devices"},
#endif
{"auto_scan", cmd_auto_scan, "Automatically scan all chain types for devices"},
{"frequency", cmd_frequency, "set minimum high and low times: [FREQ]"},
{"targets", cmd_targets, "Display list of available targets"},
Expand Down Expand Up @@ -318,6 +322,7 @@ bool cmd_swd_scan(target_s *target, int argc, const char **argv)
return true;
}

#if defined(ENABLE_RVSWD) && defined(PLATFORM_HAS_RVSWD)
bool cmd_rvswd_scan(target_s *target, int argc, const char **argv)
{
(void)target;
Expand Down Expand Up @@ -361,6 +366,7 @@ bool cmd_rvswd_scan(target_s *target, int argc, const char **argv)
morse(NULL, false);
return true;
}
#endif

bool cmd_auto_scan(target_s *target, int argc, const char **argv)
{
Expand Down Expand Up @@ -390,14 +396,15 @@ bool cmd_auto_scan(target_s *target, int argc, const char **argv)
#endif
if (!scan_result) {
gdb_out("SWD scan found no devices.\n");

#if defined(ENABLE_RVSWD) && defined(PLATFORM_HAS_RVSWD)
#if CONFIG_BMDA == 1
scan_result = bmda_rvswd_scan();
#else
scan_result = false;
#endif
if (!scan_result)
gdb_out("RVSWD scan found no devices.\n");
#endif
}
}
}
Expand Down
2 changes: 2 additions & 0 deletions src/include/target.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,10 @@ typedef struct target_controller target_controller_s;
#if CONFIG_BMDA == 1
bool bmda_swd_scan(uint32_t targetid);
bool bmda_jtag_scan(void);
#if defined(ENABLE_RVSWD) && defined(PLATFORM_HAS_RVSWD)
bool bmda_rvswd_scan(void);
#endif
#endif
bool adiv5_swd_scan(uint32_t targetid);
bool jtag_scan(void);

Expand Down
8 changes: 8 additions & 0 deletions src/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,13 @@ if rtt_support
endif
endif

# RVSWD support handling
rvswd_support = get_option('rvswd_support')
if rtt_support
libbmd_core_args += ['-DENABLE_RVSWD=1']
bmd_core_args += ['-DENABLE_RVSWD=1']
endif

# Advertise QStartNoAckMode
advertise_noackmode = get_option('advertise_noackmode')
if advertise_noackmode
Expand Down Expand Up @@ -117,6 +124,7 @@ summary(
{
'Debug output': debug_output,
'RTT support': rtt_support,
'RVSWD support': rvswd_support,
'Advertise QStartNoAckMode': advertise_noackmode,
},
bool_yn: true,
Expand Down
1 change: 1 addition & 0 deletions src/platforms/hosted/platform.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ void platform_buffer_flush(void);
do { \
} while (0)
#define PLATFORM_HAS_POWER_SWITCH
#define PLATFORM_HAS_RVSWD

#define PRODUCT_ID_ANY 0xffffU

Expand Down

0 comments on commit c0e8934

Please sign in to comment.