def __init__(self, board, port_urlWSS): threading.Thread.__init__(self) self.board = board self.target = board.target self.flash = board.flash self.abstract_socket = None self.wss_server = None self.port = 0 if isinstance(port_urlWSS, str) == True: self.wss_server = port_urlWSS else: self.port = port_urlWSS self.packet_size = 2048 self.flashData = list() self.conn = None self.lock = threading.Lock() self.shutdown_event = threading.Event() self.detach_event = threading.Event() self.quit = False if self.wss_server == None: self.abstract_socket = GDBSocket(self.port, self.packet_size) else: self.abstract_socket = GDBWebSocket(self.wss_server) self.setDaemon(True) self.start()
def __init__(self, board, port_urlWSS, options = {}): threading.Thread.__init__(self) self.board = board self.target = board.target self.flash = board.flash self.abstract_socket = None self.wss_server = None self.port = 0 if isinstance(port_urlWSS, str) == True: self.wss_server = port_urlWSS else: self.port = port_urlWSS self.break_at_hardfault = bool(options.get('break_at_hardfault', True)) self.board.target.setVectorCatchFault(self.break_at_hardfault) self.break_on_reset = options.get('break_on_reset', False) self.board.target.setVectorCatchReset(self.break_on_reset) self.step_into_interrupt = options.get('step_into_interrupt', False) self.persist = options.get('persist', False) self.packet_size = 2048 self.flashData = list() self.flashOffset = None self.conn = None self.lock = threading.Lock() self.shutdown_event = threading.Event() self.detach_event = threading.Event() self.quit = False if self.wss_server == None: self.abstract_socket = GDBSocket(self.port, self.packet_size) else: self.abstract_socket = GDBWebSocket(self.wss_server) self.setDaemon(True) self.start()
def __init__(self, board, port_urlWSS, options = {}): threading.Thread.__init__(self) self.board = board self.target = board.target self.flash = board.flash self.abstract_socket = None self.wss_server = None self.port = 0 if isinstance(port_urlWSS, str) == True: self.wss_server = port_urlWSS else: self.port = port_urlWSS self.break_at_hardfault = bool(options.get('break_at_hardfault', True)) self.board.target.setVectorCatchFault(self.break_at_hardfault) self.break_on_reset = options.get('break_on_reset', False) self.board.target.setVectorCatchReset(self.break_on_reset) self.step_into_interrupt = options.get('step_into_interrupt', False) self.persist = options.get('persist', False) self.soft_bkpt_as_hard = options.get('soft_bkpt_as_hard', False) self.chip_erase = options.get('chip_erase', None) self.hide_programming_progress = options.get('hide_programming_progress', False) self.fast_program = options.get('fast_program', False) self.packet_size = 2048 self.packet_io = None self.gdb_features = [] self.flashBuilder = None self.lock = threading.Lock() self.shutdown_event = threading.Event() self.detach_event = threading.Event() if self.wss_server == None: self.abstract_socket = GDBSocket(self.port, self.packet_size) else: self.abstract_socket = GDBWebSocket(self.wss_server) self.setDaemon(True) self.start()
def __init__(self, board, port_urlWSS, options={}): threading.Thread.__init__(self) self.board = board self.target = board.target self.flash = board.flash self.abstract_socket = None self.wss_server = None self.port = 0 if isinstance(port_urlWSS, str) == True: self.wss_server = port_urlWSS else: self.port = port_urlWSS self.break_at_hardfault = bool(options.get('break_at_hardfault', True)) self.board.target.setVectorCatchFault(self.break_at_hardfault) self.break_on_reset = options.get('break_on_reset', False) self.board.target.setVectorCatchReset(self.break_on_reset) self.step_into_interrupt = options.get('step_into_interrupt', False) self.persist = options.get('persist', False) self.soft_bkpt_as_hard = options.get('soft_bkpt_as_hard', False) self.chip_erase = options.get('chip_erase', None) self.hide_programming_progress = options.get( 'hide_programming_progress', False) self.fast_program = options.get('fast_program', False) self.enable_semihosting = options.get('enable_semihosting', False) self.telnet_port = options.get('telnet_port', 4444) self.semihost_use_syscalls = options.get('semihost_use_syscalls', False) self.server_listening_callback = options.get( 'server_listening_callback', None) self.packet_size = 2048 self.packet_io = None self.gdb_features = [] self.non_stop = False self.is_target_running = (self.target.getState() == TARGET_RUNNING) self.flashBuilder = None self.lock = threading.Lock() self.shutdown_event = threading.Event() self.detach_event = threading.Event() if self.wss_server == None: self.abstract_socket = GDBSocket(self.port, self.packet_size) else: self.abstract_socket = GDBWebSocket(self.wss_server) # Init semihosting and telnet console. if self.semihost_use_syscalls: semihost_io_handler = GDBSyscallIOHandler(self) else: # Use internal IO handler. semihost_io_handler = semihost.InternalSemihostIOHandler() self.telnet_console = semihost.TelnetSemihostIOHandler( self.telnet_port) self.semihost = semihost.SemihostAgent(self.target, io_handler=semihost_io_handler, console=self.telnet_console) self.setDaemon(True) self.start()
def __init__(self, board, port_urlWSS, options={}): threading.Thread.__init__(self) self.board = board self.target = board.target self.log = logging.getLogger('gdbserver') self.flash = board.flash self.abstract_socket = None self.wss_server = None self.port = 0 if isinstance(port_urlWSS, str) == True: self.wss_server = port_urlWSS else: self.port = port_urlWSS self.vector_catch = options.get('vector_catch', Target.CATCH_HARD_FAULT) self.board.target.setVectorCatch(self.vector_catch) self.step_into_interrupt = options.get('step_into_interrupt', False) self.persist = options.get('persist', False) self.soft_bkpt_as_hard = options.get('soft_bkpt_as_hard', False) self.chip_erase = options.get('chip_erase', None) self.hide_programming_progress = options.get('hide_programming_progress', False) self.fast_program = options.get('fast_program', False) self.enable_semihosting = options.get('enable_semihosting', False) self.telnet_port = options.get('telnet_port', 4444) self.semihost_use_syscalls = options.get('semihost_use_syscalls', False) self.server_listening_callback = options.get('server_listening_callback', None) self.serve_local_only = options.get('serve_local_only', True) self.packet_size = 2048 self.packet_io = None self.gdb_features = [] self.non_stop = False self.is_target_running = (self.target.getState() == Target.TARGET_RUNNING) self.flashBuilder = None self.lock = threading.Lock() self.shutdown_event = threading.Event() self.detach_event = threading.Event() self.target_context = self.target.getTargetContext() self.target_facade = GDBDebugContextFacade(self.target_context) self.thread_provider = None self.did_init_thread_providers = False self.current_thread_id = 0 if self.wss_server == None: self.abstract_socket = GDBSocket(self.port, self.packet_size) if self.serve_local_only: self.abstract_socket.host = 'localhost' else: self.abstract_socket = GDBWebSocket(self.wss_server) # Init semihosting and telnet console. if self.semihost_use_syscalls: semihost_io_handler = GDBSyscallIOHandler(self) else: # Use internal IO handler. semihost_io_handler = semihost.InternalSemihostIOHandler() self.telnet_console = semihost.TelnetSemihostIOHandler(self.telnet_port, self.serve_local_only) self.semihost = semihost.SemihostAgent(self.target_context, io_handler=semihost_io_handler, console=self.telnet_console) # Command handler table. # # The dict keys are the first character of the incoming command from gdb. Values are a # bi-tuple. The first element is the handler method, and the second element is the start # offset of the command string passed to the handler. # # Start offset values: # 0 - Special case: handler method does not take any parameters. # 1 - Strip off leading "$" from command. # 2 - Strip leading "$" plus character matched through this table. # 3+ - Supported, but not very useful. # self.COMMANDS = { # CMD HANDLER START DESCRIPTION '?' : (self.stopReasonQuery, 0 ), # Stop reason query. 'C' : (self.resume, 1 ), # Continue (at addr) 'c' : (self.resume, 1 ), # Continue with signal. 'D' : (self.detach, 1 ), # Detach. 'g' : (self.getRegisters, 0 ), # Read general registers. 'G' : (self.setRegisters, 2 ), # Write general registers. 'H' : (self.setThread, 2 ), # Set thread for subsequent operations. 'k' : (self.kill, 0 ), # Kill. 'm' : (self.getMemory, 2 ), # Read memory. 'M' : (self.writeMemoryHex, 2 ), # Write memory (hex). 'p' : (self.readRegister, 2 ), # Read register. 'P' : (self.writeRegister, 2 ), # Write register. 'q' : (self.handleQuery, 2 ), # General query. 'Q' : (self.handleGeneralSet, 2 ), # General set. 's' : (self.step, 1 ), # Single step. 'S' : (self.step, 1 ), # Step with signal. 'T' : (self.isThreadAlive, 1 ), # Thread liveness query. 'v' : (self.vCommand, 2 ), # v command. 'X' : (self.writeMemory, 2 ), # Write memory (binary). 'z' : (self.breakpoint, 1 ), # Insert breakpoint/watchpoint. 'Z' : (self.breakpoint, 1 ), # Remove breakpoint/watchpoint. } # Commands that kill the connection to gdb. self.DETACH_COMMANDS = ('D', 'k') self.setDaemon(True) self.start()
def __init__(self, board, port_urlWSS, options={}): threading.Thread.__init__(self) self.board = board self.target = board.target self.flash = board.flash self.abstract_socket = None self.wss_server = None self.port = 0 if isinstance(port_urlWSS, str) == True: self.wss_server = port_urlWSS else: self.port = port_urlWSS self.break_at_hardfault = bool(options.get('break_at_hardfault', True)) self.break_on_reset = options.get('break_on_reset', False) self.vector_catch = options.get('vector_catch', 'h') mask = ((Target.CATCH_HARD_FAULT if ('h' in self.vector_catch or self.break_at_hardfault) else 0) \ | (Target.CATCH_BUS_FAULT if 'b' in self.vector_catch else 0) \ | (Target.CATCH_MEM_FAULT if 'm' in self.vector_catch else 0) \ | (Target.CATCH_INTERRUPT_ERR if 'i' in self.vector_catch else 0) \ | (Target.CATCH_STATE_ERR if 's' in self.vector_catch else 0) \ | (Target.CATCH_CHECK_ERR if 'c' in self.vector_catch else 0) \ | (Target.CATCH_COPROCESSOR_ERR if 'p' in self.vector_catch else 0) \ | (Target.CATCH_CORE_RESET if ('r' in self.vector_catch or self.break_on_reset) else 0) \ | (Target.CATCH_ALL if 'a' in self.vector_catch else 0)) self.board.target.setVectorCatch(mask) self.step_into_interrupt = options.get('step_into_interrupt', False) self.persist = options.get('persist', False) self.soft_bkpt_as_hard = options.get('soft_bkpt_as_hard', False) self.chip_erase = options.get('chip_erase', None) self.hide_programming_progress = options.get( 'hide_programming_progress', False) self.fast_program = options.get('fast_program', False) self.enable_semihosting = options.get('enable_semihosting', False) self.telnet_port = options.get('telnet_port', 4444) self.semihost_use_syscalls = options.get('semihost_use_syscalls', False) self.server_listening_callback = options.get( 'server_listening_callback', None) self.serve_local_only = options.get('serve_local_only', True) self.packet_size = 2048 self.packet_io = None self.gdb_features = [] self.non_stop = False self.is_target_running = ( self.target.getState() == Target.TARGET_RUNNING) self.flashBuilder = None self.lock = threading.Lock() self.shutdown_event = threading.Event() self.detach_event = threading.Event() if self.wss_server == None: self.abstract_socket = GDBSocket(self.port, self.packet_size) if self.serve_local_only: self.abstract_socket.host = 'localhost' else: self.abstract_socket = GDBWebSocket(self.wss_server) # Init semihosting and telnet console. if self.semihost_use_syscalls: semihost_io_handler = GDBSyscallIOHandler(self) else: # Use internal IO handler. semihost_io_handler = semihost.InternalSemihostIOHandler() self.telnet_console = semihost.TelnetSemihostIOHandler( self.telnet_port, self.serve_local_only) self.semihost = semihost.SemihostAgent(self.target, io_handler=semihost_io_handler, console=self.telnet_console) self.setDaemon(True) self.start()