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")
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")
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()
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()
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(';')))
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';')))
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(';')))
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';')))
def send(self, data, retries=50): """ sends data via the RSP protocol to the device """ self.port.write(pack(data)) self.read_ack(retries)