def do_openocd_init(self, transport): if transport not in set(['swd', 'jtag']): raise AdapterDoesntSupportTransport('unsupported transport "%s"' % (transport, )) self.openocd_transport = transport # Assume adapters support SWD adapter_supports_swd = self.adapter_info.get('supports_swd', True) # Assume adapters don't support JTAG adapter_supports_jtag = self.adapter_info.get('supports_jtag', False) # TODO: query adapter capabilities with things like cmsis-dap DAP_ID_DEVICE_VENDOR if (transport == 'swd') and (not adapter_supports_swd): raise AdapterDoesntSupportTransport(self.adapter_info, transport) if (transport == 'jtag') and (not adapter_supports_jtag): raise AdapterDoesntSupportTransport(self.adapter_info, transport) # hard coding limitations for a specific OpenOCD version # Change when OpenOCD cmsis_dap_usb jtag support is tested and verified if (transport == 'jtag') and (self.adapter_info['openocd']['interface'] == 'cmsis-dap'): raise OpenOcdDoesntSupportTransportForAdapter( self.adapter_info, transport) # See e.g. documentation/stlink-v2-1-swd.cfg orpc = self.orpc o = self.adapter_info['openocd'] ocd_intf = o['interface'] orpc.command('interface %s' % (ocd_intf, )) if ocd_intf == 'hla': hla_layout = o['hla_layout'] orpc.command('hla_layout %s' % (hla_layout, )) orpc.command( 'hla_device_desc %s' % (hex_str_literal_double_quoted(self.adapter_info['name']), )) orpc.command('hla_vid_pid 0x%04x 0x%04x' % (self.usb_device.idVendor, self.usb_device.idProduct)) orpc.command('hla_serial %s' % (hex_str_literal_double_quoted( self.usb_device.serial_number), )) else: assert (0) if ocd_intf == 'hla': if transport == 'swd': transport = 'hla_swd' elif transport == 'jtag': transport = 'hla_jtag' else: assert (0) # transport r = orpc.call('transport select %s' % (transport, )) logging.debug('trasnport select -> %r' % (r, )) self.openocd_low_level_transport = transport # adding adapter_khz to make OpenOCD happy, otherwise you'll see # Error: 156 6 core.c:1380 adapter_init(): An adapter speed is not selected in the init script. Insert a call to adapter_khz or jtag_rclk to proceed. orpc.command('adapter_khz 300')
def do_openocd_init(self, transport): if transport not in set(['swd', 'jtag']): raise AdapterDoesntSupportTransport('unsupported transport "%s"' % (transport,)) self.openocd_transport = transport # Assume adapters support SWD adapter_supports_swd = self.adapter_info.get('supports_swd', True) # Assume adapters don't support JTAG adapter_supports_jtag = self.adapter_info.get('supports_jtag', False) # TODO: query adapter capabilities with things like cmsis-dap DAP_ID_DEVICE_VENDOR if (transport == 'swd') and (not adapter_supports_swd): raise AdapterDoesntSupportTransport(self.adapter_info, transport) if (transport == 'jtag') and (not adapter_supports_jtag): raise AdapterDoesntSupportTransport(self.adapter_info, transport) # hard coding limitations for a specific OpenOCD version # Change when OpenOCD cmsis_dap_usb jtag support is tested and verified if (transport == 'jtag') and (self.adapter_info['openocd']['interface'] == 'cmsis-dap'): raise OpenOcdDoesntSupportTransportForAdapter(self.adapter_info, transport) # See e.g. documentation/stlink-v2-1-swd.cfg orpc = self.orpc o = self.adapter_info['openocd'] ocd_intf = o['interface'] orpc.command('interface %s' % (ocd_intf,)) if ocd_intf == 'hla': hla_layout = o['hla_layout'] orpc.command('hla_layout %s' % (hla_layout,)) orpc.command('hla_device_desc %s' % (hex_str_literal_double_quoted(self.adapter_info['name']),)) orpc.command('hla_vid_pid 0x%04x 0x%04x' % (self.usb_device.idVendor, self.usb_device.idProduct)) orpc.command('hla_serial %s' % (hex_str_literal_double_quoted(self.usb_device.serial_number),)) else: assert(0) if ocd_intf == 'hla': if transport == 'swd': transport = 'hla_swd' elif transport == 'jtag': transport = 'hla_jtag' else: assert(0) # transport r = orpc.call('transport select %s' % (transport,)) logging.debug('trasnport select -> %r' % (r,)) self.openocd_low_level_transport = transport # adding adapter_khz to make OpenOCD happy, otherwise you'll see # Error: 156 6 core.c:1380 adapter_init(): An adapter speed is not selected in the init script. Insert a call to adapter_khz or jtag_rclk to proceed. orpc.command('adapter_khz 300')
def multiple_adapter_msg(adapters): out = [] for (info, d) in adapters: serial = getattr(d, 'serial_number', None) adapter_str = ('%(name)s: bus_addr: %(bus)03d:%(addr)03d vid_pid: %(vid)04x:%(pid)04x' % dict(name=info['name'], bus=d.bus, addr=d.address, vid=d.idVendor, pid=d.idProduct)) if serial is not None: adapter_str += ' serial: %(serial)s' % dict(serial=hex_str_literal_double_quoted(serial)) out.append(adapter_str) return '\n'.join(out)
def print_adapters_list(adapters): out = [] for (i, (info, d)) in enumerate(adapters): serial = getattr(d, 'serial_number', None) adapter_str = ('[%(index)d] %(name)s: bus_addr: %(bus)03d:%(addr)03d vid_pid: %(vid)04x:%(pid)04x' % dict(index=i, name=info['name'], bus=d.bus, addr=d.address, vid=d.idVendor, pid=d.idProduct)) if serial is not None: adapter_str += (' serial: %(serial)s' % dict(serial=hex_str_literal_double_quoted(serial))) out.append(adapter_str) print('\n'.join(out))
def multiple_adapter_msg(adapters): out = [] for (info, d) in adapters: serial = getattr(d, 'serial_number', None) adapter_str = ( '%(name)s: bus_addr: %(bus)03d:%(addr)03d vid_pid: %(vid)04x:%(pid)04x' % dict(name=info['name'], bus=d.bus, addr=d.address, vid=d.idVendor, pid=d.idProduct)) if serial is not None: adapter_str += ' serial: %(serial)s' % dict( serial=hex_str_literal_double_quoted(serial)) out.append(adapter_str) return '\n'.join(out)
def print_adapters_list(adapters): out = [] for (i, (info, d)) in enumerate(adapters): serial = getattr(d, 'serial_number', None) adapter_str = ( '[%(index)d] %(name)s: bus_addr: %(bus)03d:%(addr)03d vid_pid: %(vid)04x:%(pid)04x' % dict(index=i, name=info['name'], bus=d.bus, addr=d.address, vid=d.idVendor, pid=d.idProduct)) if serial is not None: adapter_str += (' serial: %(serial)s' % dict(serial=hex_str_literal_double_quoted(serial))) out.append(adapter_str) print('\n'.join(out))