diff --git a/pyocd/subcommands/run_cmd.py b/pyocd/subcommands/run_cmd.py index ed9f0e6e8..0c4fea4ad 100644 --- a/pyocd/subcommands/run_cmd.py +++ b/pyocd/subcommands/run_cmd.py @@ -62,8 +62,6 @@ def get_args(cls) -> List[argparse.ArgumentParser]: def invoke(self) -> int: """@brief Handle 'run' subcommand.""" - self._increase_logging(["pyocd.subcommands.run_cmd", __name__]) - # Create shared shutdown event for all RunServer threads self.shared_shutdown = threading.Event() @@ -96,6 +94,11 @@ def invoke(self) -> int: timelimit_triggered = False with session: + + # Increase log level to INFO if it is still at the default WARNING level + root_logger = logging.getLogger() + if root_logger.level == logging.WARNING: + root_logger.setLevel(logging.INFO) # # ToDo: load support # @@ -107,8 +110,17 @@ def invoke(self) -> int: core_number: RTTConfig(_session=session, _target=core_target, _core=core_number) for core_number, core_target in session.board.target.cores.items() } + systemview_config = SystemViewConfig(_session=session) - self._systemview = SystemViewSVDat(session=session, rtt_configs=rtt_config_list, systemview_config=systemview_config) + systemview_enabled = any( + cfg.has_rtt_config and cfg.num_systemview_channels > 0 + for cfg in rtt_config_list.values() + ) + + if systemview_enabled: + self._systemview = SystemViewSVDat(session=session, rtt_configs=rtt_config_list, systemview_config=systemview_config) + else: + self._systemview = None try: # Start up the run servers for core_number, core in session.board.target.cores.items(): @@ -170,7 +182,8 @@ def shutdown(self): LOG.warning("Run server for core %d did not terminate cleanly", server.core) # Generate SystemView output file - self._systemview.assemble_file() + if self._systemview is not None: + self._systemview.assemble_file() class RunServer(threading.Thread): @@ -211,7 +224,8 @@ def __init__(self, session: Session, core: Optional[int] = None, rtt_config: "RT try: rtt_manager = RTTManager(session=session, core=core, rtt_config=rtt_config, systemview_config=systemview_config) self._rtt_server = rtt_manager.start_server() - rtt_manager.configure_channels(stdio_handler=self._stdio_handler) + if self._rtt_server is not None: + rtt_manager.configure_channels(stdio_handler=self._stdio_handler) except RuntimeError as e: LOG.debug("RTT configuration failed for core %d: %s", self.core, e)