def cmd_rd(self, ui, args, n): """memory read command for n bits""" if util.wrong_argc(ui, args, (1, )): return adr = util.sex_arg(ui, args[0], self.cpu.width) if adr == None: return adr = util.align(adr, n) ui.put('[0x%08x] = ' % adr) ui.put('0x%%0%dx\n' % (n / 4) % self.cpu.rd(adr, n))
def cmd_rd(self, ui, args, n): """memory read command for n bits""" if util.wrong_argc(ui, args, (1,)): return adr = util.sex_arg(ui, args[0], self.cpu.width) if adr == None: return adr = util.align(adr, n) ui.put('[0x%08x] = ' % adr) ui.put('0x%%0%dx\n' % (n/4) % self.cpu.rd(adr, n))
def cmd_set(self, ui, args): """set gpio (1)""" if util.wrong_argc(ui, args, (1,)): return None x = self.driver.pin_arg(args[0]) if x is None: ui.put(_invalid_gpio_name) return (port, bit) = x self.driver.set_bit(port, bit)
def cmd_set(self, ui, args): """set gpio (1)""" if util.wrong_argc(ui, args, (1, )): return None x = self.driver.pin_arg(args[0]) if x is None: ui.put(_invalid_gpio_name) return (port, bit) = x self.driver.set_bit(port, bit)
def cmd_program(self, ui, args): """program firmware file to flash""" if util.wrong_argc(ui, args, (1,)): return None x = util.file_arg(ui, args[0]) if x is None: return # erase all self.cmd_erase(ui, ('*',)) # write to flash region_name = self.driver.firmware_region() self.cmd_write(ui, (args[0], region_name)) # verify against the file self.mem.cmd_verify(ui, (args[0], region_name))
def cli_mem2display(self, app, args): """dump memory contents to the display""" if util.wrong_argc(app, args, (1, 2)): return adr = util.int_arg(app, args[0], (0, 0xffff), 16) if adr == None: return if len(args) == 2: length = util.int_arg(app, args[1], (1, 0xffff), 16) if length == None: return else: length = 0x40 self.mem2display(app, adr, length)
def cmd_wr(self, ui, args, n): """memory write command for n bits""" if util.wrong_argc(ui, args, (1, 2)): return adr = util.sex_arg(ui, args[0], self.cpu.width) if adr == None: return adr = util.align(adr, n) val = 0 if len(args) == 2: val = util.int_arg(ui, args[1], util.limit_32, 16) if val == None: return val = util.mask_val(val, n) self.cpu.wr(adr, val, n) ui.put('[0x%08x] = ' % adr) ui.put('0x%%0%dx\n' % (n / 4) % val)
def cmd_wr(self, ui, args, n): """memory write command for n bits""" if util.wrong_argc(ui, args, (1,2)): return adr = util.sex_arg(ui, args[0], self.cpu.width) if adr == None: return adr = util.align(adr, n) val = 0 if len(args) == 2: val = util.int_arg(ui, args[1], util.limit_32, 16) if val == None: return val = util.mask_val(val, n) self.cpu.wr(adr, val, n) ui.put('[0x%08x] = ' % adr) ui.put('0x%%0%dx\n' % (n/4) % val)
def cmd_regs(self, ui, args): """display peripheral registers""" if util.wrong_argc(ui, args, (1,2)): return if not self.peripherals.has_key(args[0]): ui.put("no peripheral named '%s' (run 'map' command for the names)\n" % args[0]) return p = self.peripherals[args[0]] if len(args) == 1: ui.put('%s\n' % p.display(fields = False)) return if args[1] == '*': ui.put('%s\n' % p.display(fields = True)) return if not p.registers.has_key(args[1]): ui.put("no register named '%s' (run 'regs %s' command for the names)\n" % (args[1], args[0])) return ui.put('%s\n' % p.display(args[1], fields = True))
def cmd_regs(self, ui, args): """display peripheral registers""" if util.wrong_argc(ui, args, (1, 2)): return if not args[0] in self.peripherals: ui.put("no peripheral named '%s' (run 'map' command for the names)\n" % args[0]) return p = self.peripherals[args[0]] if len(args) == 1: ui.put('%s\n' % p.display(fields=False)) return if args[1] == '*': ui.put('%s\n' % p.display(fields=True)) return if not args[1] in p.registers: ui.put("no register named '%s' (run 'regs %s' command for the names)\n" % (args[1], args[0])) return ui.put('%s\n' % p.display(args[1], fields=True))
def cmd_rd(self, ui, args): """read bytes from a device""" if util.wrong_argc(ui, args, (1, 2)): return adr = self.adr_args(ui, args) if adr == None: return n = 1 if len(args) == 2: n = util.int_arg(ui, args[1], (1, 256), 16) if n == None: return try: self.io.cmd_init(ui, None) buf = self.rd(adr, n) plural = ('', 's')[len(buf) > 1] msg = '%s (%d byte%s)' % (' '.join(['%02x' % val for val in buf]), len(buf), plural) except Error, e: msg = e
def cmd_rd(self, ui, args): """read bytes from a device""" if util.wrong_argc(ui, args, (1, 2)): return adr = self.adr_args(ui, args) if adr is None: return n = 1 if len(args) == 2: n = util.int_arg(ui, args[1], (1, 256), 16) if n is None: return try: self.io.cmd_init(ui, None) buf = self.rd(adr, n) plural = ('', 's')[len(buf) > 1] msg = '%s (%d byte%s)' % (' '.join(['%02x' % val for val in buf ]), len(buf), plural) except Error, e: msg = e
def cmd_disassemble(self, ui, args): """disassemble memory""" if util.wrong_argc(ui, args, (0, 1, 2)): return n = 16 if len(args) == 0: # read the pc self.halt() adr = self.dbgio.rdreg('pc') if len(args) >= 1: adr = util.sex_arg(ui, args[0], 32) if adr is None: return if len(args) == 2: n = util.int_arg(ui, args[1], (1, 2048), 16) if n is None: return # align the address to 32 bits adr = util.align(adr, 32) # disassemble md = iobuf.arm_disassemble(ui, adr) self.rdmem32(adr, n, md)
def cli_disassemble(self, app, args): """disassemble memory""" if util.wrong_argc(app, args, (0, 1, 2)): return length = 0x10 if len(args) == 0: adr = self.cpu._get_pc() if len(args) >= 1: adr = util.int_arg(app, args[0], (0, 0xffff), 16) if adr == None: return if len(args) == 2: length = util.int_arg(app, args[1], (1, 0xffff), 16) if length == None: return app.put('\n\n') x = adr while x < adr + length: (operation, operands, n) = self.cpu.da(x) bytes = ' '.join(['%02x' % self.cpu.mem[i] for i in range(x, x + n)]) app.put('%04x %-12s %-5s %s\n' % (x, bytes, operation, operands)) x += n
def cli_disassemble(self, app, args): """disassemble memory""" if util.wrong_argc(app, args, (0, 1, 2)): return length = 0x10 if len(args) == 0: adr = self.cpu._get_pc() if len(args) >= 1: adr = util.int_arg(app, args[0], (0, 0xffff), 16) if adr == None: return if len(args) == 2: length = util.int_arg(app, args[1], (1, 0xffff), 16) if length == None: return app.put('\n\n') x = adr while x < adr + length: (operation, operands, n) = self.cpu.da(x) bytes = ' '.join( ['%02x' % self.cpu.mem[i] for i in range(x, x + n)]) app.put('%04x %-12s %-5s %s\n' % (x, bytes, operation, operands)) x += n