|
| 1 | +# ----------------------------------------------------------------------------- |
| 2 | +""" |
| 3 | +
|
| 4 | +Makerfabs Maduino Zero (ATSAMD21G18A) |
| 5 | +
|
| 6 | +""" |
| 7 | +# ----------------------------------------------------------------------------- |
| 8 | + |
| 9 | +import cli |
| 10 | +import cortexm |
| 11 | +import mem |
| 12 | +import soc |
| 13 | +import flash |
| 14 | + |
| 15 | +import vendor.atmel.atmel as atmel |
| 16 | +import vendor.atmel.flash as flash_driver |
| 17 | + |
| 18 | +# ----------------------------------------------------------------------------- |
| 19 | + |
| 20 | +soc_name = 'ATSAMD21G18A' |
| 21 | +prompt = 'samd21' |
| 22 | + |
| 23 | +# ----------------------------------------------------------------------------- |
| 24 | + |
| 25 | +# jlink device |
| 26 | +default_itf = { |
| 27 | + 'name': 'jlink', |
| 28 | + 'vid': 0x1366, |
| 29 | + 'pid': 0x0101, |
| 30 | + 'itf': 0, |
| 31 | +} |
| 32 | + |
| 33 | +# ----------------------------------------------------------------------------- |
| 34 | + |
| 35 | +class target(object): |
| 36 | + """samd21 - Makerfabs Maduino Zero""" |
| 37 | + |
| 38 | + def __init__(self, ui, dbgio): |
| 39 | + self.ui = ui |
| 40 | + self.dbgio = dbgio |
| 41 | + self.device = atmel.get_device(self.ui, soc_name) |
| 42 | + self.dbgio.connect(self.device.cpu_info.name, 'swd') |
| 43 | + self.cpu = cortexm.cortexm(self, ui, self.dbgio, self.device) |
| 44 | + self.device.bind_cpu(self.cpu) |
| 45 | + self.mem = mem.mem(self.cpu) |
| 46 | + self.flash = flash.flash(flash_driver.flash(self.device), self.device, self.mem) |
| 47 | + |
| 48 | + self.menu_root = ( |
| 49 | + ('cpu', self.cpu.menu, 'cpu functions'), |
| 50 | + ('da', self.cpu.cmd_disassemble, cortexm.help_disassemble), |
| 51 | + ('debugger', self.dbgio.menu, 'debugger functions'), |
| 52 | + ('exit', self.cmd_exit), |
| 53 | + ('flash', self.flash.menu, 'flash functions'), |
| 54 | + ('go', self.cpu.cmd_go), |
| 55 | + ('halt', self.cpu.cmd_halt), |
| 56 | + ('help', self.ui.cmd_help), |
| 57 | + ('history', self.ui.cmd_history, cli.history_help), |
| 58 | + ('map', self.device.cmd_map), |
| 59 | + ('mem', self.mem.menu, 'memory functions'), |
| 60 | + ('program', self.flash.cmd_program, flash.help_program), |
| 61 | + ('regs', self.cmd_regs, soc.help_regs), |
| 62 | + ('vtable', self.cpu.cmd_vtable), |
| 63 | + ) |
| 64 | + |
| 65 | + self.ui.cli.set_root(self.menu_root) |
| 66 | + self.set_prompt() |
| 67 | + self.dbgio.cmd_info(self.ui, None) |
| 68 | + |
| 69 | + def cmd_regs(self, ui, args): |
| 70 | + """display registers""" |
| 71 | + if len(args) == 0: |
| 72 | + self.cpu.cmd_regs(ui, args) |
| 73 | + else: |
| 74 | + self.device.cmd_regs(ui, args) |
| 75 | + |
| 76 | + def set_prompt(self): |
| 77 | + indicator = ('*', '')[self.dbgio.is_halted()] |
| 78 | + self.ui.cli.set_prompt('%s%s> ' % (prompt, indicator)) |
| 79 | + |
| 80 | + def cmd_exit(self, ui, args): |
| 81 | + """exit application""" |
| 82 | + self.dbgio.disconnect() |
| 83 | + ui.exit() |
| 84 | + |
| 85 | +# ----------------------------------------------------------------------------- |
0 commit comments