diff options
author | Megan Wachs <megan@sifive.com> | 2017-08-14 13:33:31 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-08-14 13:33:31 -0700 |
commit | 489838cc68e8c332ed49d189be13212c46716445 (patch) | |
tree | 86b82db35d33aedbdcf192331bf340e4c59a9a19 /debug | |
parent | 373630164e91cefbd104c132b9b400d10d9e193b (diff) | |
parent | 572ccda6a47f051db4f28f9ed87cbbf8491a517c (diff) | |
download | riscv-tests-489838cc68e8c332ed49d189be13212c46716445.zip riscv-tests-489838cc68e8c332ed49d189be13212c46716445.tar.gz riscv-tests-489838cc68e8c332ed49d189be13212c46716445.tar.bz2 |
Merge pull request #66 from riscv/debug_user_niceness
Debug: Usability Features
Diffstat (limited to 'debug')
-rw-r--r-- | debug/targets.py | 9 | ||||
-rw-r--r-- | debug/testlib.py | 11 |
2 files changed, 14 insertions, 6 deletions
diff --git a/debug/targets.py b/debug/targets.py index 296b0a9..37759f9 100644 --- a/debug/targets.py +++ b/debug/targets.py @@ -22,6 +22,12 @@ class Target(object): # target is defined. Defaults to <name>.cfg. openocd_config_path = None + # Timeout waiting for the server to start up. This is different than the + # GDB timeout, which is how long GDB waits for commands to execute. + # The server_timeout is how long this script waits for the Server to be ready + # for GDB connections. + server_timeout_sec = 60 + # Path to linker script relative to the .py file where the target is # defined. Defaults to <name>.lds. link_script_path = None @@ -72,7 +78,8 @@ class Target(object): def server(self): """Start the debug server that gdb connects to, eg. OpenOCD.""" return testlib.Openocd(server_cmd=self.server_cmd, - config=self.openocd_config_path) + config=self.openocd_config_path, + timeout=self.server_timeout_sec) def compile(self, *sources): binary_name = "%s_%s-%d" % ( diff --git a/debug/testlib.py b/debug/testlib.py index 9a45cd0..23f937b 100644 --- a/debug/testlib.py +++ b/debug/testlib.py @@ -161,8 +161,9 @@ class VcsSim(object): class Openocd(object): logfile = tempfile.NamedTemporaryFile(prefix='openocd', suffix='.log') logname = logfile.name + print "OpenOCD Temporary Log File: %s" % logname - def __init__(self, server_cmd=None, config=None, debug=False): + def __init__(self, server_cmd=None, config=None, debug=False, timeout=60): if server_cmd: cmd = shlex.split(server_cmd) else: @@ -196,7 +197,7 @@ class Openocd(object): if debug: cmd.append("-d") - logfile = open(Openocd.logname, "w") + logfile = Openocd.logfile logfile.write("+ %s\n" % " ".join(cmd)) logfile.flush() self.process = subprocess.Popen(cmd, stdin=subprocess.PIPE, @@ -223,7 +224,7 @@ class Openocd(object): if not messaged and time.time() - start > 1: messaged = True print "Waiting for OpenOCD to start..." - if time.time() - start > 60: + if (time.time() - start) > timeout: raise Exception("ERROR: Timed out waiting for OpenOCD to " "listen for gdb") @@ -276,12 +277,12 @@ Thread = collections.namedtuple('Thread', ('id', 'target_id', 'name', class Gdb(object): logfile = tempfile.NamedTemporaryFile(prefix="gdb", suffix=".log") logname = logfile.name + print "GDB Temporary Log File: %s" % logname def __init__(self, cmd=os.path.expandvars("$RISCV/bin/riscv64-unknown-elf-gdb")): self.child = pexpect.spawn(cmd) - self.child.logfile = open(self.logname, "w") - self.child.logfile.write("+ %s\n" % cmd) + Gdb.logfile.write("+ %s\n" % cmd) self.wait() self.command("set confirm off") self.command("set width 0") |