Example #1
0
 def send(self, data, retries=50):
     """ sends data via the RSP protocol to the device """
     self.port.write(pack(data))
     res = None
     while not res:
         res = self.port.read()
     discards = []
     while res != '+' and retries > 0:
         discards.append(res)
         self.port.write(pack(data))
         retries -= 1
         res = self.port.read()
     if len(discards) > 0: print 'send discards', discards
     if retries == 0:
         raise ValueError("retry fail")
Example #2
0
File: rsp.py Project: chaosAD/pyrsp
 def send(self, data, retries=50):
     """ sends data via the RSP protocol to the device """
     self.port.write(pack(data))
     res = None
     while not res:
         res = self.port.read()
     discards = []
     while res!='+' and retries>0:
         discards.append(res)
         self.port.write(pack(data))
         retries-=1
         res = self.port.read()
     if len(discards)>0: print 'send discards', discards
     if retries==0:
         raise ValueError("retry fail")
Example #3
0
File: rsp.py Project: wilvk/pyrsp
    def __init__(self, port, elffile=None, verbose=False):
        """ read the elf file if given by elffile, connects to the
            debugging device specified by port, and initializes itself.
        """
        self.registers = self.arch['regs']
        self.__dict__['br'] = {}
        self.__dict__['verbose'] = verbose
        # open serial connection
        self.__dict__['port'] = Debugger(
            port)  #serial.Serial(port, 115200, timeout=1)
        # parse elf for symbol table, entry point and work area
        self.__dict__['elf'] = ELF(elffile) if elffile else None
        if verbose and self.elf:
            print "work area: 0x%x" % self.elf.workarea
            print "entry: 0x%x" % self.elf.entry

        # check for signal from running target
        tmp = self.readpkt(timeout=1)
        if tmp and verbose: print 'helo', tmp

        self.port.write(pack('+'))

        tmp = self.readpkt(timeout=1)
        if tmp and verbose: print 'helo', tmp

        self.send('qSupported')
        #self.port.write(pack('qSupported:multiprocess+;qRelocInsn+'))
        feats = self.readpkt()
        if feats:
            self.feats = dict((ass.split('=') if '=' in ass else (ass, None)
                               for ass in feats.split(';')))

        # attach
        self.connect()
Example #4
0
    def __init__(self, port, elffile=None, verbose=False):
        """ read the elf file if given by elffile, connects to the
            debugging device specified by port, and initializes itself.
        """
        self.registers = self.arch['regs']
        self.__dict__['br'] = {}
        self.__dict__['verbose'] = verbose
        # open serial connection
        self.__dict__['port'] = Debugger(port) #serial.Serial(port, 115200, timeout=1)
        # parse elf for symbol table, entry point and work area
        self.__dict__['elf'] = ELF(elffile) if elffile else None
        if verbose and self.elf:
            print "work area: 0x%x" % self.elf.workarea
            print "entry: 0x%x" % self.elf.entry

        # check for signal from running target
        tmp = self.readpkt(timeout=1)
        if tmp: print 'helo', tmp

        self.port.write(pack('+'))

        tmp = self.readpkt(timeout=1)
        if tmp: print 'helo', tmp

        self.send('qSupported')
        #self.port.write(pack('qSupported:multiprocess+;qRelocInsn+'))
        feats = self.readpkt()
        if feats:
            self.feats = dict((ass.split('=') if '=' in ass else (ass,None) for ass in feats.split(';')))

        # attach
        self.connect()
Example #5
0
    def _get_feats(self):
        self.port.write(pack('+'))

        tmp = self.readpkt(timeout=1)
        if tmp: print 'helo', tmp

        self.send('qSupported')
        feats = self.readpkt()
        if feats:
            self.feats = dict((ass.split('=') if '=' in ass else (ass,None) for ass in feats.split(';')))
Example #6
0
File: rsp.py Project: stef/pyrsp
    def _get_feats(self):
        if self.ack:
            self.port.write(pack(b'+'))

        tmp = self.readpkt(timeout=1)
        if tmp and self.verbose: print('helo %s' % s(tmp))

        self.send(b'qSupported:swbreak+;vContSupported+')
        feats = self.readpkt()
        if feats:
            self.feats = dict((ass.split(b'=') if b'=' in ass else (ass,None) for ass in feats.split(b';')))
Example #7
0
File: rsp.py Project: wilvk/pyrsp
    def _get_feats(self):
        self.port.write(pack('+'))

        tmp = self.readpkt(timeout=1)
        if tmp and self.verbose: print 'helo', tmp

        self.send('qSupported')
        feats = self.readpkt()
        if feats:
            self.feats = dict((ass.split('=') if '=' in ass else (ass, None)
                               for ass in feats.split(';')))
Example #8
0
File: rsp.py Project: stef/pyrsp
    def _get_feats(self):
        if self.ack:
            self.port.write(pack(b'+'))

        tmp = self.readpkt(timeout=1)
        if tmp and self.verbose: print('helo %s' % s(tmp))

        self.send(b'qSupported:swbreak+;vContSupported+')
        feats = self.readpkt()
        if feats:
            self.feats = dict((ass.split(b'=') if b'=' in ass else (ass, None)
                               for ass in feats.split(b';')))
Example #9
0
File: rsp.py Project: stef/pyrsp
 def send(self, data, retries=50):
     """ sends data via the RSP protocol to the device """
     self.port.write(pack(data))
     self.read_ack(retries)
Example #10
0
File: rsp.py Project: stef/pyrsp
 def send(self, data, retries=50):
     """ sends data via the RSP protocol to the device """
     self.port.write(pack(data))
     self.read_ack(retries)