7.6 AVR8GENERIC ID Definitions
This section includes the header file defining the different command, response, and event IDs for the AVR8 protocol. It also defines the different possible failure codes.
enum Avr8GenericCommands { CMD_AVR8_QUERY = 0x00, //! Capability discovery CMD_AVR8_SET = 0x01, //! Set parameters CMD_AVR8_GET = 0x02, //! Get parameters CMD_AVR8_ACTIVATE_PHYSICAL = 0x10, //! Connect physically CMD_AVR8_DEACTIVATE_PHYSICAL = 0x11, //! Disconnect physically CMD_AVR8_GET_ID = 0x12, //! Read the ID CMD_AVR8_ATTACH = 0x13, //! Attach to OCD module CMD_AVR8_DETACH = 0x14, //! Detach from OCD module CMD_AVR8_PROG_MODE_ENTER = 0x15, //! Enter programming mode CMD_AVR8_PROG_MODE_LEAVE = 0x16, //! Leave programming mode CMD_AVR8_DISABLE_DEBUGWIRE = 0x17, //! Disable debugWIRE interface CMD_AVR8_ERASE = 0x20, //! Erase the chip CMD_AVR8_MEMORY_READ = 0x21, //! Read memory CMD_AVR8_MEMORY_READ_MASKED = 0x22, //! Read memory while via a mask CMD_AVR8_MEMORY_WRITE = 0x23, //! Write memory CMD_AVR8_CRC = 0x24, //! Calculate CRC CMD_AVR8_RESET = 0x30, //! Reset the MCU CMD_AVR8_STOP = 0x31, //! Stop the MCU CMD_AVR8_RUN = 0x32, //! Resume execution CMD_AVR8_RUN_TO_ADDRESS = 0x33, //! Resume with breakpoint CMD_AVR8_STEP = 0x34, //! Single step CMD_AVR8_PC_READ = 0x35, //! Read PC CMD_AVR8_PC_WRITE = 0x36, //! Write PC CMD_AVR8_HW_BREAK_SET = 0x40, //! Set breakpoints CMD_AVR8_HW_BREAK_CLEAR = 0x41, //! Clear breakpoints CMD_AVR8_SW_BREAK_SET = 0x43, //! Set software breakpoints CMD_AVR8_SW_BREAK_CLEAR = 0x44, //! Clear software breakpoints CMD_AVR8_SW_BREAK_CLEAR_ALL = 0x45, //! Clear all software breakpoints CMD_AVR8_PAGE_ERASE = 0x50 //! Erase page }; // Protocol responses enum Avr8GenericResponses { RSP_AVR8_OK = 0x80, //! All OK RSP_AVR8_LIST = 0x81, //! List of items returned RSP_AVR8_DATA = 0x84, //! Data returned RSP_AVR8_PC = 0x83, //! PC value returned RSP_AVR8_FAILED = 0xA0 //! Command failed to execute }; // Protocol events enum Avr8GenericEvents { EVT_AVR8_BREAK = 0x40, //! Break message EVT_AVR8_IDR = 0x41 //! IO Data Register message }; // Failure response codes (RSP_FAILED) enum Avr8GenericFailureCodes { AVR8_FAILURE_OK = 0x00, //! All OK AVR8_FAILURE_DW_PHY_ERROR = 0x10, //! debugWIRE physical error AVR8_FAILURE_JTAGM_INIT_ERROR = 0x11, //! JTAGM failed to initialise AVR8_FAILURE_JTAGM_ERROR = 0x12, //! JTAGM did something strange AVR8_FAILURE_JTAG_ERROR = 0x13, //! JTAG low level error AVR8_FAILURE_JTAGM_VERSION = 0x14, //! Unsupported version of JTAGM AVR8_FAILURE_JTAGM_TIMEOUT = 0x15, //! JTAG master timed out AVR8_FAILURE_JTAG_BIT_BANGER_TIMEOUT = 0x16, //! JTAG bit banger timed out AVR8_FAILURE_PARITY_ERROR = 0x17, //! Parity error in received data AVR8_FAILURE_EB_ERROR = 0x18, //! Did not receive EMPTY byte AVR8_FAILURE_PDI_TIMEOUT = 0x19, //! PDI physical timed out AVR8_FAILURE_COLLISION = 0x1A, //! Collision on physical level AVR8_FAILURE_PDI_ENABLE = 0x1B, //! PDI enable failed AVR8_FAILURE_NO_DEVICE_FOUND = 0x20, //! devices == 0! AVR8_FAILURE_CLOCK_ERROR = 0x21, //! Failure when increasing baud AVR8_FAILURE_NO_TARGET_POWER = 0x22, //! Target power not detected AVR8_FAILURE_NOT_ATTACHED = 0x23, //! Must run attach command first AVR8_FAILURE_DAISY_CHAIN_TOO_LONG = 0x24, //! Devices > 31 AVR8_FAILURE_DAISY_CHAIN_CONFIG = 0x25, //! Configured device bits do not add up to detected bits AVR8_FAILURE_INVALID_PHYSICAL_STATE = 0x31, //! Physical not activated AVR8_FAILURE_ILLEGAL_STATE = 0x32, //! Illegal run / stopped state AVR8_FAILURE_INVALID_CONFIG = 0x33, //! Invalid config for activate phy AVR8_FAILURE_INVALID_MEMTYPE = 0x34, //! Not a valid memtype AVR8_FAILURE_INVALID_SIZE = 0x35, //! Too many or too few bytes AVR8_FAILURE_INVALID_ADDRESS = 0x36, //! Asked for a bad address AVR8_FAILURE_INVALID_ALIGNMENT = 0x37, //! Asked for badly aligned data AVR8_FAILURE_ILLEGAL_MEMORY_RANGE = 0x38, //! Address not within legal range AVR8_FAILURE_ILLEGAL_VALUE = 0x39, //! Illegal value given AVR8_FAILURE_ILLEGAL_ID = 0x3A, //! Illegal target ID AVR8_FAILURE_INVALID_CLOCK_SPEED = 0x3B, //! Clock value out of range AVR8_FAILURE_TIMEOUT = 0x3C, //! A timeout occurred AVR8_FAILURE_ILLEGAL_OCD_STATUS = 0x3D, //! Read an illegal OCD status AVR8_FAILURE_NVM_ENABLE = 0x40, //! NVM failed to be enabled AVR8_FAILURE_NVM_DISABLE = 0x41, //! NVM failed to be disabled AVR8_FAILURE_CS_ERROR = 0x42, //! Illegal control/status bits AVR8_FAILURE_CRC_FAILURE = 0x43, //! CRC mismatch AVR8_FAILURE_OCD_LOCKED = 0x44, //! Failed to enable OCD AVR8_FAILURE_NO_OCD_CONTROL = 0x50, //! Device is not under control AVR8_FAILURE_PC_READ_FAILED = 0x60, //! Error when reading PC AVR8_FAILURE_REGISTER_READ_FAILED = 0x61, //! Error when reading register AVR8_FAILURE_READ_ERROR = 0x70, //! Error while reading AVR8_FAILURE_WRITE_ERROR = 0x71, //! Error while writing AVR8_FAILURE_WRITE_TIMEOUT = 0x72, //! Timeout while reading AVR8_FAILURE_ILLEGAL_BREAKPOINT = 0x80, //! Invalid breakpoint configuration AVR8_FAILURE_TOO_MANY_BREAKPOINTS = 0x81, //! Not enough available resources AVR8_FAILURE_NOT_SUPPORTED = 0x90, //! This feature is not available AVR8_FAILURE_NOT_IMPLEMENTED = 0x91, //! Command has not been implemented AVR8_FAILURE_UNKNOWN = 0xFF //! Disaster. }; // QUERY types on this protocol enum Avr8GenericQueryContexts { AVR8_QUERY_COMMANDS = 0x00, //! Supported command list AVR8_QUERY_CONFIGURATION = 0x05, //! Supported configuration list AVR8_QUERY_READ_MEMTYPES = 0x07, //! Supported read memtypes list AVR8_QUERY_WRITE_MEMTYPES = 0x08 //! Supported write memtypes list }; // Context definitions enum Avr8GenericSetGetContexts { AVR8_CTXT_CONFIG = 0x00, //! Configuration AVR8_CTXT_PHYSICAL = 0x01, //! Physical interface related AVR8_CTXT_DEVICE = 0x02, //! Device specific settings AVR8_CTXT_OPTIONS = 0x03, //! Option-related settings AVR8_CTXT_SESSION = 0x04, //! Session-related settings }; enum Avr8GenericConfigContextParameters { AVR8_CONFIG_VARIANT = 0x00, //! Device family/variant AVR8_CONFIG_FUNCTION = 0x01 //! Functional intent }; enum Avr8GenericPhysicalContextParameters { AVR8_PHY_INTERFACE = 0x00, //! Physical interface selector AVR8_PHY_JTAG_DAISY = 0x01, //! JTAG daisy chain settings AVR8_PHY_DW_CLK_DIV = 0x10, //! debugWIRE clock divide ratio AVR8_PHY_MEGA_PRG_CLK = 0x20, //! Clock for programming megaAVR AVR8_PHY_MEGA_DBG_CLK = 0x21, //! Clock for debugging megaAVR AVR8_PHY_XM_JTAG_CLK = 0x30, //! JTAG clock for AVR XMEGA AVR8_PHY_XM_PDI_CLK = 0x31 //! PDI clock for AVR XMEGA and AVR devices with UPDI }; enum Avr8GenericOptionsContextParameters { AVR8_OPT_RUN_TIMERS = 0x00, //! Keep timers running when stopped AVR8_OPT_DISABLE_DBP = 0x01, //! No data breaks during reset AVR8_OPT_ENABLE_IDR = 0x03, //! Relay IDR messages AVR8_OPT_POLL_INT = 0x04 //! Configure polling interval }; enum Avr8GenericSessionContextParameters { AVR8_SESS_MAIN_PC = 0x00 //! Address of main() function (deprecated) }; enum Avr8GenericConfigTestParameters { AVR8_TEST_TGT_RUNNING = 0x00 //! Is target running? }; enum Avr8GenericVariantValues { AVR8_VARIANT_LOOPBACK = 0x00, //! Dummy device AVR8_VARIANT_DW = 0x01, //! tinyAVR or megaAVR with debugWIRE AVR8_VARIANT_MEGAJTAG = 0x02, //! megaAVR with JTAG AVR8_VARIANT_XMEGA = 0x03, //! AVR XMEGA AVR8_VARIANT_UPDI = 0x05, //! AVR devices with UPDI AVR8_VARIANT_NONE = 0xFF //! No device }; enum Avr8GenericFunctionValues { AVR8_FUNC_NONE = 0x00, //! Not configured AVR8_FUNC_PROGRAMMING = 0x01, //! I want to program only AVR8_FUNC_DEBUGGING = 0x02 //! I want a debug session }; // Physical modes enum Avr8GenericPhysicalInterfaces { AVR8_PHY_INTF_NONE = 0x00, //! Not configured AVR8_PHY_INTF_JTAG = 0x04, //! JTAG AVR8_PHY_INTF_DW = 0x05, //! debugWIRE AVR8_PHY_INTF_PDI = 0x06 //! PDI AVR8_PHY_INTF_PDI_1W = 0x08, //! UPDI (one-wire) }; enum Avr8GenericMegaBreakpointTypes { AVR8_HWBP_PROG_BP = 0x01 //! Program breaks }; enum Avr8GenericMegaBreakCauses { AVR8_BREAK_CAUSE_UNKNOWN = 0x00, //! Unspecified AVR8_BREAK_CAUSE_PROGRAM = 0x01 //! Program break }; enum Avr8GenericXtendedEraseModes { ERASE_CHIP = 0x00, //! Erase entire chip ERASE_APP = 0x01, //! Erase application section only ERASE_BOOT = 0x02, //! Erase boot section only ERASE_EEPROM = 0x03, //! Erase EEPROM section only ERASE_APP_PAGE = 0x04, //! Erase a single app section page ERASE_BOOT_PAGE = 0x05, //! Erase a single boot section page ERASE_EEPROM_PAGE = 0x06, //! Erase a single EEPROM page ERASE_USERSIG = 0x07 //! Erase the user signature section }; // Memory types enum Avr8GenericMemtypes { MEMTYPE_SRAM = 0x20, //! SRAM MEMTYPE_EEPROM = 0x22, //! EEPROM memory MEMTYPE_SPM = 0xA0, //! Flash memory in a debug session MEMTYPE_FLASH_PAGE = 0xB0, //! Flash memory programming MEMTYPE_EEPROM_PAGE = 0xB1, //! EEPROM memory pages MEMTYPE_FUSES = 0xB2, //! Fuse memory MEMTYPE_LOCKBITS = 0xB3, //! Lock bits MEMTYPE_SIGNATURE = 0xB4, //! Device signature MEMTYPE_OSCCAL = 0xB5, //! Oscillator calibration values MEMTYPE_REGFILE = 0xB8, //! Register file MEMTYPE_APPL_FLASH = 0xC0, //! Application section flash MEMTYPE_BOOT_FLASH = 0xC1, //! Boot section flash MEMTYPE_APPL_FLASH_ATOMIC = 0xC2, //! Application page with auto-erase MEMTYPE_BOOT_FLASH_ATOMIC = 0xC3, //! Boot page with auto-erase MEMTYPE_EEPROM_ATOMIC = 0xC4, //! EEPROM page with auto-erase MEMTYPE_USER_SIGNATURE = 0xC5, //! User signature secion MEMTYPE_CALIBRATION_SIGNATURE = 0xC6 //! Calibration section };