put test into "server" mode for connecting with openocd
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Sat, 26 Sep 2020 14:51:09 +0000 (15:51 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Sat, 26 Sep 2020 14:51:09 +0000 (15:51 +0100)
src/soc/debug/test/jtagremote.py
src/soc/debug/test/test_jtag_tap_srv.py

index dbd72f8d873651278e988b2ffeb9649adbc3f7bd..cd23aae860ec2fd16be85d24d995189d368c9cb5 100644 (file)
@@ -33,8 +33,8 @@ class JTAGServer:
         if self.conn:
             self.conn.close()
 
-    def get_connection(self):
-        r, w, e = select.select( [self.s], [], [], 0)
+    def get_connection(self, timeout=0):
+        r, w, e = select.select( [self.s], [], [], timeout)
         for sock in r:
             #incoming message from remote server
             if sock == self.s:
index ae74f5ee033348eb91b4bd4cc1b3e78ffc5a0823..e8d31bae2ff1426619dabb61e3b055ecd9146cd1 100644 (file)
@@ -3,6 +3,7 @@
 based on Staf Verhaegen (Chips4Makers) wishbone TAP
 """
 
+import sys
 from nmigen import (Module, Signal, Elaboratable, Const)
 from c4m.nmigen.jtag.tap import TAP, IOType
 from c4m.nmigen.jtag.bus import Interface as JTAGInterface
@@ -193,8 +194,11 @@ if __name__ == '__main__':
 
     # set up client-server on port 44843-something
     dut.s = JTAGServer()
-    dut.c = JTAGClient()
-    dut.s.get_connection()
+    if len(sys.argv) != 2 and sys.argv[1] != 'server':
+        dut.c = JTAGClient()
+        dut.s.get_connection()
+    else:
+        dut.s.get_connection(None) # block waiting for connection
 
     # rather than the client access the JTAG bus directly
     # create an alternative that the client sets
@@ -222,7 +226,10 @@ if __name__ == '__main__':
     sim.add_clock(1e-6, domain="sync")      # standard clock
 
     sim.add_sync_process(wrap(jtag_srv(dut))) # jtag server
-    sim.add_sync_process(wrap(jtag_sim(dut))) # actual jtag tester
+    if len(sys.argv) != 2 and sys.argv[1] != 'server':
+        sim.add_sync_process(wrap(jtag_sim(dut))) # actual jtag tester
+    else:
+        print ("running server only as requested, use openocd remote to test")
     sim.add_sync_process(wrap(dmi_sim(dut)))  # handles (pretends to be) DMI
 
     with sim.write_vcd("dmi2jtag_test_srv.vcd"):