m3dev

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 7c994dd1bd1c95d5a6fde1c6ee0a96ace8c9fb5b
parent 7a543b60f89a8a22b89485a57cbb58c45f6070fc
Author: Brian Swetland <swetland@frotz.net>
Date:   Sat, 27 Jun 2015 01:47:51 -0700

debugger: log command to enable/disable logging

Diffstat:
Mtools/debugger-commands.c | 71+++++++++++++++++++++++++++++++++++++++++++++--------------------------
Mtools/debugger.c | 2++
Mtools/debugger.h | 5+++++
Mtools/gdb-bridge.c | 5+----
4 files changed, 53 insertions(+), 30 deletions(-)

diff --git a/tools/debugger-commands.c b/tools/debugger-commands.c @@ -690,33 +690,52 @@ int do_erase(int argc, param *argv) { return run_flash_agent(argv[0].n, NULL, argv[1].n); } +int do_log(int argc, param *argv) { + unsigned flags = 0; + while (argc > 0) { + if (!strcmp(argv[0].s, "gdb")) { + flags |= LF_GDB; + } else if (!strcmp(argv[0].s, "swd")) { + flags |= LF_SWD; + } else { + xprintf("error: allowed flags: gdb swd\n"); + return -1; + } + argc--; + argv++; + } + log_flags = flags; + return 0; +} + struct debugger_command debugger_commands[] = { - { "exit", "", do_exit, "" }, - { "attach", "", do_attach, "attach/reattach to sw-dp" }, - { "regs", "", do_regs, "show cpu registers" }, - { "stop", "", do_stop, "halt cpu" }, - { "step", "", do_step, "single-step cpu" }, - { "go", "", do_resume, "resume cpu" }, - { "dw", "", do_dw, "dump words" }, - { "db", "", do_db, "dump bytes" }, - { "dr", "", do_dr, "dump register" }, - { "wr", "", do_wr, "write register" }, - { "download", "", do_download,"download file to device" }, - { "flash", "", do_flash, "write file to device flash" }, - { "erase", "", do_erase, "erase flash" }, - { "reset", "", do_reset, "reset target" }, - { "reset-stop", "", do_reset_stop, "reset target and halt cpu" }, - { "reset-hw", "", do_reset_hw, "strobe /RESET pin" }, - { "watch-pc", "", do_watch_pc, "set watchpoint at addr" }, - { "watch-rw", "", do_watch_rw, "set watchpoint at addr" }, - { "watch-off", "", do_watch_off, "disable watchpoint" }, - { "print", "", do_print, "print numeric arguments" }, - { "echo", "", do_echo, "echo command line" }, - { "bootloader", "", do_bootloader, "reboot into bootloader" }, - { "setclock", "", do_setclock, "set clock rate (khz)" }, - { "arch", "", do_setarch, "set architecture for flash agent" }, - { "text", "", do_text, "dump text" }, - { "help", "", do_help, "help" }, + { "exit", "", do_exit, "" }, + { "attach", "", do_attach, "attach/reattach to sw-dp" }, + { "regs", "", do_regs, "show cpu registers" }, + { "stop", "", do_stop, "halt cpu" }, + { "step", "", do_step, "single-step cpu" }, + { "go", "", do_resume, "resume cpu" }, + { "dw", "", do_dw, "dump words" }, + { "db", "", do_db, "dump bytes" }, + { "dr", "", do_dr, "dump register" }, + { "wr", "", do_wr, "write register" }, + { "download", "", do_download, "download file to device" }, + { "flash", "", do_flash, "write file to device flash" }, + { "erase", "", do_erase, "erase flash" }, + { "reset", "", do_reset, "reset target" }, + { "reset-stop", "", do_reset_stop, "reset target and halt cpu" }, + { "reset-hw", "", do_reset_hw, "strobe /RESET pin" }, + { "watch-pc", "", do_watch_pc, "set watchpoint at addr" }, + { "watch-rw", "", do_watch_rw, "set watchpoint at addr" }, + { "watch-off", "", do_watch_off, "disable watchpoint" }, + { "log", "", do_log, "enable/disable logging" }, + { "print", "", do_print, "print numeric arguments" }, + { "echo", "", do_echo, "echo command line" }, + { "bootloader", "", do_bootloader, "reboot into bootloader" }, + { "setclock", "", do_setclock, "set clock rate (khz)" }, + { "arch", "", do_setarch, "set architecture for flash agent" }, + { "text", "", do_text, "dump text" }, + { "help", "", do_help, "help" }, { 0, 0, 0, 0 }, }; diff --git a/tools/debugger.c b/tools/debugger.c @@ -30,6 +30,8 @@ #include "linenoise.h" #include "debugger.h" +unsigned log_flags = 0; + void linenoiseInit(void); static const char *scriptfile = NULL; diff --git a/tools/debugger.h b/tools/debugger.h @@ -24,6 +24,11 @@ extern void xprintf(const char *fmt, ...); #define ERROR -1 #define ERROR_UNKNOWN -2 +#define LF_SWD 1 +#define LF_GDB 2 + +extern unsigned log_flags; + struct funcline { struct funcline *next; char text[0]; diff --git a/tools/gdb-bridge.c b/tools/gdb-bridge.c @@ -43,7 +43,6 @@ #define S_CHK2 3 #define F_ACK 1 -#define F_TRACE 2 #define F_RUNNING 4 #define F_CONSOLE 8 @@ -147,7 +146,7 @@ void gdb_puthex(struct gdbcnxn *gc, const void *ptr, unsigned len) { void handle_command(struct gdbcnxn *gc, unsigned char *cmd); void gdb_recv_cmd(struct gdbcnxn *gc) { - if (gc->flags & F_TRACE) { + if (log_flags & LF_GDB) { zprintf("PKT: %s\n", gc->rxbuf); } debugger_lock(); @@ -706,8 +705,6 @@ void gdb_server(int fd) { zprintf("[ gdb connected ]\n"); debugger_unlock(); -// gc.flags |= F_TRACE; - for (;;) { fds[0].fd = fd;