def pingset(dspboardaddrs): eio = NetEventIO("10.0.0.2") eio.addRXMask(0xF1, xrange(256)) eio.start() # Create event and set mask N = 40 x = n.zeros(N) for i in range(N): e = Event() e.src = eaddr.NETWORK e.cmd = 0xF0 e.data[0] = 0x1234 ea = eaddr.TXDest() for d in dspboardaddrs: ea[d] = 1 eio.sendEvent(ea, e) erx = eio.getEvents() x[i] = len(erx) eio.stop() pylab.figure() pylab.hist(x)
def __init__(self, somaIP, tgts): self.eio = NetEventIO(somaIP) self.pingtgts = set(tgts) for i in self.pingtgts: #self.eio.addRXMask(0x09, i) self.eio.addRXMask(PING_RESPONSE_CMD, i) self.eio.start()
def debug(dspboardaddrs): eio = NetEventIO("10.0.0.2") eio.addRXMask(0x38, dspboardaddrs) eio.start() print "Sending to ", dspboardaddrs # Create event and set mask e = Event() e.src = eaddr.NETWORK e.cmd = 0x38 for d in dspboardaddrs: ea = eaddr.TXDest() ea[d] = 1 eio.sendEvent(ea, e) print "sending", e erx = eio.getEvents() print erx[0] eio.stop()
""" Try and flash the DSPboard LED """ import sys from somapynet.event import Event from somapynet import eaddr from somapynet.neteventio import NetEventIO import struct import time eio = NetEventIO("10.0.0.2") dspaddrs = set() delay = float(sys.argv[1]) for who in sys.argv[2:]: if '-' in who: # this is a range (startstr, endstr) = who.split("-") for r in range(int(startstr), int(endstr) + 1): dspaddrs.add(r) else: dspaddrs.add(int(who)) if len(dspaddrs) == 0: raise Exception("Must specify at least one dsp board target") eio.start() CMD = 0xF2 # Create event and set mask while (1):
v = struct.unpack("L", s)[0] print "git sha-1 begins: %16.16x" % v def print_build_time(evt): print evt x = evt.data[1] << 16 | evt.data[2] print "build time:", time.asctime(time.localtime(x)) funcs = {8: print_name, 9: print_version, 10: print_hash, 11: print_build_time} somaip = sys.argv[1] eio = NetEventIO(somaip) DSPBOARDADDR = int(sys.argv[2]) ECMD_VERSION_QUERY = 0x04 eio.addRXMask(ECMD_VERSION_QUERY, DSPBOARDADDR) eio.start() for field in range(0, 4): # Create event and set mask e = Event() e.src = eaddr.NETWORK e.cmd = ECMD_VERSION_QUERY e.data[0] = (1 << 15) | field ea = eaddr.TXDest()
def main(): dspaddrs = set() for who in sys.argv[2:]: if '-' in who: # this is a range (startstr, endstr) = who.split("-") for r in range(int(startstr), int(endstr)+1): dspaddrs.add(r) else: dspaddrs.add(int(who)) if len(dspaddrs) == 0: raise Exception("Must specify at least one dsp board target") eio = NetEventIO("10.0.0.2") #DSPBOARDADDR = tgt for d in dspaddrs: eio.addRXMask(xrange(256), d) eio.start() ea = eaddr.TXDest() for d in dspaddrs: ea[d] = 1 print "Asserting DSP reset" e = Event() e.src = eaddr.NETWORK e.cmd = EVENTRXCMD_DSPRESET e.data[0] = 0x0000 reallysend(eio, ea, e) print "Deasserting DSP reset" e = Event() e.src = eaddr.NETWORK e.cmd = EVENTRXCMD_DSPRESET e.data[0] = 0xFFFF reallysend(eio, ea, e) print "Acquiring DSP SPI interface for FPGA" e = Event() e.src = eaddr.NETWORK e.cmd = EVENTRXCMD_DSPSPIEN e.data[0] = 0xFFFF reallysend(eio, ea, e) print "Deasserting SPISS" e = Event() e.src = eaddr.NETWORK e.cmd = EVENTRXCMD_DSPSPISS e.data[0] = 0xFFFF reallysend(eio, ea, e) print "Reasserting SPISS" e = Event() e.src = eaddr.NETWORK e.cmd = EVENTRXCMD_DSPSPISS e.data[0] = 0x0000 reallysend(eio, ea, e) time.sleep(1) # load up the blocks and send blocks = loadfiles() blockpos = 0 for byteblock in blocks: MAXLEN = 1024 chunks = chunk(byteblock, MAXLEN) print "byteblock, len = ", len(byteblock), len(chunks), "chunks" cpos = 0 for b in chunks: pos = 0 while pos < len(b): bytes = b[pos:pos+2] words = struct.unpack(">H", bytes) e = Event() e.src = eaddr.NETWORK e.cmd = EVENTRXCMD_DATABUF e.data[0] = words[0] e.data[1] = pos / 2 ea = eaddr.TXDest() for d in dspaddrs: ea[d] = 1 reallysend(eio, ea, e) # idempotent pos += 2 e = Event() e.src = eaddr.NETWORK e.cmd = EVENTRXCMD_DATABUFTX # this is the length e.data[0] = pos/2 # now the nonce e.data[1] = cpos * 256 + pos ea = eaddr.TXDest() for d in dspaddrs: ea[d] = 1 reallysend(eio, ea, e) print "sent databuftx event, blockpos =%d, block len = %d, chunk number %d" % (blockpos, len(b), cpos) # we need to get events from everyone ecnt = 0 while ecnt < len(dspaddrs): erx = eio.getEvents() for q in erx: ecnt += 1 print "Heard back from ", q.src, q cpos += 1 blockpos += 1 e = Event() e.src = eaddr.NETWORK e.cmd = EVENTRXCMD_DSPSPISS e.data[0] = 0xFFFF ea = eaddr.TXDest() for d in dspaddrs: ea[d] = 1 reallysend(eio, ea, e) # Give DSP control of SPI interface e = Event() e.src = eaddr.NETWORK e.cmd = EVENTRXCMD_DSPSPIEN e.data[0] = 0x0000 ea = eaddr.TXDest() for d in dspaddrs: ea[d] = 1 reallysend(eio, ea, e) time.sleep(1) # now send all of the UART settings e = Event() e.src = eaddr.NETWORK e.cmd = 0x37 for d in dspaddrs: e.data[0] = d e.data[1] = d e.data[2] = d e.data[3] = d e.data[4] = d ea = eaddr.TXDest() ea[d] = 1 reallysend(eio, ea, e) eio.stop()