pyedbglib.protocols¶
pyedbglib.protocols.ati¶
Wrapper for the Asynchronous Transport Interface (ATI)
- class pyedbglib.protocols.ati.AsynchronousTransportInterface(transport)¶
- Bases: - DapWrapper- Generic wrapper class for the Asynchronous Transport Interface (ATI) - read_buffer(buffer_id, num_bytes=None, buffer_type=0)¶
- Read data from a buffer. Will handle chopping of data reads to suit USB endpoint size - Parameters:
- buffer_id – ID of buffer to read from 
- num_bytes – Number of bytes to read from the buffer 
- buffer_type – ATI_CTRL_TYPE_DATA, ATI_CTRL_TYPE_METADATA, ATI_CTRL_TYPE_CMDRSP or ATI_CTRL_TYPE_SYS 
 
- Returns:
- bytearray of data bytes read from the buffer 
 
 - read_data_buffer(buffer_id, num_bytes=None)¶
- Read data from data buffer - Parameters:
- buffer_id – ID of data buffer to read from 
- num_bytes – Number of bytes to read from buffer 
 
- Returns:
- bytearray of data bytes read from buffer 
 
 - read_metadata_buffer(buffer_id, num_bytes=None)¶
- Read data from metadata buffer - Parameters:
- buffer_id – ID of metadata buffer to read from 
- num_bytes – Number of bytes to read from buffer 
 
- Returns:
- bytearray of databytes read from buffer 
 
 - read_response_buffer(num_bytes=None)¶
- Read data from the response buffer - Parameters:
- num_bytes – Number of bytes to read from buffer 
- Returns:
- bytearray of data bytes read from the buffer 
 
 - receive_fragment(buffer_id, flags, bytes_to_receive)¶
- Receive data fragment from buffer. Limited by USB endpoint size - Parameters:
- buffer_id – ID of buffer to receive from 
- flags – BIT: | 7 | 6 | 5 | 4 3 | 2 1 0 | USE: | read | EOF | SOF | buffer_type | Buffer ID | 
- bytes_to_receive – Number of bytes to read from the buffer 
 
- Returns:
- bytearray of data bytes read from the buffer 
 
 - send_fragment(buffer_id, flags, data)¶
- Send a fragment of data to a buffer. Limited by USB endpoint size - Parameters:
- buffer_id – ID of buffer to send data to 
- flags – BIT: | 7 | 6 | 5 | 4 3 | 2 1 0 | USE: | read | EOF | SOF | buffer_type | Buffer ID | 
- data – bytearray of data bytes to write to the buffer 
 
 
 - write_buffer(buffer_id, data, buffer_type=0)¶
- Write data to a buffer. Will handle chopping of data to suit USB endpoint size - Parameters:
- buffer_id – ID of buffer to write data to 
- data – bytearray of data bytes to be written 
- buffer_type – ATI_CTRL_TYPE_DATA, ATI_CTRL_TYPE_METADATA, ATI_CTRL_TYPE_CMDRSP or ATI_CTRL_TYPE_SYS 
 
 
 - write_command_buffer(data)¶
- Write data to command buffer - Parameters:
- data – bytearray of data bytes to write to the buffer 
 
 - write_data_buffer(buffer_id, data)¶
- Write data to data buffer - Parameters:
- buffer_id – ID of data buffer to write to 
- data – bytearray of data bytes to write to buffer 
 
 
 - write_metadata_buffer(buffer_id, data)¶
- Write data to metadata buffer - Parameters:
- buffer_id – ID of metadata buffer to write to 
- data – Data bytes to be written to the buffer (bytearray) 
 
 
 
- pyedbglib.protocols.ati.get_ati_header(handler, handler_variant=0)¶
- Generates an ATI header for an ATI consumer - Parameters:
- handler – Which handler to invoke 
- handler_variant – Variant (flags) of that handler 
 
- Returns:
- ATI header frame (bytearray) 
 
pyedbglib.protocols.avr32protocol¶
Implements Avr32 Protocol, a sub-protocol in the JTAGICE3 family of protocols.
- class pyedbglib.protocols.avr32protocol.Avr32Protocol(transport)¶
- Bases: - Jtagice3Protocol- Implements AVR32 protocol functionality on the JTAGICE3 protocol family - AVR32_AWIRE_BASE = 16¶
 - AVR32_CONTEXT_DEVICE = 130¶
 - AVR32_CONTEXT_PHYSICAL = 128¶
 - AVR32_CONTEXT_SESSION = 4¶
 - AVR32_CONTEXT_USB = 3¶
 - AVR32_FAILURE_OK = 0¶
 - AVR32_FLASH_CTRL_BASE = 2¶
 - AVR32_FLASH_PAGEBYTES = 6¶
 - AVR32_FLASH_PAGES = 11¶
 - AVR32_MEMTYPE_BLOCK = 131¶
 - AVR32_MEMTYPE_BYTE = 132¶
 - AVR32_MEMTYPE_FUSES = 148¶
 - AVR32_MEMTYPE_HALF_WORD = 133¶
 - AVR32_MEMTYPE_INTERNAL_FLASH = 144¶
 - AVR32_MEMTYPE_MEMORY_SERVICE = 130¶
 - AVR32_MEMTYPE_NEXUS = 129¶
 - AVR32_MEMTYPE_REGFILE = 146¶
 - AVR32_MEMTYPE_SAB = 128¶
 - AVR32_MEMTYPE_SYSREG = 145¶
 - AVR32_MEMTYPE_USER_PAGE = 147¶
 - AVR32_PHYSICAL_AWIRE_BAUD = 4¶
 - AVR32_PHYSICAL_AWIRE_MAX_BAUD = 2¶
 - AVR32_PHYSICAL_AWIRE_VERSION = 5¶
 - AVR32_PHYSICAL_DAISY = 3¶
 - AVR32_PHYSICAL_EXTERNAL_RESET = 12¶
 - AVR32_PHYSICAL_JTAG_CLOCK = 1¶
 - AVR32_PHYSICAL_PHYSICAL = 0¶
 - AVR32_PHY_INTF_AWIRE = 7¶
 - AVR32_PHY_INTF_JTAG = 4¶
 - AVR32_PHY_INTF_NONE = 0¶
 - AVR32_QUERY_COMMANDS = 0¶
 - AVR32_QUERY_COMMAND_VERSIONS = 8¶
 - AVR32_QUERY_CONFIGURATION = 5¶
 - AVR32_QUERY_DEVICE = 4¶
 - AVR32_QUERY_FAMILIES = 1¶
 - AVR32_QUERY_FUNCTIONS = 2¶
 - AVR32_QUERY_INTERFACES = 3¶
 - AVR32_QUERY_READ_MEMTYPES = 6¶
 - AVR32_QUERY_WRITE_MEMTYPES = 7¶
 - AVR32_RESET_DOMAINS = 10¶
 - AVR32_SESSION_RUN_LED = 0¶
 - AVR32_TAP_DR = 1¶
 - AVR32_TAP_IR = 0¶
 - AVR32_USB_MAX_READ = 0¶
 - AVR32_USB_MAX_WRITE = 1¶
 - CMD_AVR32_ACTIVATE_PHYSICAL = 3¶
 - CMD_AVR32_DEACTIVATE_PHYSICAL = 4¶
 - CMD_AVR32_ERASE = 17¶
 - CMD_AVR32_ERASE_SECTION = 25¶
 - CMD_AVR32_GET = 2¶
 - CMD_AVR32_GET_ID = 16¶
 - CMD_AVR32_HALT = 18¶
 - CMD_AVR32_IS_PROTECTED = 24¶
 - CMD_AVR32_QUERY = 0¶
 - CMD_AVR32_READ = 21¶
 - CMD_AVR32_RESET = 19¶
 - CMD_AVR32_SET = 1¶
 - CMD_AVR32_STEP = 20¶
 - CMD_AVR32_TAP = 23¶
 - CMD_AVR32_WRITE = 22¶
 - RSP_AVR32_DATA = 132¶
 - RSP_AVR32_DATA_PROBED = 133¶
 - RSP_AVR32_FAILED = 160¶
 - RSP_AVR32_ID = 130¶
 - RSP_AVR32_LIST = 129¶
 - RSP_AVR32_OK = 128¶
 - RSP_AVR32_PC = 131¶
 - activate_physical(use_reset=False)¶
- Activates the physical interface - Parameters:
- use_reset – reset 
 
 - deactivate_physical()¶
- Deactivates the physical interface 
 - erase()¶
- Chip erase 
 - get_id()¶
- Reads the device ID - Returns:
- device ID 
 
 - halt(value)¶
- Apply a Halt request to the device 
 - is_protected()¶
- Checks if the device is protected - Returns:
- boolean True if protected, False if not 
 
 - jtag_dr(bits, data)¶
- Raw JTAG DR operation - Parameters:
- bits – number of bits to shift 
- data – data to shift 
 
- Returns:
- data shifted out 
 
 - jtag_ir(bits, data)¶
- Raw JTAG IR operation - Parameters:
- bits – number of bits to shift 
- data – data to shift 
 
 
 - memory_read(memtype, address, num_bytes)¶
- Read memory form the target - Parameters:
- memtype – memory type (section) 
- address – start address 
- num_bytes – number of bytes 
 
- Returns:
- memory read 
 
 - memory_write(memtype, address, data)¶
- Write memory to target - Parameters:
- memtype – memory type / region to access 
- address – start address 
- data – data to write 
 
 
 - reset(value)¶
- Apply a Reset request to the device 
 - step()¶
- Single steps the device - Returns:
- new PC value 
 
 
pyedbglib.protocols.avr32protocolerrors¶
Mapping AVR32protocol error codes to more human friendly strings
pyedbglib.protocols.avr8protocol¶
Implements Avr8Protocol, a sub-protocol in the JTAGICE3 family of protocols.
- class pyedbglib.protocols.avr8protocol.Avr8Protocol(transport)¶
- Bases: - Jtagice3Protocol- Implements AVR8 protocol functionality on the JTAGICE3 protocol family. - AVR8_CONFIG_FUNCTION = 1¶
 - AVR8_CONFIG_VARIANT = 0¶
 - AVR8_CTXT_CONFIG = 0¶
 - AVR8_CTXT_DEVICE = 2¶
 - AVR8_CTXT_OPTIONS = 3¶
 - AVR8_CTXT_PHYSICAL = 1¶
 - AVR8_CTXT_SESSION = 4¶
 - AVR8_CTXT_TEST = 128¶
 - AVR8_FAILURE_ACK_ERROR = 71¶
 - AVR8_FAILURE_BOOT_ERROR = 70¶
 - AVR8_FAILURE_CLOCK_ERROR = 33¶
 - AVR8_FAILURE_COLLISION = 26¶
 - AVR8_FAILURE_CRC_FAILURE = 67¶
 - AVR8_FAILURE_CS_ERROR = 66¶
 - AVR8_FAILURE_DAISY_CHAIN_CONFIG = 37¶
 - AVR8_FAILURE_DAISY_CHAIN_TOO_LONG = 36¶
 - AVR8_FAILURE_DMA_ERROR = 29¶
 - AVR8_FAILURE_DW_PHY_ERROR = 16¶
 - AVR8_FAILURE_EB_ERROR = 24¶
 - AVR8_FAILURE_FRAMING_ERROR = 28¶
 - AVR8_FAILURE_ILLEGAL_BREAKPOINT = 128¶
 - AVR8_FAILURE_ILLEGAL_ID = 58¶
 - AVR8_FAILURE_ILLEGAL_MEMORY_RANGE = 56¶
 - AVR8_FAILURE_ILLEGAL_OCD_STATUS = 61¶
 - AVR8_FAILURE_ILLEGAL_STATE = 50¶
 - AVR8_FAILURE_ILLEGAL_VALUE = 57¶
 - AVR8_FAILURE_INVALID_ADDRESS = 54¶
 - AVR8_FAILURE_INVALID_ALIGNMENT = 55¶
 - AVR8_FAILURE_INVALID_CLOCK_SPEED = 59¶
 - AVR8_FAILURE_INVALID_CONFIG = 51¶
 - AVR8_FAILURE_INVALID_MEMTYPE = 52¶
 - AVR8_FAILURE_INVALID_PHYSICAL_STATE = 49¶
 - AVR8_FAILURE_INVALID_SIZE = 53¶
 - AVR8_FAILURE_JTAGM_ERROR = 18¶
 - AVR8_FAILURE_JTAGM_INIT_ERROR = 17¶
 - AVR8_FAILURE_JTAGM_TIMEOUT = 21¶
 - AVR8_FAILURE_JTAGM_VERSION = 20¶
 - AVR8_FAILURE_JTAG_BIT_BANGER_TIMEOUT = 22¶
 - AVR8_FAILURE_JTAG_ERROR = 19¶
 - AVR8_FAILURE_KEY_ERROR = 69¶
 - AVR8_FAILURE_NOT_ATTACHED = 35¶
 - AVR8_FAILURE_NOT_IMPLEMENTED = 145¶
 - AVR8_FAILURE_NOT_SUPPORTED = 144¶
 - AVR8_FAILURE_NO_DEVICE_FOUND = 32¶
 - AVR8_FAILURE_NO_OCD_CONTROL = 80¶
 - AVR8_FAILURE_NO_TARGET_POWER = 34¶
 - AVR8_FAILURE_NO_VOUT_SET = 82¶
 - AVR8_FAILURE_NVM_DISABLE = 65¶
 - AVR8_FAILURE_NVM_ENABLE = 64¶
 - AVR8_FAILURE_OCD_LOCKED = 68¶
 - AVR8_FAILURE_OK = 0¶
 - AVR8_FAILURE_PARITY_ERROR = 23¶
 - AVR8_FAILURE_PC_READ_FAILED = 96¶
 - AVR8_FAILURE_PDI_ENABLE = 27¶
 - AVR8_FAILURE_PDI_TIMEOUT = 25¶
 - AVR8_FAILURE_PLEASE_TOGGLE_POWER = 81¶
 - AVR8_FAILURE_READ_ERROR = 112¶
 - AVR8_FAILURE_REGISTER_READ_FAILED = 97¶
 - AVR8_FAILURE_TIMEOUT = 60¶
 - AVR8_FAILURE_TOO_MANY_BREAKPOINTS = 129¶
 - AVR8_FAILURE_UNKNOWN = 255¶
 - AVR8_FAILURE_VOUT_ERROR = 83¶
 - AVR8_FAILURE_VTG_TOO_LOW_FOR_FEATURE = 84¶
 - AVR8_FAILURE_WRITE_ERROR = 113¶
 - AVR8_FAILURE_WRITE_TIMEOUT = 114¶
 - AVR8_FUNC_DEBUGGING = 2¶
 - AVR8_FUNC_NONE = 0¶
 - AVR8_FUNC_PROGRAMMING = 1¶
 - AVR8_MEMTYPE_APPL_FLASH = 192¶
 - AVR8_MEMTYPE_APPL_FLASH_ATOMIC = 194¶
 - AVR8_MEMTYPE_BOOT_FLASH = 193¶
 - AVR8_MEMTYPE_BOOT_FLASH_ATOMIC = 195¶
 - AVR8_MEMTYPE_BOOT_ROW = 200¶
 - AVR8_MEMTYPE_CALIBRATION_SIGNATURE = 198¶
 - AVR8_MEMTYPE_CAN = 182¶
 - AVR8_MEMTYPE_CS = 208¶
 - AVR8_MEMTYPE_EEPROM = 34¶
 - AVR8_MEMTYPE_EEPROM_ATOMIC = 196¶
 - AVR8_MEMTYPE_EEPROM_PAGE = 177¶
 - AVR8_MEMTYPE_FLASH_PAGE = 176¶
 - AVR8_MEMTYPE_FUSES = 178¶
 - AVR8_MEMTYPE_IO_SHADOW = 48¶
 - AVR8_MEMTYPE_LOCKBITS = 179¶
 - AVR8_MEMTYPE_OCD = 209¶
 - AVR8_MEMTYPE_OCD_PC = 20¶
 - AVR8_MEMTYPE_OCD_SP = 24¶
 - AVR8_MEMTYPE_OCD_SREG = 28¶
 - AVR8_MEMTYPE_OSCCAL = 181¶
 - AVR8_MEMTYPE_REGFILE = 184¶
 - AVR8_MEMTYPE_SIB = 211¶
 - AVR8_MEMTYPE_SIGNATURE = 180¶
 - AVR8_MEMTYPE_SPM = 160¶
 - AVR8_MEMTYPE_SRAM = 32¶
 - AVR8_MEMTYPE_TBUS = 183¶
 - AVR8_MEMTYPE_USER_SIGNATURE = 197¶
 - AVR8_OPT_12V_UPDI_ENABLE = 6¶
 - AVR8_OPT_CHIP_ERASE_TO_ENTER = 7¶
 - AVR8_OPT_DISABLE_DBP = 1¶
 - AVR8_OPT_ENABLE_IDR = 3¶
 - AVR8_OPT_HV_UPDI_ENABLE = 6¶
 - AVR8_OPT_POLL_INT = 4¶
 - AVR8_OPT_POWER_NAP = 5¶
 - AVR8_OPT_RUN_TIMERS = 0¶
 - AVR8_PHY_DW_CLK_DIV = 16¶
 - AVR8_PHY_INTERFACE = 0¶
 - AVR8_PHY_INTF_DW = 5¶
 - AVR8_PHY_INTF_JTAG = 4¶
 - AVR8_PHY_INTF_NONE = 0¶
 - AVR8_PHY_INTF_PDI = 6¶
 - AVR8_PHY_INTF_PDI_1W = 8¶
 - AVR8_PHY_INTF_PDI_3W = 10¶
 - AVR8_PHY_JTAG_DAISY = 1¶
 - AVR8_PHY_MEGA_DBG_CLK = 33¶
 - AVR8_PHY_MEGA_PRG_CLK = 32¶
 - AVR8_PHY_XM_JTAG_CLK = 48¶
 - AVR8_PHY_XM_PDI_CLK = 49¶
 - AVR8_TEST_TGT_RUNNING = 0¶
 - AVR8_VARIANT_LOOPBACK = 0¶
 - AVR8_VARIANT_MEGAOCD = 2¶
 - AVR8_VARIANT_NONE = 255¶
 - AVR8_VARIANT_TINYOCD = 1¶
 - AVR8_VARIANT_TINYX = 5¶
 - AVR8_VARIANT_UPDI = 5¶
 - AVR8_VARIANT_XMEGA = 3¶
 - CMD_AVR8_ACTIVATE_PHYSICAL = 16¶
 - CMD_AVR8_ATTACH = 19¶
 - CMD_AVR8_CRC = 36¶
 - CMD_AVR8_DEACTIVATE_PHYSICAL = 17¶
 - CMD_AVR8_DETACH = 20¶
 - CMD_AVR8_DISABLE_DEBUGWIRE = 23¶
 - CMD_AVR8_ERASE = 32¶
 - CMD_AVR8_EXECUTE_PATCH = 112¶
 - CMD_AVR8_GET = 2¶
 - CMD_AVR8_GET_ID = 18¶
 - CMD_AVR8_HW_BREAK_CLEAR = 65¶
 - CMD_AVR8_HW_BREAK_SET = 64¶
 - CMD_AVR8_MEMORY_READ = 33¶
 - CMD_AVR8_MEMORY_READ_MASKED = 34¶
 - CMD_AVR8_MEMORY_WRITE = 35¶
 - CMD_AVR8_PAGE_ERASE = 80¶
 - CMD_AVR8_PC_READ = 53¶
 - CMD_AVR8_PC_WRITE = 54¶
 - CMD_AVR8_PROG_MODE_ENTER = 21¶
 - CMD_AVR8_PROG_MODE_LEAVE = 22¶
 - CMD_AVR8_QUERY = 0¶
 - CMD_AVR8_RESET = 48¶
 - CMD_AVR8_RUN = 50¶
 - CMD_AVR8_RUN_TO_ADDRESS = 51¶
 - CMD_AVR8_SET = 1¶
 - CMD_AVR8_STEP = 52¶
 - CMD_AVR8_STOP = 49¶
 - CMD_AVR8_SW_BREAK_CLEAR = 68¶
 - CMD_AVR8_SW_BREAK_CLEAR_ALL = 69¶
 - CMD_AVR8_SW_BREAK_SET = 67¶
 - ERASE_APP = 1¶
 - ERASE_APP_PAGE = 4¶
 - ERASE_BOOT = 2¶
 - ERASE_BOOT_PAGE = 5¶
 - ERASE_CHIP = 0¶
 - ERASE_EEPROM = 3¶
 - ERASE_EEPROM_PAGE = 6¶
 - ERASE_USERSIG = 7¶
 - EVT_AVR8_BREAK = 64¶
 - EVT_AVR8_BREAK_CAUSE = 5¶
 - EVT_AVR8_BREAK_EVT_ID = 0¶
 - EVT_AVR8_BREAK_EXT_INFO = 6¶
 - EVT_AVR8_BREAK_PC = 1¶
 - EVT_AVR8_IDR = 65¶
 - RSP_AVR8_DATA = 132¶
 - RSP_AVR8_FAILED = 160¶
 - RSP_AVR8_LIST = 129¶
 - RSP_AVR8_OK = 128¶
 - RSP_AVR8_PC = 131¶
 - UPDI_12V_NONE = 0¶
 - UPDI_HV_AUTO_POWER_TOGGLE = 2¶
 - UPDI_HV_NONE = 0¶
 - UPDI_HV_SIMPLE_PULSE = 1¶
 - UPDI_HV_USER_POWER_TOGGLE = 3¶
 - activate_physical(use_reset=False)¶
- Activates the physical interface - Parameters:
- use_reset – reset 
 
 - attach(do_break=False)¶
- Attaches the debugger to the target - Parameters:
- do_break – break execution on attach? 
 
 - configure_daisy_chain(settings)¶
- Sets the daisy-chain fields in the physical context - Parameters:
- settings – array of daisy-chain info 
 
 - deactivate_physical()¶
- Deactivates the physical interface 
 - debugwire_disable()¶
- Disables debugWIRE interface temporarily 
 - decode_break_event(event)¶
- Decodes a break event in JTAGICE3 format
- BRK 0x40 version PC[0] PC[1] PC[2] PC[3] cause ext-info H ext-info L 
 - Parameters:
- event – event information for parsing 
- Returns:
- Program Counter value if it is a break event, None otherwise 
 
 - detach()¶
- Detaches the debugger from the target 
 - enter_progmode()¶
- Enters programming mode 
 - erase(mode=0, address=0)¶
- Erase target flash - Parameters:
- mode – flash erase mode to use 
- address – start address to erase from 
 
 
 - error_as_string(code)¶
- Get the response error as a string (error code translated to descriptive string) - Returns:
- error code as descriptive string 
 
 - get_id()¶
- Reads the device ID - Returns:
- device ID 
 
 - leave_progmode()¶
- Exits programming mode 
 - memory_read(memtype, address, num_bytes)¶
- Read memory form the target - Parameters:
- memtype – memory type (section) 
- address – start address 
- num_bytes – number of bytes 
 
- Returns:
- memory read 
 
 - memory_write(memtype, address, data)¶
- Write memory to target - Parameters:
- memtype – memory type / region to access 
- address – start address 
- data – data to write 
 
 
 - program_counter_read()¶
- Reads out the program counter - Returns:
- PC value 
 
 - program_counter_write(program_counter)¶
- Writes the program counter - Parameters:
- program_counter – new program counter value 
 
 - regfile_read()¶
- Reads out the AVR register file (R0::R31) - Returns:
- 32 bytes of register file content as bytearray 
 
 - regfile_write(data)¶
- Writes the AVR registe file (R0::R31) - Parameters:
- data – 32 byte register file content as bytearray 
- Raises:
- ValueError – if 32 bytes are not given 
 
 - reset()¶
- Resets the core and holds it in reset 
 - run()¶
- Resumes core execution 
 - run_to(address)¶
- Runs to the given address. - A BREAK event will be generated when/if it reaches the address. - Parameters:
- address – address to run to 
 
 - set_function(debugger_function)¶
- Sets the function field in the config context - Parameters:
- debugger_function – function of this session (prog / debug) 
 
 - set_interface(interface)¶
- Sets the function field in the physical context - Parameters:
- interface – physical interface setting 
 
 - set_variant(variant)¶
- Sets the variant field in the config context - Parameters:
- variant – type of device 
 
 - software_breakpoint_clear(address)¶
- Removes a software breakpoint from the given address - Parameters:
- address – breakpoint address 
 
 - software_breakpoint_clear_all()¶
- Clears all software breakpoints 
 - software_breakpoint_set(address)¶
- Insert a software breakpoint at the given address - Parameters:
- address – breakpoint address 
 
 - step()¶
- Executes a single-step on the core. - A BREAK event will be generated when it has completed. This behaviour originates from previous debuggers which could do C level stepping which took time. 
 - stop()¶
- Requests a core halt. - A BREAK even will be generated when it has successfully stopped. 
 - write_device_data(data)¶
- Write device info into the device context - Parameters:
- data – device data content 
 
 
pyedbglib.protocols.avr8protocolerrors¶
Mapping AVR8protocol error codes to more human friendly strings
pyedbglib.protocols.avrcmsisdap¶
CMSIS-DAP wrapper for custom commands (using vendor extensions) This mechanism is used to pass JTAGICE3-style commands for AVR devices over the CMSIS-DAP interface
- class pyedbglib.protocols.avrcmsisdap.AvrCommand(transport, no_timeouts=False)¶
- Bases: - CmsisDapUnit- Wraps AVR command and responses - AVR_CMD_COMMAND_HEADER_CMD = 0¶
 - AVR_CMD_COMMAND_HEADER_FRAGMENT_NUMBER = 1¶
 - AVR_CMD_COMMAND_HEADER_PAYLOAD_START = 4¶
 - AVR_CMD_COMMAND_HEADER_SIZE = 2¶
 - AVR_CMD_RESPONSE_FRAGMENT_CODE = 1¶
 - AVR_CMD_RESPONSE_HEADER_CMD = 0¶
 - AVR_COMMAND = 128¶
 - AVR_COMMAND_RESPONSE_MAX_PAYLOAD = 512¶
 - AVR_EVENT = 130¶
 - AVR_EVENT_COMMAND_HEADER_EVT = 0¶
 - AVR_EVENT_RESPONSE_HEADER_EVT = 0¶
 - AVR_EVENT_RESPONSE_HEADER_PAYLOAD_START = 3¶
 - AVR_EVENT_RESPONSE_HEADER_SIZE = 1¶
 - AVR_EVENT_RESPONSE_MAX_SIZE = 61¶
 - AVR_EVENT_RESPONSE_MIN_SIZE = 6¶
 - AVR_FINAL_FRAGMENT = 1¶
 - AVR_MORE_FRAGMENTS = 0¶
 - AVR_RESPONSE = 129¶
 - AVR_RETRY_DELAY_MS = 50¶
 - AVR_RSP_COMMAND_HEADER_RSP = 0¶
 - AVR_RSP_RESPONSE_HEADER_FRAGMENT_NUMBER = 1¶
 - AVR_RSP_RESPONSE_HEADER_PAYLOAD_START = 4¶
 - AVR_RSP_RESPONSE_HEADER_RSP = 0¶
 - AVR_RSP_RESPONSE_HEADER_SIZE = 2¶
 - avr_command_response(command)¶
- Sends an AVR command and receives a response - Parameters:
- command – Command bytes to send 
- Returns:
- Response bytes received 
 
 - poll_events()¶
- Polling for events from AVRs - Returns:
- bytearray containing a received event, or None 
 
 
- exception pyedbglib.protocols.avrcmsisdap.AvrCommandError¶
- Bases: - Exception- Exception type for AVR command-response wrapping 
pyedbglib.protocols.avrispprotocol¶
Simple wrapper for AVR ISP programming protocol over JTAGICE3 transport
- Important note:
- The AVR ISP protocol dates back to very early AVR devices. Many of the parametric information included in the protocol metadata applies only to those old devices. This is not a universal implementation, and does not draw any such information from the XML descriptions included in Atmel Studio (ATDF) and MPLABX. It does work on ATmega328P and close relatives. 
TODO: use SPI CLOCK settings TODO: add more memory types
- class pyedbglib.protocols.avrispprotocol.AvrIspProtocol(transport)¶
- Bases: - Jtagice3Protocol- Protocol wrapper - AVR_ERASE_COMMAND = [172, 128]¶
 - AVR_ERASE_DELAY = 45¶
 - AVR_ERASE_POLLMODE = 1¶
 - AVR_LOAD_PAGE_COMMAND = 64¶
 - AVR_POLL_VALUE = 83¶
 - AVR_POST_LEAVE_DELAY_MS = 1¶
 - AVR_PRE_LEAVE_DELAY_MS = 1¶
 - AVR_PROG_ENABLE_COMMAND = [172, 83, 0, 0]¶
 - AVR_READ_CALIBRATION_BYTE_COMMAND = [56, 0, 0, 0]¶
 - AVR_READ_EEPROM_COMMAND = 160¶
 - AVR_READ_FLASH_COMMAND = 32¶
 - AVR_READ_FUSE_COMMANDS = [[80, 0, 0, 0], [88, 8, 0, 0], [80, 8, 0, 0]]¶
 - AVR_READ_LOCK_COMMAND = [88, 0, 0, 0]¶
 - AVR_READ_SIGNATURE_COMMAND = [48, 0, 0, 0]¶
 - AVR_REPLY_OFFSET = 3¶
 - AVR_WRITE_FUSE_COMMANDS = [[172, 160, 0], [172, 168, 0], [172, 164, 0]]¶
 - AVR_WRITE_LOCK_COMMAND = [172, 224, 0]¶
 - AVR_WRITE_PAGE_COMMAND = 76¶
 - BYTE_DELAY = 0¶
 - FUNC_DELAY = 25¶
 - PIN_DELAY = 100¶
 - SPI_CMD_CHIP_ERASE = 18¶
 - SPI_CMD_ENTER_PROGMODE = 16¶
 - SPI_CMD_GET_BAUD = 30¶
 - SPI_CMD_LEAVE_PROGMODE = 17¶
 - SPI_CMD_LOAD_ADDRESS = 6¶
 - SPI_CMD_PROGRAM_EEPROM = 21¶
 - SPI_CMD_PROGRAM_FLASH = 19¶
 - SPI_CMD_PROGRAM_FUSE = 23¶
 - SPI_CMD_PROGRAM_LOCK = 25¶
 - SPI_CMD_READ_EEPROM = 22¶
 - SPI_CMD_READ_FLASH = 20¶
 - SPI_CMD_READ_FUSE = 24¶
 - SPI_CMD_READ_LOCK = 26¶
 - SPI_CMD_READ_OSCCAL = 28¶
 - SPI_CMD_READ_SIGNATURE = 27¶
 - SPI_CMD_SET_BAUD = 29¶
 - SPI_CMD_SIGN_ON = 1¶
 - SPI_STATUS_BAUD_INVALID = 205¶
 - SPI_STATUS_CLOCK_ERROR = 204¶
 - SPI_STATUS_CMD_FAILED = 192¶
 - SPI_STATUS_CMD_OK = 0¶
 - SPI_STATUS_CMD_TOUT = 128¶
 - SPI_STATUS_CMD_UNKNOWN = 201¶
 - SPI_STATUS_PHY_ERROR = 203¶
 - SPI_STATUS_RDY_BSY_TOUT = 129¶
 - SYNC_LOOPS = 32¶
 - enter_progmode()¶
- Enter programming mode 
 - erase()¶
- Chip erase 
 - get_id()¶
- Read device ID 
 - leave_progmode()¶
- Leave programming mode 
 - load_address(address)¶
- Loads the address pointer (stored in FW) 
 - read_calibration_bytes(offset, numbytes)¶
- Read device calibration bytes - Parameters:
- offset – offset to read from 
- numbytes – number of bytes to read 
 
 
 - read_eeprom_chunk(byte_address, numbytes)¶
- Reads a chunk of eeprom memory - Parameters:
- byte_address – start address 
- numbytes – number of bytes 
 
- Returns:
- data read 
 
 - read_flash_chunk(byte_address, numbytes)¶
- Reads a chunk of flash memory - Parameters:
- byte_address – start address 
- numbytes – number of bytes 
 
- Returns:
- data read 
 
 - read_fuse_byte(offset)¶
- Read fuse bytes - Parameters:
- offset – offset to read from 
 
 - read_lockbits()¶
- Read lockbits 
 - read_signature_bytes(offset, numbytes)¶
- Read device signature bytes - Parameters:
- offset – offset to read from 
- numbytes – number of bytes to read 
 
 
 - write_eeprom_page(byte_address, data)¶
- Writes a page of eeprom - Parameters:
- byte_address – start address 
- data – data to write 
 
 
 - write_flash_page(byte_address, data)¶
- Writes a page of flash - Parameters:
- byte_address – start address 
- data – data to write 
 
 
 - write_fuse_byte(offset, data)¶
- Write fuse byte - Parameters:
- offset – offset to write to 
- data – data value to write 
 
 
 - write_lockbits(data)¶
- Write lockbits - Parameters:
- data – data value to write 
 
 
- exception pyedbglib.protocols.avrispprotocol.AvrIspProtocolError¶
- Bases: - Exception- Exception type for AVRISP command-response wrapping 
pyedbglib.protocols.cmsisdap¶
CMSIS DAP access protocol
Interfaces with CMSIS-DAP standard debuggers over HID
- class pyedbglib.protocols.cmsisdap.CmsisDapDebugger(transport)¶
- Bases: - CmsisDapUnit- ARM-specific cmsis-dap implementation - CDBGPWRUPACK = 536870912¶
 - CDBGPWRUPREQ = 268435456¶
 - CDBGRSTACK = 134217728¶
 - CDBGRSTREQ = 67108864¶
 - CM0P_DAPID = 197203063¶
 - CSW_16BIT = 1¶
 - CSW_32BIT = 2¶
 - CSW_8BIT = 0¶
 - CSW_ADDRINC_OFF = 0¶
 - CSW_ADDRINC_ON = 16¶
 - CSYSPWRUPACK = 2147483648¶
 - CSYSPWRUPREQ = 1073741824¶
 - DAP_SWJ_SWCLK_TCK = 1¶
 - DAP_SWJ_SWDIO_TMS = 2¶
 - DAP_SWJ_TDI = 4¶
 - DAP_SWJ_TDO = 8¶
 - DAP_SWJ_nRESET = 128¶
 - DAP_SWJ_nTRST = 32¶
 - DAP_TRANSFER_A2 = 4¶
 - DAP_TRANSFER_A3 = 8¶
 - DAP_TRANSFER_APnDP = 1¶
 - DAP_TRANSFER_ERROR = 8¶
 - DAP_TRANSFER_FAULT = 4¶
 - DAP_TRANSFER_INVALID = 0¶
 - DAP_TRANSFER_MATCH_MASK = 32¶
 - DAP_TRANSFER_MATCH_VALUE = 16¶
 - DAP_TRANSFER_MISMATCH = 16¶
 - DAP_TRANSFER_OK = 1¶
 - DAP_TRANSFER_RnW = 2¶
 - DAP_TRANSFER_WAIT = 2¶
 - DP_ABORT = 0¶
 - DP_CTRL_STAT = 4¶
 - DP_IDCODE = 0¶
 - DP_RDBUFF = 12¶
 - DP_RESEND = 8¶
 - DP_SELECT = 8¶
 - DP_WCR = 4¶
 - JTAG_ABORT = 8¶
 - JTAG_APACC = 11¶
 - JTAG_BYPASS = 15¶
 - JTAG_DPACC = 10¶
 - JTAG_IDCODE = 14¶
 - ORUNDETECT = 1¶
 - READOK = 64¶
 - STICKYCMP = 16¶
 - STICKYERR = 32¶
 - STICKYORUN = 2¶
 - SWD_AP_CSW = 0¶
 - SWD_AP_DRW = 12¶
 - SWD_AP_TAR = 4¶
 - TAR_MAX = 1024¶
 - TRNMODE = 4¶
 - WDATAERR = 128¶
 - dap_read_idcode()¶
- Reads the IDCODE from the SWD DP 
 - dap_read_reg(reg)¶
- Reads a DAP AP/DP register - Parameters:
- reg – register to read 
- Raises:
- PyedbglibError – if the read fails 
 
 - dap_reset_target()¶
- Reset the target using the DAP - Raises:
- PyedbglibError – if the reset fails 
 
 - dap_swd_configure(cfg)¶
- Configures the SWD interface - Parameters:
- cfg – turnaround and data phase config parameters 
- Raises:
- PyedbglibError – if the configuration fails 
 
 - dap_swj_clock(clock)¶
- Sets up the SWD clock timing - Parameters:
- clock – clock value in Hz 
- Raises:
- PyedbglibError – if the configuration fails 
 
 - dap_target_init()¶
- Configures the DAP for use 
 - dap_transfer_configure(idle, count, retry)¶
- Configures SWD transfers - Parameters:
- idle – idle cycles 
- count – retry count 
- retry – match retry value 
 
- Raises:
- PyedbglibError – if the configuration fails 
 
 - dap_write_reg(reg, value)¶
- Writes a DAP AP/DP register - Parameters:
- reg – register to write 
- value – value to write 
 
- Raises:
- PyedbglibError – if the write fails 
 
 - init_swj()¶
- Magic sequence to execute on pins to enable SWD in case of JTAG-default parts - Raises:
- PyedbglibError – if the sequence execution fails 
 
 - static multiple_of_four(x)¶
- 4 byte boundary 
 - read_block(address, numbytes)¶
- Reads a block from the device memory bus - Parameters:
- address – byte address 
- numbytes – number of bytes 
 
- Raises:
- PyedbglibError – if the transfer fails 
 
 - read_word(address)¶
- Reads a word from the device memory bus - Parameters:
- address – address to read 
 
 - write_block(address, data)¶
- Writes a block to the device memory bus - Parameters:
- address – byte address 
- data – data 
 
 
 - write_word(address, data)¶
- Writes a word to the device memory bus - Parameters:
- address – address to write 
- data – data to write 
 
 
 
- class pyedbglib.protocols.cmsisdap.CmsisDapSamDebugger(transport)¶
- Bases: - CmsisDapDebugger- SAM specific CMSIS-DAP debugger - dap_reset_ext(extend=False)¶
- Reset the target using the hardware - Some SAM devices (for example SAMDx and SAMLx) have an additional ‘reset extension’ capability which is not part of the CMSIS-DAP standard. It is used to prevent the device from running after reset and then overriding its SWD IO. The procedure is simply to hold SW_CLK low while releasing /RESET. This is done here using SWJ pins function IF the extend argument is set. - Parameters:
- extend – boolean flag to extend reset 
 
 
- class pyedbglib.protocols.cmsisdap.CmsisDapUnit(transport)¶
- Bases: - DapWrapper- Communicates with a DAP via standard CMSIS-DAP firmware stack over HID transport - DAP_ERROR = 255¶
 - DAP_ID_BOARD_NAME = 8¶
 - DAP_ID_BOARD_VENDOR = 7¶
 - DAP_ID_CAPABILITIES = 240¶
 - DAP_ID_DEVICE_NAME = 6¶
 - DAP_ID_DEVICE_VENDOR = 5¶
 - DAP_ID_FW_VER = 4¶
 - DAP_ID_PACKET_COUNT = 254¶
 - DAP_ID_PACKET_SIZE = 255¶
 - DAP_ID_PRODUCT = 2¶
 - DAP_ID_PRODUCT_FW_VER = 9¶
 - DAP_ID_SER_NUM = 3¶
 - DAP_ID_VENDOR = 1¶
 - DAP_OK = 0¶
 - DAP_PORT_AUTODETECT = 0¶
 - DAP_PORT_DISABLED = 0¶
 - DAP_PORT_JTAG = 2¶
 - DAP_PORT_SWD = 1¶
 - ID_DAP_Connect = 2¶
 - ID_DAP_Delay = 9¶
 - ID_DAP_Disconnect = 3¶
 - ID_DAP_HostStatus = 1¶
 - ID_DAP_Info = 0¶
 - ID_DAP_JTAG_Configure = 21¶
 - ID_DAP_JTAG_IDCODE = 22¶
 - ID_DAP_JTAG_Sequence = 20¶
 - ID_DAP_ResetTarget = 10¶
 - ID_DAP_SWD_Configure = 19¶
 - ID_DAP_SWJ_Clock = 17¶
 - ID_DAP_SWJ_Pins = 16¶
 - ID_DAP_SWJ_Sequence = 18¶
 - ID_DAP_Transfer = 5¶
 - ID_DAP_TransferAbort = 7¶
 - ID_DAP_TransferBlock = 6¶
 - ID_DAP_TransferConfigure = 4¶
 - ID_DAP_WriteABORT = 8¶
 - dap_connect()¶
- Connects to the DAP 
 - dap_disconnect()¶
- Disconnects from the DAP 
 - dap_info()¶
- Collects the dap info 
 - dap_led(index, state)¶
- Operates the LED - Parameters:
- index – which led 
- state – what to do with it 
 
 
 
pyedbglib.protocols.configprotocol¶
Kit configuration programming protocol layer This protocol is used in manufacturing to provision Curiosity Nano kits. It is not intended for end-user usage - for kit customisation use the pydebuggerconfig package.
- class pyedbglib.protocols.configprotocol.ConfigProtocol(transport)¶
- Bases: - DapWrapper- Transport layer for programming and reading device config - GET_CONFIG = 131¶
 - RSP_OK = 0¶
 - SET_CONFIG = 132¶
 - fix(fix_data)¶
- Checks if the incoming data is OK to send - Parameters:
- fix_data – Input data 
- Returns:
- list of valid data to send 
 
 - get_config(offset, byte_count)¶
- Low level function to read configuration data from target. - Parameters:
- offset – Offset to read from 
- byte_count – Number of bytes to read 
 
- Returns:
- Response byte + data 
 
 - read_config_block(factory=False)¶
- Read the configuration block - Parameters:
- factory – Default false, use true for factory programming 
- Returns:
- Configuration from the target 
 
 - read_device_data_block()¶
- Read the device data block - Returns:
- Device data block 
 
 - set_config(offset, data)¶
- Block programming of configuration data - Parameters:
- offset – Offset to start programming 
- data – Configuration data to program 
 
 
 - set_transport(transport)¶
- Set the transport for the protocol if not set at init - Parameters:
- transport – Transport to use 
 
 - tool_check()¶
- Check if transport has been initialised - Raises:
- IOError – if not initialised 
 
 - write_config_block(config, factory=False)¶
- Read the configuration block - Parameters:
- config – Configuration data to be written to target 
- factory – Use true to program the factory section 
 
 
 - write_device_data_block(device_data)¶
- Write the device data block - Parameters:
- device_data – Device data to write 
 
 
- exception pyedbglib.protocols.configprotocol.ConfigProtocolResponseError(msg, code)¶
- Bases: - Exception- Exception type for Config protocol responses 
- pyedbglib.protocols.configprotocol.create_blank_config_block()¶
- Create a blank config block - Returns:
- Blank config block 
 
- pyedbglib.protocols.configprotocol.create_blank_device_data_block()¶
- Create a blank device data block - Returns:
- Blank device data block 
 
pyedbglib.protocols.dapcommand¶
DAP information wrapper for any CMSIS-DAP tool
- class pyedbglib.protocols.dapcommand.DapCommand(transport)¶
- Bases: - DapWrapper- DAP information wrapper for any CMSIS-DAP tool - get_all_info()¶
- Fetches a set of useful information from the DAP - Returns:
- dictionary of parameters 
 
 - info(dap_id)¶
- Fetch specific DAP information given by dap_id - Parameters:
- dap_id – code for different DAP_ID_* fields 
- Returns:
- bytearray with dap information 
 
 
pyedbglib.protocols.dapwrapper¶
Wrapper for any protocol over CMSIS-DAP
- class pyedbglib.protocols.dapwrapper.DapWrapper(transport)¶
- Bases: - object- Base class for any CMSIS-DAP protocol wrapper - dap_command_read()¶
- Receive data - Returns:
- data received 
 
 - dap_command_response(packet)¶
- Send a command, receive a response - Parameters:
- packet – bytes to send 
- Returns:
- response received 
 
 - dap_command_write(packet)¶
- Send a packet - Parameters:
- packet – packed data to sent 
- Returns:
- bytes sent 
 
 
pyedbglib.protocols.edbgprotocol¶
Implements EDBG Protocol, a sub-protocol in the JTAGICE3 family of protocols.
- class pyedbglib.protocols.edbgprotocol.EdbgProtocol(transport)¶
- Bases: - Jtagice3Protocol- Implements EDBG protocol functionality on the JTAGICE3 protocol family - AVR_GET_CONFIG = 131¶
 - CMD_EDBG_GET = 2¶
 - CMD_EDBG_PROGRAM_ID_CHIP = 80¶
 - CMD_EDBG_QUERY = 0¶
 - CMD_EDBG_READ_ID_CHIP = 126¶
 - CMD_EDBG_REFRESH_ID_CHIP = 81¶
 - CMD_EDBG_SET = 1¶
 - EDBG_CONFIG_KIT_DATA = 32¶
- Mapping EDBG error codes to more human friendly strings 
 - EDBG_CONTROL_EXT_PROG = 1¶
 - EDBG_CONTROL_LED_USAGE = 0¶
 - EDBG_CONTROL_TARGET_POWER = 16¶
 - EDBG_CTXT_CONTROL = 0¶
 - EDBG_ERRORS = {0: 'SUCCESS'}¶
- Mapping SHA204 response codes to more human friendly strings 
 - EDBG_QUERY_COMMANDS = 0¶
 - RESPONSE_CODE = {0: 'SHA204_SUCCESS', 210: 'SHA204_PARSE_ERROR', 211: 'SHA204_CMD_FAIL', 212: 'SHA204_STATUS_CRC', 224: 'SHA204_FUNC_FAIL', 226: 'SHA204_BAD_PARAM', 228: 'SHA204_INVALID_SIZE', 229: 'SHA204_BAD_CRC', 230: 'SHA204_RX_FAIL', 231: 'SHA204_RX_NO_RESPONSE', 232: 'SHA204_RESYNC_WITH_WAKEUP', 240: 'SHA204_COMM_FAIL', 241: 'SHA204_TIMEOUT', 250: 'ID_DATA_LOCKED', 251: 'ID_CONFIG_LOCKED', 252: 'ID_INVALID_SLOT', 253: 'ID_DATA_PARSING_ERROR', 254: 'ID_DATA_NOT_EQUAL'}¶
 - RSP_EDBG_DATA = 132¶
 - RSP_EDBG_FAILED = 160¶
 - RSP_EDBG_LIST = 129¶
 - RSP_EDBG_OK = 128¶
 - check_command_exists(command)¶
- Check if command is supported - Runs a query to the tool to get a list of supported commands, then looks for the input command in the list. If not supported, it raises NotImplementedError. - Parameters:
- command – The command to test. 
 
 - error_as_string(code)¶
- Get the response error as a string (error code translated to descriptive string) - Parameters:
- code – error code 
- Returns:
- error code as descriptive string 
 
 - program_id_chip(id_number, data)¶
- Program the connected ID device located at the id_number with data. - Parameters:
- id_number – Extension header ID number (Range 1 - 16) 
- data – A 64-byte data array to be programmed 
 
- Returns:
- Response status from the programming 
 
 - read_edbg_extra_info()¶
- Reads the kit info flash page, containing board specific data - Returns:
- A data array containing the kit info 
 
 - read_id_chip(id_number)¶
- Reads the ID information from the ID chip connected at id_number - Parameters:
- id_number – Extension header ID number (Range 1 - 16) 
- Returns:
- A 64-byte data array 
 
 - refresh_id_chip()¶
- Forces a refresh of the list of connected ID devices. - Raises:
- IOError – if an invalid response is received 
 
 - response_as_string(code)¶
- Get the response code as a string (response code translated to descriptive string) - Parameters:
- code – response code 
- Returns:
- error code as descriptive string 
 
 
pyedbglib.protocols.housekeepingprotocol¶
Implements Housekeeping Protocol, a sub-protocol in the JTAGICE3 family of protocols.
- class pyedbglib.protocols.housekeepingprotocol.Jtagice3HousekeepingProtocol(transport)¶
- Bases: - Jtagice3Protocol- Implements housekeeping functionality on the JTAGICE3 protocol family - CMD_HOUSEKEEPING_END_SESSION = 17¶
 - CMD_HOUSEKEEPING_FW_UPGRADE = 80¶
 - CMD_HOUSEKEEPING_START_SESSION = 16¶
 - HOUSEKEEPING_ABILITY_HV_UPDI_ENABLE = 16¶
 - HOUSEKEEPING_ABILITY_RESET_EXTENSION = 0¶
 - HOUSEKEEPING_ANALOG_VTG_BUF = 1¶
 - HOUSEKEEPING_ANALOG_VTREF = 0¶
 - HOUSEKEEPING_ANALOG_VUSB = 2¶
 - HOUSEKEEPING_CONFIG_AUX_MCU_FW_MAJ = 32¶
 - HOUSEKEEPING_CONFIG_AUX_MCU_FW_MIN = 33¶
 - HOUSEKEEPING_CONFIG_AUX_MCU_FW_REV = 34¶
 - HOUSEKEEPING_CONFIG_BLDR_MAJ = 6¶
 - HOUSEKEEPING_CONFIG_BLDR_MIN = 7¶
 - HOUSEKEEPING_CONFIG_BUILD = 3¶
 - HOUSEKEEPING_CONFIG_CHIP = 5¶
 - HOUSEKEEPING_CONFIG_DEBUG_BUILD = 8¶
 - HOUSEKEEPING_CONFIG_FIRMWARE_IMAGE = 9¶
 - HOUSEKEEPING_CONFIG_FPGA_FW_MAJ = 16¶
 - HOUSEKEEPING_CONFIG_FPGA_FW_MIN = 17¶
 - HOUSEKEEPING_CONFIG_FPGA_FW_REV = 18¶
 - HOUSEKEEPING_CONFIG_FWREV_MAJ = 1¶
 - HOUSEKEEPING_CONFIG_FWREV_MIN = 2¶
 - HOUSEKEEPING_CONFIG_HWREV = 0¶
 - HOUSEKEEPING_CONTEXT_ANALOG = 1¶
 - HOUSEKEEPING_CONTEXT_CONFIG = 0¶
 - HOUSEKEEPING_CONTEXT_DIAGNOSTICS = 129¶
 - HOUSEKEEPING_CONTEXT_STATEMENT = 2¶
 - HOUSEKEEPING_CONTEXT_STATISTICS = 128¶
 - HOUSEKEEPING_CONTEXT_USB = 3¶
 - HOUSEKEEPING_DIAGNOSTICS_BOD_CTRL = 1¶
 - HOUSEKEEPING_DIAGNOSTICS_CPU_CLK = 6¶
 - HOUSEKEEPING_DIAGNOSTICS_RESET_CAUSE = 0¶
 - HOUSEKEEPING_HOST_ID = 2¶
 - HOUSEKEEPING_HOST_REV = 3¶
 - HOUSEKEEPING_MODULE_VER_AW = 5¶
 - HOUSEKEEPING_MODULE_VER_JTAG = 4¶
 - HOUSEKEEPING_QUERY_ANALOG_CHANNELS = 1¶
 - HOUSEKEEPING_QUERY_COMMANDS = 0¶
 - HOUSEKEEPING_QUERY_SPECIAL_ABILITIES = 2¶
 - HOUSEKEEPING_TSUP_VOLTAGE = 32¶
 - HOUSEKEEPING_USB_EP_SIZE_CDC = 17¶
 - HOUSEKEEPING_USB_EP_SIZE_HID = 16¶
 - HOUSEKEEPING_USB_MAX_READ = 0¶
 - HOUSEKEEPING_USB_MAX_WRITE = 1¶
 - end_session(reset_tool=False)¶
- Ends a session with the debugger (sign-off) - Parameters:
- reset_tool – resets the hardware 
 
 - enter_upgrade_mode(key=829586448)¶
- Puts the debugger into firmware upgrade mode - Parameters:
- key – upgrade key 
 
 - list_supported_commands()¶
- Uses the query interface to list all supported commands 
 - read_version_info()¶
- Reads version info from the debugger 
 - start_session()¶
- Starts a session with the debugger (sign-on) 
 
pyedbglib.protocols.jtagice3protocol¶
JTAGICE3 protocol mappings
- class pyedbglib.protocols.jtagice3protocol.Jtagice3Command(transport, handler)¶
- Bases: - AvrCommand- Sends a “JTAGICE3” command frame, and received a response - JTAGICE3 protocol header is formatted:
- JTAGICE3_TOKEN 0x0E PROTOCOL_VERSION 0 SEQUENCE_NUMBER_L SEQUENCE_NUMBER_H HANDLER_ID PAYLOAD 
- Response format is:
- JTAGICE3_TOKEN 0x0E SEQUENCE_NUMBER_L echo SEQUENCE_NUMBER_H echo HANDLER_ID PAYLOAD 
 - EVENT_HANDLER_IDS = [1, 18]¶
 - HANDLER_AVR32_GENERIC = 19¶
 - HANDLER_AVR8_GENERIC = 18¶
 - HANDLER_COPROCESSOR = 33¶
 - HANDLER_DISCOVERY = 0¶
 - HANDLER_EDBG = 32¶
 - HANDLER_HOUSEKEEPING = 1¶
 - HANDLER_POWER = 34¶
 - HANDLER_SELFTEST = 129¶
 - HANDLER_SPI = 17¶
 - HANDLER_TPI = 20¶
 - JTAGICE3_HEADER_COMMAND_HANDLER_ID = 4¶
 - JTAGICE3_HEADER_COMMAND_PAYLOAD_START = 5¶
 - JTAGICE3_HEADER_COMMAND_PROTOCOL_VERSION = 1¶
 - JTAGICE3_HEADER_COMMAND_SEQUENCE = 2¶
 - JTAGICE3_HEADER_COMMAND_SOF_TOKEN = 0¶
 - JTAGICE3_HEADER_EVENT_HANDLER_ID = 4¶
 - JTAGICE3_HEADER_EVENT_PAYLOAD_START = 5¶
 - JTAGICE3_HEADER_EVENT_PROTOCOL_VERSION = 1¶
 - JTAGICE3_HEADER_EVENT_SEQUENCE = 2¶
 - JTAGICE3_HEADER_EVENT_SOF_TOKEN = 0¶
 - JTAGICE3_HEADER_RESPONSE_HANDLER_ID = 3¶
 - JTAGICE3_HEADER_RESPONSE_PAYLOAD_START = 4¶
 - JTAGICE3_HEADER_RESPONSE_SEQUENCE = 1¶
 - JTAGICE3_HEADER_RESPONSE_SOF_TOKEN = 0¶
 - JTAGICE3_PROTOCOL_VERSION = 0¶
 - JTAGICE3_TOKEN = 14¶
 - jtagice3_command_response(command)¶
- Sends a JTAGICE3 command and receives the corresponding response, and validates it - Parameters:
- command – bytearray command to send 
 
 - jtagice3_command_response_raw(command)¶
- Sends a JTAGICE3 command and receives the corresponding response - Parameters:
- command – bytearray command to send 
 
 - validate_response(response)¶
- Validates the response form the debugger - Parameters:
- response – raw response bytes 
- Raises:
- PyedbglibError – if validation fails 
 
 
- class pyedbglib.protocols.jtagice3protocol.Jtagice3Protocol(transport, handler, supports_trailing_status=True)¶
- Bases: - Jtagice3Command- Base class for all protocols in the JTAGICE3 family. - All sub-protocols support query, get and set commands. - CMD_GET = 2¶
 - CMD_QUERY = 0¶
 - CMD_SET = 1¶
 - CMD_VERSION0 = 0¶
 - CMD_VERSION1 = 1¶
 - FAILURE_OK = 0¶
 - JTAGICE3_ERRORS = {0: 'SUCCESS'}¶
 - PROTOCOL_DATA = 132¶
 - PROTOCOL_FAILED = 160¶
 - PROTOCOL_HEADER_RESPONSE_ID = 0¶
 - PROTOCOL_HEADER_RESPONSE_PAYLOAD = 2¶
 - PROTOCOL_HEADER_RESPONSE_VERSION = 1¶
 - PROTOCOL_LIST = 129¶
 - PROTOCOL_OK = 128¶
 - SETGET_FAILURE_HANDLER_ERROR = 48¶
- Mapping JTAGICE3 error codes to more human friendly strings 
 - SETGET_FAILURE_ILLEGAL_STATE = 33¶
 - SETGET_FAILURE_INVALID_CLOCK_SPEED = 32¶
 - SETGET_FAILURE_INVALID_VALUE = 35¶
 - SETGET_FAILURE_JTAGM_INIT_ERROR = 34¶
 - SETGET_FAILURE_NOT_IMPLEMENTED = 16¶
 - SETGET_FAILURE_NOT_SUPPORTED = 17¶
 - SETGET_FAILURE_OK = 0¶
 - check_response(response, expected=None)¶
- Checks the response for known errors - Parameters:
- response – response bytes 
- expected – expected response 
 
- Returns:
- data from response 
 
 - error_as_string(code)¶
- Get the response error as a string (error code translated to descriptive string) - Parameters:
- code – error code 
- Returns:
- error code as descriptive string 
 
 - get_byte(context, offset)¶
- Get a single-byte parameter - Parameters:
- context – context (address) to set 
- offset – offset address to set 
 
- Returns:
- value read 
 
 - get_le16(context, offset)¶
- Get a little-endian 16-bit parameter - Parameters:
- context – context (address) to set 
- offset – offset address to set 
 
- Returns:
- value read 
 
 - get_le32(context, offset)¶
- Get a little-endian 32-bit parameter - Parameters:
- context – context (address) to set 
- offset – offset address to set 
 
- Returns:
- value read 
 
 - peel_response(response, expected=None)¶
- Process the response, extracting error codes and data - Parameters:
- response – raw response bytes 
- expected – expected response 
 
- Returns:
- status, data 
 
 - poll_events()¶
- Polls for JTAGICE3 protocol events - Events are framed as:
- SOF 0x0E version sequence H sequence L HANDLER ID [n] * PAYLOAD 
 - Returns:
- bytearray containing a received event, or None 
 
 - query(context)¶
- Queries functionality using the QUERY API - Parameters:
- context – Query context 
- Returns:
- List of supported entries 
- Raises:
- PyedbglibError – if the query fails 
 
 - set_byte(context, offset, value)¶
- Sets a single byte parameter - Parameters:
- context – context (address) to set 
- offset – offset address to set 
- value – value to set 
 
 
 - set_le16(context, offset, value)¶
- Sets a little-endian 16-bit parameter - Parameters:
- context – context (address) to set 
- offset – offset address to set 
- value – value to set 
 
 
 - set_le32(context, offset, value)¶
- Sets a little-endian 32-bit parameter - Parameters:
- context – context (address) to set 
- offset – offset address to set 
- value – value to set 
 
 
 
- exception pyedbglib.protocols.jtagice3protocol.Jtagice3ResponseError(msg, code)¶
- Bases: - Exception- Exception type for JTAGICE3 responses 
pyedbglib.protocols.selftestprotocol¶
Implements SelftestProtocol, a sub-protocol in the JTAGICE3 family of protocols.
- class pyedbglib.protocols.selftestprotocol.SelftestProtocol(transport)¶
- Bases: - Jtagice3Protocol- Implementation of the tool selftest protocol. This protocol is used for kit production and firmware testing purposes. Not all tools support all commands. - CMD_SELFTEST_DELAY_MS = 17¶
 - CMD_SELFTEST_DELAY_S = 16¶
 - CMD_SELFTEST_DELAY_US = 18¶
 - CMD_SELFTEST_DGI_PIN_RAW_READ = 32¶
 - CMD_SELFTEST_PLATFORM = 240¶
 - CMD_SELFTEST_SHORT_DELAY = 19¶
 - CMD_SELFTEST_TIMEOUT_MS = 0¶
 - CMD_SELFTEST_TIMER_EXPIRED = 2¶
 - CMD_SELFTEST_TIMER_START = 1¶
 - HANDLER_SELFTEST = 129¶
 - RSP_SELFTEST_DATA = 132¶
 - RSP_SELFTEST_FAILED = 160¶
 - RSP_SELFTEST_FAILED_WITH_DATA = 161¶
 - RSP_SELFTEST_LIST = 129¶
 - RSP_SELFTEST_OK = 128¶
 - SELFTEST_DGI_PINS = {0: 'DGI_SPI_MOSI', 1: 'DGI_SPI_MISO', 2: 'DGI_SPI_SCK', 3: 'DGI_SPI_SS', 4: 'DGI_USART_TX', 5: 'DGI_USART_RX', 6: 'DGI_USART_CLK', 7: 'DGI_I2C_DATA', 8: 'DGI_I2C_CLK', 9: 'CDC_TX', 10: 'CDC_RX', 11: 'DGI_GPIO0', 12: 'DGI_GPIO1', 13: 'DGI_GPIO2', 14: 'DGI_GPIO3'}¶
 - SELFTEST_FAILED_INVALID_PARAMETER_VALUE = 19¶
 - SELFTEST_FAILED_NOT_SUPPORTED = 16¶
 - SELFTEST_FAILED_OK = 0¶
 - VERSION0 = 0¶
 - selftest_delay_ms(delay_ms)¶
- Issue a delay of delay_ms milliseconds - Parameters:
- delay_ms – Delay value in milliseconds. Max is 2^16 - 1 (65535) 
 
 - selftest_delay_s(delay_s)¶
- Issue a delay of delay_s seconds - Parameters:
- delay_s – Delay value in seconds. Max is (2^16 - 1) / 1000 (65) 
 
 - selftest_delay_us(delay_us)¶
- Issue a delay of delay_us microseconds - Parameters:
- delay_us – Delay value in microseconds. Max is 2^32 - 1 (4294967295) 
 
 - selftest_short_delay()¶
- Issue a delay of 2s generated using loads of the shortest delay function available in the tool 
 - selftest_timeout_ms(timeout_ms, counter_value=0)¶
- Test timer timeout - This function starts a timer with the given timeout value and returns when the timer has expired. Alternatively the timer counter value can be overridden by providing a counter_value value >0 - Parameters:
- timeout_ms – Timeout value in milliseconds 
- counter_value – Value to be written to timer counter register before timer is started. A value of 0 means skip writing any value. The counter_value can be used to test overflow situations 
 
 
 - selftest_timer_expired(timer_id)¶
- Check if a timer has expired - Parameters:
- timer_id – ID of timer to check 
- Returns:
- True if timer has expired, False if not 
 
 - selftest_timer_start(timer_id, timeout_ms)¶
- Start a timer with the given ID and timeout value 
 
