示例#1
0
 def disableEvent(self):
     e = Event()
     e.cmd = self.AUDIO_EVENT_CMD
     e.src = eaddr.NETWORK
     e.data[0] = pack('>H', 0) #Requesting Change
     e.data[1] = pack('>H', 0) #Set Channel to Off
     return e
示例#2
0
    def ping(self):

        # Create event and set mask
        e = Event()
        e.src = eaddr.NETWORK
        e.cmd = 0x08
        e.data[0] = 0x1234
        e.data[1] = 0x5678

        ea = eaddr.TXDest()
        for i in self.pingtgts:
            ea[i] = 1

        self.eio.sendEvent(ea, e)

        starttime = time.time()
        PINGWAIT = 1.0
        eventsrxed = []
        while len(eventsrxed) < len(self.pingtgts):
            erx = self.eio.getEvents(blocking=False)
            if erx != None:
                for eias in erx:
                    print eias
                eventsrxed += erx
            if time.time() > starttime + PINGWAIT:
                break

        rxset = set()
        for e in eventsrxed:
            rxset.add(e.src)

        missing = self.pingtgts.difference(rxset)
        return (rxset, missing)
示例#3
0
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)
示例#4
0
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)
示例#5
0
def youare(devicenums):

    eio = NetEventIO("10.0.0.2")
    for d in devicenums:
        eio.addRXMask(xrange(256), int(d))

    eio.start()

    EVENTCMD_YOUARE = 0x01


    for i in devicenums:
        devicelinknum = int(i)

        for device in xrange(4):
            e = Event()
            e.cmd = EVENTCMD_YOUARE
            e.src = eaddr.NETWORK
            deviceid = 8  + devicelinknum * 4 + device
            e.data[0] = deviceid
            ea = eaddr.TXDest()
            ea[deviceid] = 1

            print "Sending youare for ", deviceid, e
            
            reallysend(eio, ea, e)
            

    eio.stop()
示例#6
0
def grabMemIF(eio):
    # select debug interface
    e = Event()
    e.src = src
    e.cmd =  ECMD_WRITE

    e.data[0] = memdebug.ifsel
    e.data[1] = 0x0001

    ea = eaddr.TXDest()
    ea[eaddr.NETCONTROL] = 1
    reallysend(eio, ea, e)
示例#7
0
def read_memready(eio):
    e = Event()
    e.src = mysrc()
    e.cmd = ECMD_READ

    e.data[0] = memdebug.memready
    ea = eaddr.TXDest()
    ea[eaddr.NETCONTROL] = 1
    reallysend(eio, ea, e)

    e = eio.getEvents()
    print e[0].data[1]
示例#8
0
def getBufferAddress(eio):
    e = Event()
    e.src = mysrc()
    e.cmd = ECMD_READ

    e.data[0] = memdebug.addr
    e.data[1] = 0
    ea = eaddr.TXDest()
    ea[eaddr.NETCONTROL] = 1
    reallysend(eio, ea, e)
    erx = eio.getEvents()
    return erx[0].data[1]
示例#9
0
def setLED(addrs, stateon):
    e = Event()
    e.src = eaddr.NETWORK
    e.cmd =  CMD
    if stateon:
        e.data[0] = 0xFFFF
    else:
        e.data[0] = 0x0000
    
    ea = eaddr.TXDest()
    for i in addrs:
        ea[i] = 1
    eio.sendEvent(ea, e)
示例#10
0
def setBufferAddress(eio, addr):
    """
    assumes EIO is running, receiving correct masks

    """
    e = Event()
    e.src = mysrc()
    e.cmd = ECMD_WRITE

    e.data[0] = memdebug.addr
    e.data[1] = addr
    ea = eaddr.TXDest()
    ea[eaddr.NETCONTROL] = 1
    reallysend(eio, ea, e)
示例#11
0
def loopback_test():
    """
    Send an event to the jtag interface and get
    a response
    
    """

    jtagio = JTAGEventIO()
    jtagio.addRXMask(xrange(256), eaddr.JTAG)
    a = Event()
    a.cmd = 0x30
    a.src = eaddr.JTAG
    a.data[0] = 0x0123
    a.data[1] = 0x4567
    a.data[2] = 0x89AB
    a.data[3] = 0xCDEF
    a.data[4] = 0xAABB

    jtagio.start()

    ea = eaddr.TXDest()
    ea[eaddr.JTAG] = 1

    jtagio.sendEvent(ea, a)

    print jtagio.getEvents()[0]

    jtagio.stop()
示例#12
0
def getnonce(eio):

    e = Event()
    e.src = mysrc()
    e.cmd = ECMD_READ

    e.data[0] = memdebug.nonce
    ea = eaddr.TXDest()
    ea[eaddr.NETCONTROL] = 1
    reallysend(eio, ea, e)

    es = eio.getEvents()
    e = es[0]
    return e.data[1]
示例#13
0
def word_write(eio, addr, data):
    setBufferAddress(eio, addr)
    a = getBufferAddress(eio)
    if addr != a :
        raise Exception("error on address readback, addr= %4.4X, read address %4.4X" % (addr, a))
    
    
    # write the word
    e = Event()
    e.src = src
    e.cmd =  ECMD_WRITE
    
    e.data[0] = memdebug.bufferwr
    e.data[1] = data
    ea = eaddr.TXDest()
    ea[eaddr.NETCONTROL] = 1
    reallysend(eio, ea, e)
示例#14
0
def execute_txn(eio, type):
    nonce = np.random.randint(0, 2**16)

    e = Event()
    e.src = mysrc()
    e.cmd = ECMD_WRITE

    e.data[0] = type
    e.data[1] = nonce
    ea = eaddr.TXDest()
    ea[eaddr.NETCONTROL] = 1
    reallysend(eio, ea, e)

    # now loop until done!
    noncerx = None
    while noncerx  != nonce:
        noncerx = getnonce(eio)
        print "not done yet %4.4X != %4.4X" %( nonce, noncerx)
    print "Done"
示例#15
0
 def enableEvent(self):
     e = Event()
     e.cmd = self.AUDIO_EVENT_CMD
     e.src = eaddr.NETWORK
     e.data[0] = pack('>H', 0) #Requesting Change
     e.data[1] = pack('>H', 1) #Set Channel to On
     e.data[2] = pack('>H', self.selectedSubChan)
     e.data[3] = pack('>H', 32000)
     return e
示例#16
0
    def getLinkCycleCount(self, DEVN):
        # now get all of the counter events        
        rx_set = {}
        for i in range(DEVN):
            e = Event()
            e.src = self.src
            e.cmd = 0x21
            e.data[0] = i

            ea = eaddr.TXDest()
            ea[eaddr.SYSCONTROL] = 1
            self.eio.sendEvent(ea, e)

            erx = self.eio.getEvents()

            rx_set[i] = erx
        cyclecnt = []
        for i in range(DEVN):
            cyclecnt.append(rx_set[i][0].data[2])
        return cyclecnt
示例#17
0
    def getDLTiming(self):
        # now get the debug counters
        e = Event()
        e.src = self.src
        e.cmd = 0x22
        ea = eaddr.TXDest()
        ea[eaddr.SYSCONTROL] = 1
        self.eio.sendEvent(ea, e)
        
        erx = self.eio.getEvents()
        for e in erx:
            debug_event = erx[0]

        timings = []
        for ei in range(4):
            tpos = (debug_event.data[ei] >> 8 ) & 0xFF
            tlen = debug_event.data[ei] & 0xFF
            timings.append((tpos, tlen))
        
        return timings
示例#18
0
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()
示例#19
0
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()
示例#20
0
def debug_dump_read(eio):
    """
    read each reg and dump the value there
    
    """
    for regi in range(16):
        e = Event()
        e.src = src
        e.cmd =  ECMD_READ
        
        e.data[0] = regi
        e.data[1] = 0
    
        ea = eaddr.TXDest()
        ea[eaddr.NETCONTROL] = 1
        reallysend(eio, ea, e)
        
        erx = eio.getEvents()
        assert erx[0].cmd == ECMD_READ
        print erx[0]
        d = erx[0].data[1]
示例#21
0
    def ping(self):

        # Create event and set mask
        e = Event()
        e.src = eaddr.NETWORK
        e.cmd = 0x08
        e.data[0] = 0x1234
        e.data[1] = 0x5678

        ea = eaddr.TXDest()
        for i in self.pingtgts:
            ea[i] = 1

        self.eio.sendEvent(ea, e)

        starttime = time.time()
        PINGWAIT = 1.0
        eventsrxed = []
        while len(eventsrxed) < len(self.pingtgts):
            erx = self.eio.getEvents(blocking=False)
            if erx != None:
                for eias in erx:
                    print eias
                eventsrxed += erx
            if time.time() > starttime + PINGWAIT:
                break

        rxset = set()
        for e in eventsrxed:
            rxset.add(e.src)

        missing = self.pingtgts.difference(rxset)
        return (rxset, missing)
示例#22
0
    def getEvents(self, blocking=True):
        """
        Slightly different semantics, can't handle null
        event cmd, which should be fine as we'll never return it anyway
        
        """
        while True:
            IR = USER3
            resp = self._callJtag(IR, "00 00 00 00 00 00 00 00 00 00 00 00")

            e = Event()
            octets = resp.split()
            e.cmd = int(octets[0], 16)
            e.src = int(octets[1], 16)
            for epos in range(5):
                e.data[epos] = (int(octets[2 + epos * 2], 16) << 8) | int(octets[3 + epos * 2], 16)
            
            if e.cmd == 0:
                if not blocking:
                    return []
            else:
                return [e]
示例#23
0
def word_read(eio, addr):
    setBufferAddress(eio, addr)
    a = getBufferAddress(eio)
    assert addr == a

    # write the wordg
    e = Event()
    e.src = src
    e.cmd =  ECMD_READ
    
    e.data[0] = memdebug.bufferrd
    e.data[1] = addr
    
    ea = eaddr.TXDest()
    ea[eaddr.NETCONTROL] = 1
    reallysend(eio, ea, e)
    
    erx = eio.getEvents()
    assert erx[0].cmd == ECMD_READ
    d = erx[0].data[1]
    d2 = erx[0].data[2]
    return d
示例#24
0
    def getLinkStatus(self, DEVN):

        # get the link status event 
        e = Event()
        e.src = self.src
        e.cmd = 0x20
        ea = eaddr.TXDest()
        ea[eaddr.SYSCONTROL] = 1

        self.eio.sendEvent(ea, e)

        erx = self.eio.getEvents()
        linkstatus_event = erx[0]

        # now parse the link status event
        status = []
            
        for i in range(DEVN):
            if (linkstatus_event.data[1] >> i) & 0x1 > 0:
                status.append(True)
            else:
                status.append(False)
        return status
示例#25
0
文件: ping.py 项目: somaproject/adio
def ping_digital_out(ip):


    addr = DIGITAL_OUT
    eio = NetEventIO(ip)
    eio.addRXMask(PING_RESPONSE_CMD, [addr])
    eio.start()

    e = Event()
    e.src = eaddr.NETWORK
    e.cmd =  0x08
    e.data[0] = 0x1234
    e.data[1] = 0x5678

    ea = eaddr.TXDest()
    ea[addr] = 1

    eio.sendEvent(ea, e)

    erx = eio.getEvents(blocking=True)
    for e in erx:
        print e

    eio.stop()
示例#26
0
def set_rowtgt_address(eio, addr):
    e = Event()
    e.src = mysrc()
    e.cmd = ECMD_WRITE

    e.data[0] = memdebug.rowtgt
    e.data[1] = addr
    ea = eaddr.TXDest()
    ea[eaddr.NETCONTROL] = 1
    reallysend(eio, ea, e)

    
    e = Event()
    e.src = mysrc()
    e.cmd = ECMD_READ

    e.data[0] = memdebug.rowtgt
    e.data[1] = 0
    ea = eaddr.TXDest()
    ea[eaddr.NETCONTROL] = 1
    reallysend(eio, ea, e)
    
    erx = eio.getEvents()
    assert addr == erx[0].data[1]
示例#27
0
    def sendCommandAndBlock(self, acqboardcmd):
        """
        acqboardcmd is an AcqBoardCommand object whose state represents
        the most recent state change to the board;

        we retreive the encoded string with acqboardcmd.latestString
        and the most recent commandID with .

        """

        # setup rx
        self.eio.addRXMask(self.CMDFIBERRESP, xrange(256) )

        SRC = 3

        acmdstr = acqboardcmd.latestString
        # this is a total hack, we extract out the command byte
        bytes = struct.unpack("BBBBBB", acmdstr)
        
        cmdid = bytes[0] >> 4
        cmd = bytes[0] & 0xF
        assert cmdid == acqboardcmd.cmdid
        
        self.eio.start()
        ea = eaddr.TXDest()
        ea[:] = 1
        e = Event()
        e.cmd = self.CMDFIBERCMD
        e.src = SRC
        e.data[0] = (cmdid << 8) | cmd
        e.data[1] = bytes[4] << 8 | bytes[3]
        e.data[2] = bytes[2] << 8 | bytes[1]


        ## Substantial debugging
        
        #cmdtuple = (0x50, 4, (cmdid << 8) | (cmd & 0xF), 1, 0, 0, 0)
        #self.pne.sendEvent(addrtuple, cmdtuple)
        print "sending event", e
        self.eio.sendEvent(ea, e)
        

        success = False

        while success == False:
            erx = self.eio.getEvents()
            # extract out events
            for e in erx:
                #print e
                if e.cmd == self.CMDFIBERRESP: # and e.src == self.DESTSRCID:
                    # response; extract out bits
                    cmdid = e.data[0]
                    if cmdid == acqboardcmd.cmdid:
                        success = True

        self.eio.stop()
示例#28
0
def setLED(addrs, stateon):
    e = Event()
    e.src = eaddr.NETWORK
    e.cmd = CMD
    if stateon:
        e.data[0] = 0xFFFF
    else:
        e.data[0] = 0x0000

    ea = eaddr.TXDest()
    for i in addrs:
        ea[i] = 1
    eio.sendEvent(ea, e)
示例#29
0
def readreg(val):
    e = Event()
    e.src = src
    e.cmd =  0x30
    
    e.data[0] = 0
    e.data[1] = val
    e.data[2] = 0
    e.data[3] = 0

    ea = eaddr.TXDest()
    ea[eaddr.NETCONTROL] = 1

    while True:
        try:
            eio.sendEvent(ea, e)
            break
        except IOError:
            pass
    
    erx = eio.getEvents()
    cntevt = erx[0]
    return "%4.4X %4.4X" % (cntevt.data[1], cntevt.data[2])
示例#30
0
ECMD_ECHOPROC_BENCHMARK_RESP = 0xF4


dspboardaddrs = [int(x) for x in sys.argv[1:]]

eio = NetEventIO("10.0.0.2")

eio.addRXMask(ECMD_ECHOPROC_MEMCHECK_RESP, dspboardaddrs)
eio.addRXMask(ECMD_ECHOPROC_BENCHMARK_RESP, dspboardaddrs)

eio.start()

for d in dspboardaddrs:
    print "Device %02x ----------------------------------------" % (d,)
    # Create event and set mask
    e = Event()
    e.src = eaddr.NETWORK
    e.cmd =  ECMD_ECHOPROC_MEMCHECK
    ea = eaddr.TXDest()
    ea[d] = 1

    eio.sendEvent(ea, e)

    erx = eio.getEvents()
    memsize = erx[0].data[1]
    print "heap use: %2.2fk" %  (memsize/ 1000.0 )

    # get the benchmarks:
    for i in range(3):
        eb = Event()
        eb.src = eaddr.NETWORK
示例#31
0
def digital_out(ip):

    
    addr = ADDR_DIGITAL_OUT
    eio = NetEventIO(ip)
    eio.addRXMask(xrange(256), [addr])
    eio.start()

    vals = True
    
    while True:
        e = Event()
        e.src = eaddr.NETWORK
        e.cmd =  DIGITALOUT_WRITE
        e.data[0] = 0xFFFF
        e.data[1] = 0xFFFF
        if vals:
            e.data[2] = 0xFFFF
            e.data[3] = 0xFFFF
        else:
            e.data[2] = 0x0
            e.data[3] = 0x0

        ea = eaddr.TXDest()
        ea[addr] = 1

        eio.sendEvent(ea, e)


        # now read

        e = Event()
        e.src = eaddr.NETWORK
        e.cmd =  DIGITALOUT_READ

        ea = eaddr.TXDest()
        ea[addr] = 1

        eio.sendEvent(ea, e)

        erx = eio.getEvents(blocking=True)
        for e in erx:
            print e
        vals = not vals
        time.sleep(0.2)
        
    eio.stop()
示例#32
0
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()
示例#33
0
"""
Try and PING the DSPboard
"""
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")

DSPBOARDADDR = int(sys.argv[1])

eio.addRXMask(xrange(256), DSPBOARDADDR)

eio.start()

# Create event and set mask
e = Event()
e.src = eaddr.NETWORK
e.cmd = 0xF2
e.data[0] = int(sys.argv[2])
ea = eaddr.TXDest()
ea[DSPBOARDADDR] = 1

eio.sendEvent(ea, e)

eio.stop()
示例#34
0
(options, args) = parser.parse_args()
# args are the non-captured arguments

devices = [int(x) for x in args]

if options.query:
    eio = NetEventIO("10.0.0.2")

    thresholds = {}

    for d in devices:
        eio.addRXMask(ECMD_RESPONSE, d)

    eio.start()
    for chan in range(4):
        e = Event()
        e.src = eaddr.NETWORK
        e.cmd = ECMD_QUERY
        e.data[0] = PARAM_THRESHOLD
        e.data[1] = chan

        ea = eaddr.TXDest()
        for d in devices:
            ea[d] = 1
        eio.sendEvent(ea, e)

        erx = eio.getEvents()
        for e in erx:
            if e.cmd == ECMD_RESPONSE and e.data[0] == PARAM_THRESHOLD:
                if e.src not in thresholds:
                    thresholds[e.src] = {}
示例#35
0
        # 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):
    e = Event()
    e.src = eaddr.NETWORK
    e.cmd = CMD
    e.data[0] = 0xFFFF

    ea = eaddr.TXDest()
    for i in dspaddrs:
        ea[i] = 1
    eio.sendEvent(ea, e)

    #rint "on"
    time.sleep(delay)

    e = Event()
    e.src = eaddr.NETWORK
    e.cmd = CMD
示例#36
0
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()
    ea[DSPBOARDADDR] = 1

    eio.sendEvent(ea, e)

    erx = eio.getEvents()
    for q in erx:
        print q
        #funcs[field](q)

eio.stop()
示例#37
0
ECMD_ECHOPROC_BENCHMARK = 0xF4
ECMD_ECHOPROC_BENCHMARK_RESP = 0xF4

dspboardaddrs = [int(x) for x in sys.argv[1:]]

eio = NetEventIO("10.0.0.2")

eio.addRXMask(ECMD_ECHOPROC_MEMCHECK_RESP, dspboardaddrs)
eio.addRXMask(ECMD_ECHOPROC_BENCHMARK_RESP, dspboardaddrs)

eio.start()

for d in dspboardaddrs:
    print "Device %02x ----------------------------------------" % (d, )
    # Create event and set mask
    e = Event()
    e.src = eaddr.NETWORK
    e.cmd = ECMD_ECHOPROC_MEMCHECK
    ea = eaddr.TXDest()
    ea[d] = 1

    eio.sendEvent(ea, e)

    erx = eio.getEvents()
    memsize = erx[0].data[1]
    print "heap use: %2.2fk" % (memsize / 1000.0)

    # get the benchmarks:
    for i in range(3):
        eb = Event()
        eb.src = eaddr.NETWORK
示例#38
0
from somapynet import eaddr
from somapynet.neteventio import NetEventIO

import struct
import time

eio = NetEventIO("10.0.0.2")

DSPBOARDADDR = int(sys.argv[1])

ECMD_ECHOPROC_MEMCHECK = 0xF8
ECMD_ECHOPROC_MEMCHECK_RESP = 0xF9
eio.addRXMask(ECMD_ECHOPROC_MEMCHECK_RESP, xrange(256))

eio.start()

# Create event and set mask
e = Event()
e.src = eaddr.NETWORK
e.cmd = ECMD_ECHOPROC_MEMCHECK

ea = eaddr.TXDest()
ea[DSPBOARDADDR] = 1

eio.sendEvent(ea, e)

erx = eio.getEvents()
for q in erx:
    print q
eio.stop()
示例#39
0
from somapynet import eaddr
from somapynet.neteventio import NetEventIO

import struct
import time

eio = NetEventIO("10.0.0.2")

DSPBOARDADDR = int(sys.argv[1])

eio.addRXMask(xrange(256), DSPBOARDADDR)

eio.start()

# Create event and set mask
e = Event()
e.src = eaddr.NETWORK
e.cmd =  0x37
e.data[0] = DSPBOARDADDR
e.data[1] = DSPBOARDADDR
e.data[2] = DSPBOARDADDR
e.data[3] = DSPBOARDADDR
e.data[4] = DSPBOARDADDR

ea = eaddr.TXDest()
ea[DSPBOARDADDR] = 1

eio.sendEvent(ea, e)

eio.stop()
示例#40
0
    if '-' in who:
        # this is a range
        (startstr, endstr) = who.split("-")
        for r in range(int(startstr), int(endstr) + 1):
            pingtgts.add(r)
    else:
        pingtgts.add(int(who))

for i in pingtgts:
    eio.addRXMask(xrange(256), i)
eio.addRXMask(xrange(256), xrange(1, 0x4c))

eio.start()

# Create event and set mask
e = Event()
e.src = eaddr.NETWORK
e.cmd = 0xF0
e.data[0] = 0x1234

ea = eaddr.TXDest()
for i in pingtgts:
    ea[i] = 1

eio.sendEvent(ea, e)

starttime = time.time()
PINGWAIT = 1.0
eventsrxed = []
while len(eventsrxed) < len(pingtgts):
    erx = eio.getEvents(blocking=False)
from somapynet import eaddr
from somapynet.neteventio import NetEventIO

import struct
import time

somaIP = "127.0.0.1"

eio = NetEventIO(somaIP)
dev = 40

eio.addRXMask(xrange(256), dev)

eio.start()
        
e = Event()
e.src = eaddr.NETWORK
e.cmd =  0x30
e.data[0] = 1
e.data[1] = 1
e.data[2] = 1
e.data[3] = 0

ea = eaddr.TXDest()
ea[dev] = 1
eio.sendEvent(ea, e)

for i in range(100):
    erx = eio.getEvents(blocking=True)
    for e in erx:
        print e
示例#42
0
import sys
sys.path.append("../")

from somapynet.event import Event
from somapynet import eaddr
from somapynet.neteventio import NetEventIO

eio = NetEventIO("10.0.0.2")

ECMD_PINGREQ = 0x08
ECMD_PINGRESP = 0x09
eio.addRXMask(ECMD_PINGRESP, eaddr.SYSCONTROL)

eio.start()

e = Event()
e.src = eaddr.NETWORK
e.cmd = ECMD_PINGREQ
ea = eaddr.TXDest()
ea[eaddr.SYSCONTROL] = 1
print "sending request", e

eio.sendEvent(ea, e)
eio.sendEvent(ea, e)
eio.sendEvent(ea, e)
eio.sendEvent(ea, e)
rxevents = []
while len(rxevents) < 4:
    erx = eio.getEvents()
    rxevents += erx
print "responses"
示例#43
0
from somapynet import eaddr
from somapynet.neteventio import NetEventIO
import jtag

if sys.argv[1] == "jtag":
    eio = jtag.JTAGEventIO()
    src = eaddr.JTAG
else:
    eio = NetEventIO("10.0.0.2")
    src = eaddr.NETWORK

eio.addRXMask(xrange(256), eaddr.SYSCONTROL)

eio.start()

e = Event()
e.src = src
e.cmd = 0x20
ea = eaddr.TXDest()
ea[eaddr.SYSCONTROL] = 1

eio.sendEvent(ea, e)

erx = eio.getEvents()
linkstatus_event = erx[0]
print "link status event:", linkstatus_event
# now get all of the counter events

DEVN = 4
rx_set = {}
for i in range(DEVN):
示例#44
0
for who in sys.argv[1:]:
    if '-' in who:
        # this is a range
        (startstr, endstr) = who.split("-")
        for r in range(int(startstr), int(endstr) + 1):
            stattgts.add(r)
    else:
        stattgts.add(int(who))

for i in stattgts:
    eio.addRXMask(xrange(256), i)

eio.start()

# Create event and set mask
e = Event()
e.src = eaddr.NETWORK
e.cmd = 0x40  # query link status status
e.data[0] = 0  # param 0 , link status
e.data[1] = 0

ea = eaddr.TXDest()
for i in stattgts:
    ea[i] = 1

eio.sendEvent(ea, e)

stats = {}
erx = eio.getEvents()
for q in erx:
    stats[q.src] = q.data[1]
示例#45
0
from somapynet.neteventio import NetEventIO

import struct
import time

eio = NetEventIO("10.0.0.2")
DSPBOARDADDR = int(sys.argv[1])

eio.addRXMask([0xF6], DSPBOARDADDR)

eio.start()

CMD = 0xF6
# Create event and set mask
N = 8

e = Event()
e.src = eaddr.NETWORK
e.cmd = CMD
ea = eaddr.TXDest()

ea[DSPBOARDADDR] = 1
eio.sendEvent(ea, e)

# now wait for response
erx = eio.getEvents()
for q in erx:
    print q

eio.stop()
import struct
import time

somaip = sys.argv[1]

eio = NetEventIO(somaip)

DSPBOARDADDR = int(sys.argv[2])

eio.addRXMask(xrange(256), DSPBOARDADDR)

eio.start()

# Create event and set mask
e = Event()
e.src = eaddr.NETWORK
e.cmd = 0x40  # query link status status
e.data[0] = 0  # param 0 , link status
e.data[1] = 0

ea = eaddr.TXDest()
ea[DSPBOARDADDR] = 1

eio.sendEvent(ea, e)
print "acq link status query sent, waiting for response"

erx = eio.getEvents()
for q in erx:
    print q
if erx[0].data[1] == 1: