diff --git a/src/command.c b/src/command.c index 7b8537d7..82ae03c8 100644 --- a/src/command.c +++ b/src/command.c @@ -44,6 +44,7 @@ struct command_s { }; static bool cmd_version(void); +static bool cmd_serial(void); static bool cmd_help(target *t); static bool cmd_jtag_scan(target *t, int argc, char **argv); @@ -71,6 +72,9 @@ static bool cmd_enter_bootldr(target *t, int argc, const char **argv); const struct command_s cmd_list[] = { {"version", (cmd_handler)cmd_version, "Display firmware version info"}, +#ifdef PLATFORM_HAS_PRINTSERIAL + {"serial", (cmd_handler)cmd_serial, "Display firmware serial number"}, +#endif {"help", (cmd_handler)cmd_help, "Display help for monitor commands"}, {"jtag_scan", (cmd_handler)cmd_jtag_scan, "Scan JTAG chain for devices" }, {"swdp_scan", (cmd_handler)cmd_swdp_scan, "Scan SW-DP for devices" }, @@ -354,3 +358,11 @@ static bool cmd_enter_bootldr(target *t, int argc, const char **argv) return true; } #endif + +#ifdef PLATFORM_HAS_PRINTSERIAL +bool cmd_serial(void) +{ + print_serial(); + return true; +} +#endif diff --git a/src/platforms/jeff/platform.c b/src/platforms/jeff/platform.c index 487de8f2..56a30572 100644 --- a/src/platforms/jeff/platform.c +++ b/src/platforms/jeff/platform.c @@ -22,6 +22,7 @@ #include "gdb_if.h" #include "cdcacm.h" #include "usbuart.h" +#include "gdb_packet.h" #include #include @@ -280,6 +281,14 @@ char *serialno_read(char *s) #endif } +void print_serial(void) +{ + gdb_outf("0x%08X%08X%08X%08X\n", *(volatile uint32_t *)0x0080A048, + *(volatile uint32_t *)0x0080A044, + *(volatile uint32_t *)0x0080A040, + *(volatile uint32_t *)0x0080A00C); +} + void platform_request_boot(void) { } diff --git a/src/platforms/jeff/platform.h b/src/platforms/jeff/platform.h index 8c264e1a..f461768e 100644 --- a/src/platforms/jeff/platform.h +++ b/src/platforms/jeff/platform.h @@ -34,6 +34,7 @@ #define PLATFORM_HAS_UART_WHEN_SWDP #define PLATFORM_HAS_POWER_SWITCH #define PLATFORM_HAS_BOOTLOADER +#define PLATFORM_HAS_PRINTSERIAL #define BOARD_IDENT "Black Magic Probe (SAMD), (Firmware " FIRMWARE_VERSION ")" #define BOARD_IDENT_DFU "Black Magic (Upgrade) for Launchpad, (Firmware " FIRMWARE_VERSION ")" @@ -219,4 +220,5 @@ static inline int platform_hwversion(void) void uart_pop(void); int usbuart_convert_tdio(uint32_t arg); +void print_serial(void); #endif