Lines Matching refs:self
48 def __call__(self, parser, args, ignored, option): argument
49 setattr(args, self.dest, not option.startswith('--no-'))
54 def __init__(self, cfg, device, dev_id=None, argument
65 self.file = cfg.file
66 self.file_type = cfg.file_type
67 self.hex_name = cfg.hex_file
68 self.bin_name = cfg.bin_file
69 self.elf_name = cfg.elf_file
70 self.mot_name = cfg.mot_file
71 self.gdb_cmd = [cfg.gdb] if cfg.gdb else None
72 self.device = device
73 self.dev_id = dev_id
74 self.commander = commander
75 self.flash_script = flash_script
76 self.dt_flash = dt_flash
77 self.flash_sram = flash_sram
78 self.erase = erase
79 self.reset = reset
80 self.gdbserver = gdbserver
81 self.iface = iface
82 self.speed = speed
83 self.gdb_host = gdb_host
84 self.gdb_port = gdb_port
85 self.tui_arg = ['-tui'] if tui else []
86 self.loader = loader
87 self.rtt_port = rtt_port
88 self.dev_id_type = dev_id_type
90 self.tool_opt = []
93 self.tool_opt += opts
233 def print_gdbserver_message(self): argument
234 if not self.thread_info_enabled:
236 elif self.supports_thread_info:
240 self.logger.info('J-Link GDB server running on port '
243 def print_rttserver_message(self): argument
244 self.logger.info(f'J-Link RTT server running on port {self.rtt_port}')
247 def jlink_version(self): argument
255 if not hasattr(self, '_jlink_version'):
271 self.logger.warning(f'unknown platform {plat}; assuming UNIX')
274 lib = Library(dllpath=os.fspath(Path(self.commander).parent /
277 self.logger.debug('JLINKARM_GetDLLVersion()=%s', version)
280 self._jlink_version = (version // 10000,
284 return self._jlink_version
287 def jlink_version_str(self): argument
289 if not hasattr(self, '_jlink_version_str'):
290 major, minor, rev = self.jlink_version
292 self._jlink_version_str = f'{major}.{minor:02}{rev_str}'
293 return self._jlink_version_str
296 def supports_nogui(self): argument
298 return self.jlink_version >= (6, 80, 0)
301 def supports_thread_info(self): argument
303 return self.jlink_version >= (7, 11, 2)
306 def supports_loader(self): argument
307 return self.jlink_version >= (7, 70, 4)
309 def do_run(self, command, **kwargs): argument
318 self.commander = os.fspath(
319 Path(self.require(self.commander)).resolve())
320 self.logger.debug(f'JLink executable: {self.commander}')
321 self.logger.info(f'JLink version: {self.jlink_version_str}')
323 rtos = self.thread_info_enabled and self.supports_thread_info
324 plugin_dir = os.fspath(Path(self.commander).parent / 'GDBServer' /
326 big_endian = self.build_conf.getboolean('CONFIG_BIG_ENDIAN')
329 if self.dev_id:
330 if self.dev_id_type == 'auto':
332 detected_type = self._detect_dev_id_type(self.dev_id)
335 detected_type = self.dev_id_type
349 self.logger.warning(f'"{self.dev_id}" does not match any known pattern')
354 [self.gdbserver]
356 + ['-port', str(self.gdb_port)]
357 + ['-if', self.iface]
358 + ['-speed', self.speed]
359 + ['-device', self.device]
363 + (['-nogui'] if self.supports_nogui else [])
365 + ['-rtttelnetport', str(self.rtt_port)]
366 + self.tool_opt
370 self.flash(**kwargs)
372 if self.gdb_host:
374 self.require(self.gdbserver)
375 self.print_gdbserver_message()
376 self.check_call(server_cmd)
378 self.print_gdbserver_message()
379 self.print_rttserver_message()
381 server_proc = self.popen_ignore_int(server_cmd)
387 sock.connect(('localhost', self.rtt_port))
391 self.run_telnet_client('localhost', self.rtt_port, sock)
393 self.logger.error(e)
398 if self.gdb_cmd is None:
400 if self.file is not None:
401 if self.file_type != FileType.ELF:
403 elf_name = self.file
404 elif self.elf_name is None:
407 elf_name = self.elf_name
408 client_cmd = (self.gdb_cmd +
409 self.tui_arg +
416 if self.reset:
418 if not self.gdb_host:
419 self.require(self.gdbserver)
420 self.print_gdbserver_message()
421 self.run_server_and_client(server_cmd, client_cmd)
423 self.run_client(client_cmd)
425 def get_default_flash_commands(self): argument
429 'BE' if self.build_conf.getboolean('CONFIG_BIG_ENDIAN') else 'LE'
432 if self.erase:
436 if self.file is not None:
438 if not os.path.isfile(self.file):
440 raise ValueError(err.format(self.file))
442 flash_file = self.file
444 if self.file_type == FileType.HEX:
446 elif self.file_type == (FileType.BIN or FileType.MOT):
447 if self.flash_sram:
448 flash_addr = self.sram_address_from_build_conf(self.build_conf)
449 elif self.dt_flash:
450 flash_addr = self.flash_address_from_build_conf(self.build_conf)
461 if self.hex_name is not None and os.path.isfile(self.hex_name):
462 flash_file = self.hex_name
465 elif self.mot_name is not None and os.path.isfile(self.mot_name):
466 flash_file = self.mot_name
469 elif self.bin_name is not None and os.path.isfile(self.bin_name):
470 if self.flash_sram:
471 flash_addr = self.sram_address_from_build_conf(self.build_conf)
472 elif self.dt_flash:
473 flash_addr = self.flash_address_from_build_conf(self.build_conf)
476 flash_file = self.bin_name
478 elif self.elf_name is not None and os.path.isfile(self.elf_name):
479 flash_file = self.elf_name
481 elif self.mot_name is not None and os.path.isfile(self.mot_name):
482 flash_file = self.mot_name
486 raise ValueError(err.format(self.hex_name, self.bin_name))
491 if self.reset:
494 if self.flash_sram:
495 sram_addr = self.sram_address_from_build_conf(self.build_conf)
511 self.logger.debug('JLink commander script:\n' +
515 def run_flash_cmd(self, fname, flash_file, **kwargs): argument
517 if self.supports_loader and self.loader:
518 loader_details = "?" + self.loader
521 if self.dev_id:
522 if self.dev_id_type == 'auto':
524 detected_type = self._detect_dev_id_type(self.dev_id)
527 detected_type = self.dev_id_type
541 self.logger.warning(f'"{self.dev_id}" does not match any known pattern')
546 [self.commander]
548 + (['-nogui', '1'] if self.supports_nogui else [])
549 + ['-if', self.iface]
550 + ['-speed', self.speed]
551 + ['-device', self.device + loader_details]
553 + (['-nogui', '1'] if self.supports_nogui else [])
554 + self.tool_opt
558 self.logger.info(f'Flashing file: {flash_file}')
560 if not self.logger.isEnabledFor(logging.DEBUG):
562 self.check_call(cmd, **kwargs)
564 def flash(self, **kwargs): argument
565 fname = self.flash_script
570 flash_file, lines = self.get_default_flash_commands()
575 self.run_flash_cmd(fname, flash_file, **kwargs)
577 self.run_flash_cmd(fname, None, **kwargs)