From b9bb681d565fea9ffaafa5bfae39cbfd627b1567 Mon Sep 17 00:00:00 2001 From: Megan Wachs Date: Mon, 14 Aug 2017 10:58:22 -0700 Subject: [PATCH] debug: Allow OpenOCD startup timeout to be specified. Print out path to log files. --- debug/targets.py | 9 ++++++++- debug/testlib.py | 9 +++++---- 2 files changed, 13 insertions(+), 5 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 .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 .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 b81b4cd..d860533 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 Temp Logfile: %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,11 +277,11 @@ Thread = collections.namedtuple('Thread', ('id', 'target_id', 'name', class Gdb(object): logfile = tempfile.NamedTemporaryFile(prefix="gdb", suffix=".log") logname = logfile.name + print "GDB Temporary 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) self.wait() self.command("set confirm off") -- 2.30.2