AVR079: STK600 Communication Protocol Features • Supported Commands and Command options • Command and Answer package formats 1 Introduction 8-bit Microcontrollers Application Note This document describes the STK®600 protocol. The firmware is distributed with AVR Studio® 4.14 or later. The definition of all commands, responses, parameters and other defined values can be found in the file “command.h”. This file can be downloaded from the Atmel® web site. All device specific values can be found in the xml files for each part. The xml files are distributed with AVR Studio. Download the latest AVR Studio 4 from the Atmel web site, http://www.atmel.com/products/AVR/. The xml file format is described in chapter 12. Rev. 8133A-AVR-04/08 2 Overview 2.1 USB Communication The STK600 communicates with the PC through its USB interface. The USB interface utilizes two bulk endpoints; one IN and one OUT. The USB descriptors can be found in the Appendix. 2.2 Packet Format The PC sends commands to the STK600, which responds with an answer. Each command will generate an answer. Both commands and answers can be larger than the maximum packet size for the bulk endpoints, so a command or answer can be split into several IN/OUT packets. A short packet indicates the end of a command or answer. 2.3 USB Driver In order to communicate with the STK600, a driver must be installed on the host computer. A driver can be written from scratch or by using a driver development kit. AVR Studio 4 bundles a USB driver licensed from Jungo (www.jungo.com). By obtaining a license from Jungo, 3rd party software can access the same driver as AVR Studio. The user can then use both AVR Studio and other tools without changing drivers. Note: Firmware upgrades for STK600 can only be uploaded with the dedicated upgrade software bundled with AVR Studio. This requires that the driver supplied with AVR Studio to be installed. 2.4 Command format This section describes all commands that can be entered to the STK600, and all the possible responses that each command can give back to the host. For all commands, the STK600 will return an answer with an answer ID that is equal to the command ID. The first byte in a command is always the command ID, the first byte in an answer is always the answer ID. 3 General Commands These commands are not related to a specific programming mode. 3.1 CMD_SIGN_ON This command returns a unique signature string for the STK600 with this implementation of the protocol. 2 AVR079 8133A-AVR-04/08 AVR079 Table 3-1. Command format. Field Size Values Description Command ID 1 byte CMD_SIGN_ON Command id Size Values Description Answer id Table 3-2. Answer format. Field Answer ID 1 byte CMD_SIGN_ON Status 1 byte STATUS_CMD_OK Signature length 1 byte 6 Length of signature string 8 bytes “STK600” The signature string (not null-terminated) 3.2 CMD_SET_PARAMETER The host can set a multitude of parameters in the STK600. See the 11 Parameters for a description of each parameter. Table 3-3. Command format for one byte values. Field Size Values Description Command ID 1 byte CMD_SET_PARAMETER Command id Parameter ID 1 byte Which parameter to set Value 1 byte Parameter new value Table 3-4. Command format for two byte values. Field Size Values Description Command ID 1 byte CMD_SET_PARAMETER Command id Parameter ID 1 byte Which parameter to set Value 1 byte Parameter new value high byte Value 1 byte Parameter new value low byte Table 3-5. Command format for two byte values. Field Size Values Description Answer ID 1 byte CMD_SET_PARAMETER Answer id Status 1 byte STATUS_CMD_OK or STATUS_CMD_FAILED A status value indicating the result of the operation 3.3 CMD_GET_PARAMETER The host can also read different parameters from the STK600. Table 3-6. Command format. Field Size Values Description Command ID 1 byte CMD_GET_PARAMETER Command id Parameter ID 1 byte Which parameter to get 3 8133A-AVR-04/08 Table 3-7. Answer format for one byte values if command succeeded. Field Size Values Description Answer ID 1 byte CMD_GET_PARAMETER Answer id Status 1 byte STATUS_CMD_OK A status value indicating success Parameter value 1 byte The parameter value Table 3-8. Answer format for two byte values if command succeeded. Field Size Values Description Answer ID 1 byte CMD_GET_PARAMETER Answer id Status 1 byte STATUS_CMD_OK A status value indicating success Parameter value 1 byte The parameter value high byte Parameter value 1 byte The parameter value low byte Table 3-9. Answer format if command fails. Field Size Values Description Answer ID 1 byte CMD_GET_PARAMETER Answer id Status 1 byte STATUS_CMD_ FAILED A status value indicating that the operation failed. The only reason for the operation to fail is that an illegal parameter is requested. 3.4 CMD_OSCCAL This command performs a calibration sequence as described in application note AVR053 Table 3-10. Command format. Field Size Values Description Command ID 1 byte CMD_OSCCAL Command id Table 3-11. Answer format if command succeeded. Field Size Values Description Answer ID 1 byte CMD_OSCCAL Answer id Status 1 byte STATUS_CMD_OK or STATUS_CMD_FAILED A status value indicating success or failure. 3.5 CMD_LOAD_ADDRESS This command will load an address into the STK600. The next Program Flash, Read Flash, Program EEPROM or Read EEPROM command will operate from the address set with this command. The command is used in conjunction with high voltage parallel programming, high voltage serial programming and low voltage serial programming. All the abovementioned commands will increment an internal address counter, so this command needs only to be sent once. 4 AVR079 8133A-AVR-04/08 AVR079 Table 3-12. Command format. Field Size Values Description Command ID 1 byte CMD_LOAD_ADDRESS Command id Address 4 byte The address, four bytes, MSB first For word-addressed memories (program flash), the Address parameter is the word address. If bit 31 is set, this indicates that the following read/write operation will be performed on a memory that is larger than 64KBytes. This is an indication to STK600 that a load extended address must be executed. See datasheet for devices with memories larger than 64KBytes. Table 3-13. Answer format if command succeeded. Field Size Values Description Answer ID 1 byte CMD_LOAD_ADDRESS Answer id Status 1 byte STATUS_CMD_OK A status value indicating success 3.6 CMD_FIRMWARE_UPGRADE When the host is trying to connect to the programmer, it checks the firmware version. A firmware upgrade is initiated if a newer version is available on the PC. The STK600 can “reboot” into upgrade mode by using this command Table 3-14. Command format. Field Size Values Description Command ID 1 byte CMD_FIRMWARE_UPGRADE Command id Parameter ID 10 bytes ”fwupgrade” String to enable upgrade mode Size Values Description Answer ID 1 byte CMD_SET_PARAMETER Answer id Status 1 byte STATUS_CMD_OK or STATUS_CMD_FAILED A status value indicating the result of the operation Table 3-15. Answer format. Field If the status returned is STATUS_CMD_OK, the STK600 will disconnect and enter upgrade mode. 3.7 CMD_LOAD_RC_ID_TABLE This command sends the Routing Card boardID table to the STK600 FW. Each row in this table holds first the RC_id, then the SC_id (allowed to use with that RC) and then the MAX_VTG allowed for that routingcard. The two first bytes of the table hold the revision of the table. MSB first. 5 8133A-AVR-04/08 Table 3-16. Command format. Field Size Values Description Command ID 1 byte CMD_LOAD_RC_ID_TABLE Command id Total number of bytes to send (including the two revision bytes), MSB first NumBytes RC_ID_table 1 byte MSB rev byte ... 1 byte LSB rev byte ... 1 byte ID of a Routing Card ... 1 byte ID of SC allowed to use with the RC ... 1 byte Max VTG for that RC The three last lines above will be repeated until the whole table is sent. Table 3-17. Answer format. Field Size Values Description Answer ID 1 byte CMD_LOAD_RC_ID_TABLE Answer id Status 1 byte STATUS_CMD_OK 3.8 CMD_LOAD_EC_ID_TABLE This command sends the Expansion Card boardID table to the STK600 FW. Each row in this table holds first the EC_id, and then the MAX_VTG allowed for that EC. The two first bytes of the table hold the revision of the table. MSB first. Table 3-18. Command format. Field Size Values Description Command ID 1 byte CMD_LOAD_EC_ID_TABLE Command id Total number of bytes to send (including the two revision bytes), MSB first NumBytes EC_ID_table 1 byte rev byte MSB ... 1 byte rev byte LSB ... 1 byte ID of a Expansion Card ... 1 byte Max VTG for that EC The two last lines above will be repeated until the whole table is sent. Table 3-19. Answer format. Field Size Values Description Answer ID 1 byte CMD_LOAD_EC_ID_TABLE Answer id Status 1 byte STATUS_CMD_OK 6 AVR079 8133A-AVR-04/08 AVR079 3.9 CMD_CHECK_TARGET_CONNECTION Table 3-20. Command format. Field Size Values Description Command ID 1 byte CMD_CHECK_TARGET_CONNECTION Command id Field Size Values Description Answer ID 1 byte CMD_LOAD_EC_ID_TABLE Answer id Answer value 1 byte Se table below. Status of target connection Status 1 byte STATUS_CMD_OK Table 3-21. Answer format. This command runs a target connection check and returns the status of the target connection. The value is 6bits, where bit 0-2 indicates the status of the short circuit protection system and bit 4-5 indicates if the ISP is connected correctly to the target system. Bit 4-5 will only indicate correct target connection if the target is powered. Bit 3 is “Don’t care”. Table 3-22. bit descriptions. Bit # Status 0 STATUS_CONN_FAIL_MOSI 1 STATUS_CONN_FAIL_RST 2 STATUS_CONN_FAIL_SCK 4 STATUS_ISP_READY 5 STATUS_TGT_REVERSE_INSERTED The corresponding bit will be set ‘1’ to indicate an error. That is, if a line is short circuited, if target is not detected or the plug is inserted with a reverse orientation. If the value 0x00 is returned it means the connection is ok. The parameter should be checked before starting a programming sequence to check if target connection is correct (bit 4-5). It should also be checked after a programming sequence if the command failed, to check if the operation failed because of a short circuit. A short circuit can only be detected after the command Enter Progmode has been issued, because the control circuits of the STK600 is isolated via switches when the STK600 is in idle mode. 4 ISP Programming Commands These commands handles FLASH, EEPROM, fuse bytes, lock bits, signature and oscillator calibration programming in ISP mode. 7 8133A-AVR-04/08 4.1 CMD_ENTER_PROGMODE_ISP This command will make the target device enter programming mode. XML path: /AVRPART/ICE_SETTINGS/STK600/IspEnterProgMode/ Table 4-1. Command format. Field Size Values Description Command ID 1 byte CMD_ENTER_ PROGMODE_ISP Command id timeout 1 byte XML: timeout Command time-out (in ms) stabDelay 1 byte XML: stabDelay Delay (in ms) used for pin stabilization cmdexeDelay 1 byte XML: cmdexeDelay Delay (in ms) in connection with the EnterProgMode command execution synchLoops 1 byte XML: synchLoops Number of synchronization loops byteDelay 1 byte XML: byteDelay Delay (in ms) between each byte in the EnterProgMode command. pollValue (1) 1 byte XML: pollValue Poll value: 0x53 for AVR® pollIndex 1 byte XML: pollIndex Start address, received byte: 0 = no polling, 3 = AVR cmd1(2) 1 byte Command Byte # 1 to be transmitted cmd2(2) 1 byte Command Byte # 2 to be transmitted (2) 1 byte Command Byte # 3 to be transmitted (2) 1 byte Command Byte # 4 to be transmitted cmd3 cmd4 Notes: 1. The pollValue parameter indicates after which of the transmitted bytes on the SPI interface to store the return byte, as the SPI interface is implemented as a ring buffer (one byte out, one byte in) 2. cmd1, cmd2, cmd3 and cmd4 are the instruction bytes found in the SPI Serial Programming Instruction Set found in the device datasheet. Table 4-2. Answer format. Field Size Values Description Answer ID 1 byte CMD_SET_PARAMETER Answer id Status 1 byte STATUS_CMD_TOUT, STATUS_CMD_OK or STATUS_CMD_FAILED A status value indicating the result of the operation 4.2 CMD_LEAVE_PROGMODE_ISP This command will make STK600 leave programming mode. The device will be put into normal operating mode. XML path: /AVRPART/ICE_SETTINGS/STK600_2/IspLeaveProgMode/ 8 AVR079 8133A-AVR-04/08 AVR079 Table 4-3. Command format. Field Size Values Description Command ID 1 byte CMD_LEAVE_PROGMODE_IS P Command id preDelay 1 byte XML: preDelay Pre-delay (in ms) PostDelay 1 byte XML: postDelay Post-delay (in ms) Field Size Values Description Answer ID 1 byte CMD_LEAVE_PROGMODE_IS P Answer id Status 1 byte STATUS_CMD_OK This command will always return STATUS_CMD_OK Table 4-4. Answer format. 4.3 CMD_CHIP_ERASE_ISP This command will perform a chip erase on the target device. XML path: /AVRPART/ICE_SETTINGS/STK600/IspChipErase/ Table 4-5. Command format. Field Size Values Description Command ID 1 byte CMD_CHIP_ERASE_ISP Command id eraseDelay 1 byte XML: eraseDelay Delay (in ms) to ensure that the erase of the device is finished pollMethod 1 byte XML: pollMethod Poll method, 0 = use delay 1= use RDY/BSY command cmd1(1) 1 byte Chip erase command byte #1 (1) cmd2 1 byte Chip erase command byte #2 cmd3(1) 1 byte Chip erase command byte #3 (1) 1 byte Chip erase command byte #4 cmd4 Notes: 1. cmd1, cmd2, cmd3 and cmd4 are the instruction bytes found in the SPI Serial Programming Instruction Set found in the device datasheet. Table 4-6. Answer format. Field Size Values Description Answer ID 1 byte CMD_CHIP_ERASE_ISP Answer id Status 1 byte STATUS_CMD_OK or STATUS_CMD_TOUT A status value indicating the result of the operation 4.4 CMD_PROGRAM_FLASH_ISP This command will program data into the FLASH memory of the target device if it succeeds. XML path: /AVRPART/ICE_SETTINGS/STK600/IspProgramFlash/ 9 8133A-AVR-04/08 Table 4-7. Command format. Field Size Values Description Command ID 1 byte CMD_PROGRAM_FLASH_ISP Command id NumBytes 2 byte Total number of bytes to program, MSB first mode 1 byte XML: mode * Mode byte* delay 1 byte XML: delay Delay, used for different types of programming termination, according to mode byte cmd1 1 byte Command 1 (Load Page, Write Program Memory) cmd2 1 byte Command 2 (Write Program Memory Page) cmd3 1 byte poll1 1 byte XML: pollVal1 Poll Value #1 poll2 1 byte XML: pollVal2 Poll Value #2 (not used for flash programming) Data N bytes Command 3 (Read Program Memory) N data Mode byte The mode parameter is essential for how this command works. The bits in the mode byte have the following meanings: Table 4-8. Mode byte, bit descriptions. Bit # Description 0 Word/Page Mode (0 = word, 1 = page) 1 Timed delay 2 Value polling 3 RDY/BSY polling 4 Timed delay 5 Value polling 6 RDY/BSY polling 7 Write page Mode Word Mode Page Mode The Word/Page Mode bit selects if the device supports page programming or not. The command bytes are different for word and page mode. In word mode, the ISP commands Write Program Memory and Read Program Memory are used. In page mode, Load Page, Write Program Memory Page and Read Program Memory are used. The read instruction is used if Value Polling is specified in the mode bit. The Low/High byte selection bit (3rd bit in the Load Page, Write Program Memory commands) is handled by STK600, so leave this bit cleared. The instruction values are found in the SPI Serial Programming Instruction Set found in the device datasheet. According to the mode, different termination methods are selected – Timed delay, Value polling or RDY/BSY polling. For paged operation, the Write page bit decides if a Write Program Memory Page command should be issued after the data has been loaded into the page buffer. For 10 AVR079 8133A-AVR-04/08 AVR079 devices with page size bigger than what can be transferred to STK600 in one command, several CMD_PROGRAM_FLASH_ISP commands must be issued. In such a case, only the last command should have the Write Page mode bit set. NOTE: Only bit 0-6 are set in the XML file, because bit 7 is not constant and must be controlled by the PC software. When value polling is used to determine when a programming operation is complete, poll1 must be supplied. This value indicates which value will be read from the device until the programmed value is read. This indicates end of programming. poll2 is used only for EEPROM programming. Table 4-9. Answer format. Field Size Values Description Answer ID 1 byte CMD_PROGRAM_FLASH_ISP Answer id Status 1 byte STATUS_CMD_OK, STATUS_CMD_TOUT, STATUS_RDY_BSY_TOUT A status value indicating the result of the operation 4.5 CMD_READ_FLASH_ISP This command will read data from the FLASH memory of the target device if it succeeds. XML path: /AVRPART/ICE_SETTINGS/ STK600/IspReadFlash/ Table 4-10. Command format. Field Size Values Description Command ID 1 byte CMD_READ_FLASH_ISP Command id NumBytes 2 byte XML: blockSize Total number of bytes to read, MSB first cmd1 1 byte Read Program Memory command byte #1. rd Low/High byte selection bit (3 bit) is handled in the FIRMWARE. Table 4-11. Answer format if the command was executed. Field Size Values Description Answer ID 1 byte CMD_PROGRAM_FLASH_ISP Answer id Status1 1 byte STATUS_CMD_OK Indicates success. Will always read OK Data N bytes Status2 1 byte The data read from the device STATUS_CMD_OK A status value indicating the result of the operation. Will always read OK Table 4-12. Answer format if the command was executed. Field Size Values Description Answer ID 1 byte CMD_PROGRAM_FLASH_ISP Answer id Status 1 byte STATUS_CMD_FAILED Indicates failure 11 8133A-AVR-04/08 4.6 CMD_PROGRAM_EEPROM_ISP See the CMD_PROGRAM_FLASH_ISP command. XML path: /AVRPART/ICE_SETTINGS/STK600/IspProgramEeprom/ 4.7 CMD_READ_EEPROM_ISP See the CMD_READ_FLASH_ISP command. XML path: /AVRPART/ICE_SETTINGS/STK600/IspReadEeprom/ 4.8 CMD_PROGRAM_FUSE_ISP This command programs the fuses of the target device. Table 4-13. Command format. Field Size Values Description Command ID 1 byte CMD_PROGRAM_FUSE_ISP Command id (1) 1 byte Command Byte #1 (1) cmd2 1 byte Command Byte #2 cmd3(1) 1 byte Command Byte #3 (1) 1 byte Command Byte #4 cmd1 cmd4 Notes: 1. cmd1, cmd2, cmd3 and cmd4 are the instruction bytes found in the SPI Serial Programming Instruction Set found in the device datasheet. Table 4-14. Answer format. Field Size Values Description Answer ID 1 byte CMD_PROGRAM_FUSE_ISP Answer id Status1 1 byte STATUS_CMD_OK Will always read OK Status2 1 byte STATUS_CMD_OK Will always read OK 4.9 CMD_READ_FUSE_ISP This command reads the fuses of the target device. XML path: /AVRPART/ICE_SETTINGS/STK600/IspReadFuse/ Table 4-15. Command format. Field Size Command ID 1 byte CMD_READ_FUSE_ISP Command id RetAddr(1) 1 byte XML: pollIndex Return address cmd1(2) 1 byte Command Byte #1 (2) 1 byte Command Byte #2 (2) 1 byte Command Byte #3 (2) 1 byte Command Byte #4 cmd2 cmd3 cmd4 12 Values Description AVR079 8133A-AVR-04/08 AVR079 Field Notes: Size Values Description 1. RetAddr indicates after which of the transmitted bytes on the SPI interface to store the return byte, as the SPI interface is implemented as a ring buffer (one byte out, one byte in). 2. cmd1, cmd2, cmd3 and cmd4 are the instruction bytes found in the SPI Serial Programming Instruction Set found in the device datasheet. Table 4-16. Answer format. Field Size Values Description Answer ID 1 byte CMD_READ_FUSE_ISP Answer id Status1 1 byte STATUS_CMD_OK A status value indicating the result of the operation, always OK Data 1 byte Status2 1 byte The fuse byte read from the device STATUS_CMD_OK A status value indicating the result of the operation, always OK 4.10 CMD_PROGRAM_LOCK_ISP See CMD_PROGRAM_FUSE. This command is basically the same as the program fuse command, only that ISP commands for programming the lock byte must be supplied. 4.11 CMD_READ_LOCK_ISP See CMD_READ_FUSE. This command is basically the same as the read fuse command, only that ISP commands for reading the lock byte must be supplied. XML path: /AVRPART/ICE_SETTINGS/STK600/IspReadLock/ 4.12 CMD_READ_SIGNATURE_ISP See CMD_READ_FUSE. This command is basically the same as the read fuse command, only that ISP commands for reading one of the signature bytes must be supplied. XML path: /AVRPART/ICE_SETTINGS/STK600/IspReadSign/ 4.13 CMD_READ_OSCCAL_ISP See CMD_READ_FUSE. This command is basically the same as the read fuse command, only that ISP commands for reading the OSCCAL byte must be supplied. XML path: /AVRPART/ICE_SETTINGS/STK600/IspReadOsccal/ 4.14 CMD_SPI_MULTI This is a generic command that can be used to execute any of the ISP commands. The command writes a number of bytes to the SPI bus, and returns a number of bytes. Table 4-17. Command format. Field Size Values Description Command ID 1 byte CMD_SPI_MULTI Command ID 13 8133A-AVR-04/08 Field Size Values Description NumTx 1 byte 0-255 Number of bytes to transmit NumRx 1 byte 0-255 Number of bytes to receive RxStartAddr 1 byte Start address of returned data. Specifies on what transmitted byte the response is to be stored and returned. TxData 0-255 bytes The data to be transmitted. The size is specified by NumTx If the number of bytes to receive is greater than number of bytes to transmit, then the firmware will pad with the necessary 0x00 bytes. This is in order to save timeconsuming transfer from PC to the programmer. Table 4-18. Answer format. Field Size Values Description Answer ID 1 byte CMD_SPI_MULTI Answer id Status1 1 byte STATUS_CMD_OK Will always read OK data 0-255 bytes Status2 1 byte The data read from the ISP bus as indicated in the command STATUS_CMD_OK Will always read OK 5 Parallel Programming Mode Commands 5.1 CMD_ENTER_PROGMODE_PP This command will make the target device enter programming mode if it succeeds. XML PATH: /AVRPART/ICE_SETTINGS/STK600/PpEnterProgMode/ Table 5-1. Command format. Field Size Values Description Command ID 1 byte CMD_ENTER_PROGMODE_PP Command id stabDelay 1 byte XML: stabDelay Delay (in ms) used for pin stabilization progModeDelay 1 byte XML: progModeDelay Delay (in ms) in connection with the EnterProgMode command execution latchCycles 1 byte XML: latchCycles Number of xtal cycles used to latch OSCCAL toggleVtg 1 byte XML: toggleVtg Toggle Vtg when entering prog.mode (0=no, 1=yes). For parts with RSTDSBL functionality powerOffDelay 1 byte XML: powerOffDelay Power-off delay. Additional delay (in ms) after Vtg is turned off in order to make sure the Vtg is low enough resetDelayMs 1 byte XML: resetDelayMs RSTDELAY #1 (in ms) Additional delay between Vtg is turned on and reset goes high. resetDelayUs 1 byte XML: resetDelayUs RSTDELAY #2(in us x 10) Additional delay between Vtg is turned on and reset goes high. Total delay is RSTDELAY #1 (ms) + RSTDELAY #2 (us x 10) 14 AVR079 8133A-AVR-04/08 AVR079 Table 5-2. Answer format (same for all results). Field Size Values Description Answer ID 1 byte CMD_ENTER_PROGMODE_PP Answer id Status 1 byte See table below A Result Value indicating the result of the operation Table 5-3. Valid Result Values for the answer to this command. Value Description STATUS_CMD_OK Operation succeeded STATUS_CMD_ FAILED Operation failed 5.2 CMD_LEAVE_PROGMODE_PP This command will make the target device leave programming mode if it succeeds. XML PATH: /AVRPART/ICE_SETTINGS/STK600/PpLeaveProgMode/ Table 5-4. Command format. Field Size Values Description Command ID 1 byte CMD_LEAVE_PROGMODE_PP Command id StabDelay 1 byte XML: stabDelay Delay (in ms) used for pin stabilization ResetDelay 1 byte XML: resetDelay Delay (ms) for holding RESET low Field Size Values Description Answer ID 1 byte CMD_LEAVE_PROGMODE_PP Answer id Status 1 byte STATUS_CMD_OK Table 5-5. Answer format. A Result Value indicating the result of the operation 5.3 CMD_CHIP_ERASE_PP This command will perform a chip erase on the target device if it succeeds. XML PATH: /AVRPART/ICE_SETTINGS/STK600/PpChipErase/ Table 5-6. Command format. Field Size Values Description Command ID 1 byte CMD_CHIP_ERASE_PP Command id pulseWidth 1 byte XML: pulseWidth Width (in ms) of the /WR pulse. 0 => 1 cycle pollTimeout 1 byte XML: pollTimeout Timeout period (in ms) to wait for RDY/BSY flag to rise. If 0, RDY/BSY flag is NOT used. Table 5-7. Answer format (same for all results). Field Size Values Description 15 8133A-AVR-04/08 Field Size Values Description Answer ID 1 byte CMD_CHIP_ERASE_PP Answer id Status 1 byte See table below A Result Value indicating the result of the operation Table 5-8. Valid Result Values for the answer to this command. Value Description STATUS_CMD_OK Operation succeeded STATUS_RDY_BSY_TOUT No response from target device within specified timeframe 5.4 CMD_PROGRAM_FLASH_PP This command will program data into the FLASH memory of the target device if it succeeds. For devices with the FLASH organized in pages, the data address and size used with this command must confirm to that of the device. I.e. one ProgramFlash command is used to program one page in the target device. XML PATH: /AVRPART/ICE_SETTINGS/STK600/PpProgramFlash/ Table 5-9. Command format. Field Size Values Description Command ID 1 byte CMD_PROGRAM_FLASH_PP Command id Nmb bytes (MSB 1 byte Total number of bytes to program (MSB) Nmb bytes (LSB) 1 byte Total number of bytes to program (LSB) (1) 1 byte XML: mode, *see description below Mode byte, *see description below pollTimeout 1 byte XML: pollTimeout pollTimeout (in ms) Data 1 byte Data 1 Data 1 byte ... Data 1 byte Data N Mode Notes: 1. See details in list below. Mode byte description • Bit 0: This bit indicates whether to use byte ‘0’ or page ‘1’ programming. • Bit 1-3 are the pagesize bits, pagesize are given in bytes not words, see table below. • Bit 4-5 are not in use. • Bit 6 must be set to ‘1’ when it is the very last page to be programmed, otherwise ‘0’. • Bit 7 indicates if a page write should be issued (Transfer data to flash). Normally it should always be set ‘1’. However, if the page size of the target device is too large to be covered by one Program Flash command (because the amount of available SRAM in STK600 is limited) this can be used to let 2 or more commands fill the page buffer of the target device. The transfer data to flash flag should then only be set on the last command. 16 AVR079 8133A-AVR-04/08 AVR079 Table 5-10. Mode byte description. Pagesize \ bit 3 2 1 256 0 0 0 2 0 0 1 4 0 1 0 8 0 1 1 16 1 0 0 32 1 0 1 64 1 1 0 128 1 1 1 NOTE: that only Bit 0-3 are set in the XML file, cause Bit 6-7 are not static and must be controlled by the PC Frontend. Table 5-11. Answer format /(same for all results). Field Size Values Description Answer ID 1 byte CMD_PROGRAM_FLASH_PP Answer id Status 1 byte See table below A Result Value indicating the result of the operation Table 5-12. Valid Result Values for the answer to this command. Value Description STATUS_CMD_OK Operation succeeded STATUS_RDY_BSY_TOUT No response from target device within specified timeframe 5.5 CMD_READ_FLASH_PP This command will read data from the FLASH memory of the target device if it succeeds. For devices with the FLASH organized in pages, the data address and size used with this command must confirm to that of the device. I.e. one ReadFlash command is used to read one page in the target device. XML PATH: /AVRPART/ICE_SETTINGS/STK600/PpReadFlash/ Table 5-13. Command format. Field Size Values Description Command ID 1 byte CMD_READ_FLASH_PP Command id Nmb bytes (MSB) 1 byte Total number of bytes to read (MSB) Nmb bytes (LSB) 1 byte Total number of bytes to read (LSB) Table 5-14. Answer format if the command is executed. Field Size Values Description Answer ID 1 byte CMD_READ_FLASH_PP Answer id 17 8133A-AVR-04/08 Field Size Values Status 1 byte STATUS_CMD_OK Data Nmb bytes Status 1 byte Description Data read from device. Will be padded with 0’s if errors occurred during read-out. A Result Value indicating the result of the operation STATUS_CMD_OK 5.6 CMD_PROGRAM_EEPROM_PP This command programs one page the EEPROM memory of the target device if it succeeds. XML PATH: /AVRPART/ICE_SETTINGS/STK600/PpReadEeprom/ Command format: See CMD_PROGRAM_FLASH_PP. 5.7 CMD_READ_EEPROM_PP This command will read data from the EEPROM memory of the target device if it succeeds. XML PATH: /AVRPART/ICE_SETTINGS/STK600/PpReadEeprom/ Command format: See CMD_READ_FLASH_PP 5.8 CMD_PROGRAM_FUSE_PP XML PATH: /AVRPART/ICE_SETTINGS/STK600/PpProgramFuse/ Table 5-15. Command format. Field Size Values Description Command ID 1 byte CMD_PROGRAM_FUSE_PP Command id Address 1 byte address of fuse byte to program (low, high, ext, ext2) Data 1 byte fuse byte value to be programmed pulseWidth 1 byte XML: pulseWidth width (ms) of /WR pulse (0 => 1 cycle) 1 byte XML: pollTimeout Time-out (ms) for polling RDY/BSY (0 = don’t poll) Field Size Values Description Answer ID 1 byte CMD_PROGRAM_FUSE_PP Answer id Status 1 byte See table below A Result Value indicating the result of the operation pollTimeout Table 5-16. Answer format. Table 5-17. Valid Result Values for the answer to this command. 18 Value Description STATUS_CMD_OK Operation succeeded AVR079 8133A-AVR-04/08 AVR079 Value Description STATUS_RDY_BSY_TOUT No response from target device within specified timeframe 5.9 CMD_READ_FUSE_PP XML PATH: /AVRPART/ICE_SETTINGS/STK600/PpReadFuse/ Table 5-18. Command format. Field Size Values Description Command ID 1 byte CMD_READ_FUSE_PP Command id 1 byte address of fuse byte to read Table 5-19. Answer format if command was executed. Field Size Values Description Answer ID 1 byte CMD_ READ_FUSE Answer id Status 1 byte STATUS_CMD_OK Data 1 byte Data read from device. Contains the read low, high or ext fuse byte. Will be padded with 0’s if errors occurred during read-out. 5.10 CMD_PROGRAM_LOCK_PP See CMD_PROGRAM_FUSE. Note: Address must be sent but is ignored by firmware. XML PATH: /AVRPART/ICE_SETTINGS/STK600/PpProgramLock/ 5.11 CMD_READ_LOCK_PP See CMD_READ_FUSE_PP. Note: Address field must be sent but is ignored by firmware. XML PATH: /AVRPART/ICE_SETTINGS/STK600/PpReadLock/ 5.12 CMD_READ_SIGNATURE_PP See CMD_READ_FUSE. XML PATH: /AVRPART/ICE_SETTINGS/STK600/PpReadSign/ 5.13 CMD_READ_OSCCAL_PP See CMD_READ_FUSE. XML PATH: /AVRPART/ICE_SETTINGS/STK600/PpReadOsccal/ 19 8133A-AVR-04/08 5.14 CMD_SET_CONTROL_STACK This command uploads the control stack to the STK. This is used for both PP and HVSP. Note: The Control stack must always be uploaded before performing any programming commands in high voltage mode if the STK600 has been powered down. To check if the controller PARAM_CONTROLLER_INIT. has a valid control stack: Read Se chapter 11.7: PARAM_CONTROLLER_INIT Table 5-20. Command format. Field Size Values Description Command ID 1 byte CMD_SET_CONTROL_STACK Command id Data 32byte Control stack Data Table 5-21. Answer format if command was executed. Field Size Values Description Answer ID 1 byte CMD_SET_CONTROL_STA CK Answer id Status 1 byte STATUS_CMD_OK A Result Value indicating the result of the operation 6 High Voltage Serial Programming Commands This chapter describes the High Voltage Serial Programming (HVSP) commands. Note that the SetControlStack command is required for HVSP as for PP. Description of the SetControlStack is found in chapter 5.14 CMD_SET_CONTROL_STACK 6.1 CMD_ENTER_PROGMODE_HVSP This command will make the target device enter programming mode if it succeeds. XML path: /AVRPART/ICE_SETTINGS/STK600/HvspEnterProgMode/ Table 6-1. Command format. Field Size Values Description Command ID 1 byte CMD_ENTER_PROGMODE_H VSP Command id StabDelay 1 byte XML: stabDelay Delay (in ms) used for pin stabilization CmdexeDelay 1 byte XML: cmdexeDelay Delay (in ms) in connection with the EnterProgMode command execution SynchCycles 1 byte XML: synchCycles Number of synchronization clock cycles LatchCycles 1 byte XML: latchCycles Number of PulseXtal1_HVSP cycles ToggleVtg 1 byte XML: toggleVtg Toggle Vtg when entering prog.mode (0=no, 1=yes). For parts with RSTDSBL functionality 20 AVR079 8133A-AVR-04/08 AVR079 Field Size Values Description PowoffDelay 1 byte XML: powoffDelay Power-off delay. Additional delay (in ms) after Vtg is turned off in order to make sure the Vtg is low enough resetDelay1 1 byte XML: resetDelay1 RSTDELAY #1 (in ms) Additional delay between Vtg is turned on and reset goes high. resetDelay2 1 byte XML: resetDelay2 RSTDELAY #2(in us x 10) Additional delay between Vtg is turned on and reset goes high. Total delay is RSTDELAY #1 (ms) + RSTDELAY #2 (us x 10) Field Size Values Description Answer ID 1 byte CMD_ENTER_PROGMODE_H VSP Answer id Status 1 byte STATUS_CMD_OK or STATUS_CMD_FAILED A Result Value indicating the result of the operation. If failed the target voltage is >5.5V or <4.5V Table 6-2. Answer format. 6.2 CMD_LEAVE_PROGMODE_HVSP This command will make the target device leave programming mode if it succeeds. XML path: /AVRPART/ICE_SETTINGS/STK600/HvspLeaveProgMode/ Table 6-3. Command format. Field Size Values Description Command ID 1 byte CMD_LEAVE_PROGMODE_HV Command id SP stabDelay 1 byte XML: stabDelay Delay (in ms) used for pin stabilization resetDelay 1 byte XML: resetDelay Delay (in ms) in connection with the LeaveProgMode command execution and Reset_low_duration Field Size Values Description Answer ID 1 byte CMD_LEAVE_PROGMODE_HV Answer id SP Status 1 byte STATUS_CMD_OK Table 6-4. Answer format. A Result Value indicating the result of the operation. Will always read OK 6.3 CMD_CHIP_ERASE_HVSP This command will perform a chip erase on the target device if it succeeds. XML path: /AVRPART/ICE_SETTINGS/STK600/HvspChipErase/ 21 8133A-AVR-04/08 Table 6-5. Command format. Field Size Values Description Command ID 1 byte CMD_CHIP_ERASE_HVSP Command id pollTimeout 1 byte XML: pollTimeout Timeout period (in ms) to wait for RDY/BSY flag to rise. If 0, RDY/BSY flag is NOT used. eraseTime 1 byte XML: eraseTime Delay (in ms) to ensure that the erase of the device is finished. If 0, polling will be used. Field Size Values Description Answer ID 1 byte CMD_CHIP_ERASE_HVSP Answer id Status 1 byte STATUS_CMD_OK or STATUS_RDY_BSY_TOUT A Result Value indicating the result of the operation. Table 6-6. Answer format. 6.4 CMD_PROGRAM_FLASH_HVSP This command will program data into the FLASH memory of the target device if it succeeds. For devices with the FLASH organized in pages, the data address and size used with this command must confirm to that of the device. I.e. one ProgramFlash command is used to program one page in the target device. XML path: /AVRPART/ICE_SETTINGS/STK600/HvspProgramFlash/ Table 6-7. Command format. Field Size Values Command ID 1 byte CMD_PROGRAM_FLASH_HVS Command id P NumBytes 2 byte XML: blockSize Total number of bytes to program, MSB first 1 byte XML: mode Mode byte, *see description below pollTimeout 1 byte XML: pollTimeout pollTimeout (in ms) Data 1 1 byte … ..... Data N 1 byte Mode (1) Notes: 1. Description Data 1 ..... ...... Data N See details in table below. Mode byte description • Bit 0: This bit indicates whether to use byte ‘0’ or page ‘1’ programming. • Bit 1-3 are the pagesize bits, pagesize are given in bytes not words, see table below. • Bit 4-5 are not in use. • Bit 6 must be set to ‘1’ when it is the very last page to be programmed, otherwise ‘0’ • Bit 7 indicates if a page write should be issued (Transfer data to flash). Normally it should always be set ‘1’. However, if the page size of the target device is too large to be covered by one Program Flash command (because the amount of available SRAM in STK600 is limited) this can be used to let 2 or more commands fill the 22 AVR079 8133A-AVR-04/08 AVR079 page buffer of the target device. The transfer data to flash flag should then only be set on the last command. Table 6-8. Mode byte description. Pagesize \ bit 3 2 1 256 0 0 0 2 0 0 1 4 0 1 0 8 0 1 1 16 1 0 0 32 1 0 1 64 1 1 0 128 1 1 1 NOTE: that only Bit 0-3 are set in the XML file, cause Bit 6-7 are not static and must be controlled by the PC Frontend. Table 6-9. Answer format. Field Size Values Description Answer ID 1 byte CMD_CHIP_ERASE_HVSP Answer id Status 1 byte STATUS_CMD_OK or STATUS_RDY_BSY_TOUT A Result Value indicating the result of the operation. 6.5 CMD_READ_FLASH_HVSP This command will read data from the FLASH memory of the target device if it succeeds. For devices with the FLASH organized in pages, the data address and size used with this command must confirm to that of the device. I.e. one ReadFlash command is used to read one page in the target device. XML path: /AVRPART/ICE_SETTINGS/STK600/HvspReadFlash/ Table 6-10. Command format. Field Size Values Description Command ID 1 byte CMD_READ_FLASH_HVSP Command id NumBytes 2 byte XML: blockSize Total number of bytes to read, MSB first Table 6-11. Answer format if the command is executed. Field Size Values Description Answer ID 1 byte CMD_READ_FLASH_HVSP Answer id Status1 1 byte STATUS_CMD_OK Temporary status, will always read OK Data Byte*N Status2 1 byte Data read from device. Will be padded with 0’s if errors occurred during read-out. STATUS_CMD_OK A Result Value indicating the result of the operation. Will always read OK 23 8133A-AVR-04/08 6.6 CMD_PROGRAM_EEPROM_HVSP See the CMD_WRITE_FLASH_HVSP command. XML path: /AVRPART/ICE_SETTINGS/STK600/HvspProgramEeprom/ 6.7 CMD_READ_EEPROM_HVSP See the CMD_READ_FLASH_HVSP command. XML path: /AVRPART/ICE_SETTINGS/STK600/HvspReadEeprom/ 6.8 CMD_PROGRAM_FUSE_HVSP This command programs one fuse byte, addressed by the Fuse Address byte. XML path: /AVRPART/ICE_SETTINGS/STK600/HvspProgramFuse/ Table 6-12. Command format. Field Size Values Description Command ID 1 byte CMD_PROGRAM_FUSE_HVSP Command id Fuse Address 1 byte 0, 1 or 2 Address of byte to write (0=low, 1=high, 2=ext) Fuse byte value (low, high or ext) to be programmed Fuse Byte 1 byte pollTimeout 1 byte XML: pollTimeout Poll timeout Field Size Values Description Answer ID 1 byte CMD_CHIP_ERASE_HVSP Answer id Status 1 byte STATUS_CMD_OK or STATUS_RDY_BSY_TOUT A Result Value indicating the result of the operation. Table 6-13. Answer format. 6.9 CMD_READ_FUSE_HVSP This command programs one fuse byte, addressed by the Fuse Address byte. XML path: /AVRPART/ICE_SETTINGS/STK600/HvspReadFuse/ Table 6-14. Command format. Field Size Values Description Command ID 1 byte CMD_ READ_FUSE_HVSP Command id Fuse Address 1 byte 0, 1 or 2 Address of byte to read (0=low, 1=high, 2=ext) 24 AVR079 8133A-AVR-04/08 AVR079 Table 6-15. Answer format. Field Size Values Description Answer ID 1 byte CMD_ READ_FUSE_HVSP Answer id Status 1 byte STATUS_CMD_OK A Result Value indicating the result of the operation. Will always read OK Fuse Byte 1 byte Data read from device. Contains the read low, high or ext fuse byte. Will be padded with 0’s if errors occurred during read-out. 6.10 CMD_PROGRAM_LOCK_HVSP See CMD_PROGRAM_FUSE_HVSP. Note: Address is required but ignored. 6.11 CMD_READ_LOCK_HVSP See CMD_READ_FUSE_HVSP. Note: Address is required but ignored. 6.12 CMD_READ_SIGNATURE_HVSP See CMD_READ_FUSE_HVSP. 6.13 CMD_READ_OSCCAL_HVSP See CMD_READ_FUSE_HVSP. 7 AVR8 JTAG All AVR8 jtag commands start with CMD_JTAG_AVR (0x90) The implementation of JTAG programming in STK600 is in equal to the JTAGICE mkII (see T0152-0007 JTAGICE mkII Communication Protocol) but without the JTAGICE mkII message structure and fifo packages, i.e. only the message body is used in STK600. Table 7-1. Overall command format. Field Size Values Description AVR8JTAG id 1 byte CMD_JTAG_AVR Command id, “JTAGICE wrapper” Ice_command 1 byte CMND_xxxx JTAG command Payload n byte JTAG command specific Table 7-2. Overall answer format. Field Size Values Description Answer ID 1 byte CMD_JTAG_AVR Command id ICE answer msg body n byte 25 8133A-AVR-04/08 Before issuing any AVR8 JTAG commands the following parameters must be set correctly with the CMD_SET_PARAMETER command: • • • • • • • • • PARAM_JTAG_ALLOW_FULL_PAGE_STREAM PARAM_JTAG_EEPROM_PAGE_SIZE PARAM2_JTAG_FLASH_PAGE_SIZE PARAM2_JTAG_FLASH_SIZE_H PARAM2_JTAG_FLASH_SIZE_L PARAM_JTAG_DAISY_BITS_BEFORE PARAM_JTAG_DAISY_BITS_AFTER PARAM_JTAG_DAISY_UNITS_BEFORE PARAM_JTAG_DAISY_UNITS_AFTER 7.1 Memory Read / Write The following memory modes are defined for CMND_WRITE_MEMORY and CMND_READ_MEMORY. (The values are the same as for jtagice mkII) Table 7-3. Valid Result Values for the answer to this command. Name Value JTAGC_MemType_FLASH_PAGE 0xB0 JTAGC_MemType_EEPROM_PAGE 0xB1 JTAGC_MemType_FUSE_BITS 0xB2 JTAGC_MemType_LOCK_BITS 0xB3 JTAGC_MemType_SIGN_JTAG (ro) 0xB4 JTAGC_MemType_OSCCAL_BYTE (ro) 0xB5 7.1.1 CMND_READ_MEMORY This commands reads a specified amount of bytes from the chosen target MCU memory. The target MCU must be in programming mode (CMND_ENTER_PROGMODE) before issuing this command. Table 7-4. Command format. Field Size Values Description AVR8JTAG id 1 byte CMD_JTAG_AVR Command id Message ID 1 byte CMND_WRITE_MEMORY (0x05) Memory type 1 byte JTAGC_MemType_xxxx See table above Byte count 4 bytes Lsb first Number of bytes to write Start address 4 bytes Lsb first Start memory address 26 AVR079 8133A-AVR-04/08 AVR079 Table 7-5. Answer format. Field Size Values Description Answer id 1 byte CMD_JTAG_AVR Answer id Status 1 byte STATUS_CMD_OK STATUS_CMD_FAILED Data n bytes Payload if STATUS_CMD_OK 7.1.2 CMND_WRITE_MEMORY This commands writes a specified amount of bytes to the chosen target MCU memory. The target MCU must be in programming mode (CMND_ENTER_PROGMODE) before issuing this command. Table 7-6. Command format. Field Size Values Description AVR8JTAG id Message ID 1 byte CMD_JTAG_AVR Command id 1 byte CMND_WRITE_MEMORY (0x04) Memory type 1 byte JTAGC_MemType_xxxx See table above Byte count 4 bytes Lsb first Number of bytes to write Start address 4 bytes Lsb first Start memory address Data n bytes data Byte count bytes of data Field Size Values Description Answer id 1 byte CMD_JTAG_AVR Answer id Status 1 byte STATUS_CMD_OK STATUS_CMD_TOUT STATUS_CMD_FAILED Table 7-7. Answer format. 7.1.3 CMND_RESET This command will place the RESET instruction into the JTAG instruction register. The target MCU must be in programming mode (CMND_ENTER_PROGMODE) before issuing this command. Table 7-8. Command format. Field Size Values Description AVR8JTAG id 1 byte CMD_JTAG_AVR Command id Message ID 1 byte CMND_RESET (0x0B) Size Values Description Answer id Table 7-9. Answer format. Field Answer id 1 byte CMD_JTAG_AVR Status 1 byte STATUS_CMD_OK 27 8133A-AVR-04/08 7.1.4 CMND_ENTER_PROGMODE This command enables communication between the STK600 and the target MCU and should be the first JTAG command sent to the STK600. After receiving this command the MCU is held in reset state and memory read and write is allowed. Table 7-10. Command format. Field Size Values Description AVR8JTAG id 1 byte CMD_JTAG_AVR Command id Message ID 1 byte CMND_ENTER_PROGMODE (0x14) Field Size Values Description Answer id 1 byte CMD_JTAG_AVR Answer id status 1 byte STATUS_CMD_OK STATUS_CMD_FAILED If failed the JTAG id was not read successfully from target Table 7-11. Answer format. 7.1.5 CMND_LEAVE_PROGMODE This command releases the target MCU which will run freely from the reset vector. Table 7-12. Command format. Field Size Values Description AVR8JTAG id 1 byte CMD_JTAG_AVR Command id Message ID 1 byte CMND_LEAVE_PROGMODE (0x15) Field Size Values Description Answer id 1 byte CMD_JTAG_AVR Answer id status 1 byte STATUS_CMD_OK Table 7-13. Answer format. 7.1.6 CMND_CHIP_ERASE This command erases all memory and releases the lock bits of the target MCU. Table 7-14. Command format. Field Size Values Description AVR8JTAG id 1 byte CMD_JTAG_AVR Command id Message ID 1 byte CMND_CHIP_ERASE (0x13) Field Size Values Description Answer id 1 byte CMD_JTAG_AVR Answer id 1 byte STATUS_CMD_OK STATUS_CMD_TOUT Table 7-15. Answer format. status 28 AVR079 8133A-AVR-04/08 AVR079 8 AVR32 JTAG All AVR32 jtag commands except for ENTER_PROGMODE LEAVE_PROGMODE start with CMD_JTAG_AVR32 (0x80) and The implementation of JTAG programming in STK600 is in equal to the JTAGICE mkII (see T0152-0007 JTAGICE mkII Communication Protocol) but without the JTAGICE mk II message structure and fifo packages, i.e. only the message body is used in STK600. Before issuing any AVR32 JTAG commands the following parameters must be set correctly with the CMD_SET_PARAMETER command: • • • • PARAM_JTAG_DAISY_BITS_BEFORE PARAM_JTAG_DAISY_BITS_AFTER PARAM_JTAG_DAISY_UNITS_BEFORE PARAM_JTAG_DAISY_UNITS_AFTER 8.1 CMD_ENTER_PROGMODE_JTAG_AVR32 This command enables communication with the JTAG interface on the AVR32. This command should be the first AVR32 JTAG command issued. Table 8-1. Command format. Field Size Values Description AVR32JTAG id 1 byte CMD_ENTER_PROGMODE_32 (0x81) Command id Field Size Values Answer id 1 byte CMD_ENTER_PROGMODE_32 Answer id status 1 byte STATUS_CMD_OK Table 8-2. Answer format. Description 8.2 CMD_LEAVE_PROGMODE_JTAG_AVR32 This command disables the JTAG interface. Table 8-3. Command format. Field Size Values Description AVR32JTAG id 1 byte CMD_LEAVE_PROGMODE_32 Command id (0x82) Size Values Description Answer id Table 8-4. Answer format. Field Answer id 1 byte CMD_LEAVE_PROGMODE_32 status 1 byte STATUS_CMD_OK 29 8133A-AVR-04/08 8.3 CMD_RESET_AVR32 This command places the given reset value into the JTAG reset register of the target MCU. Table 8-5. Command format. Field Size Values Description AVR32JTAG id 1 byte CMD_JTAG_AVR32 Command id (0x80) ICE command 1 byte CMND_AVR32_RESET (0x2b) Reset value 1 byte MCU specific Field Size Values Description Answer id 1 byte CMD_JTAG_AVR32 Answer id status 1 byte STATUS_CMD_OK Reset value Table 8-6. Answer format. 8.4 CMD_SAB_WRITE_AVR32 This command writes a word to the given SAB address in the target MCU Table 8-7. Command format. Field Size Values Description AVR32JTAG id 1 byte CMD_JTAG_AVR32 Command id (0x80) ICE command 1 byte CMND_JTAG_SAB_WRITE (0x28) SAB address 5 bytes Sab address Data 4 bytes (msb first) (msb first) Table 8-8. Answer format. Field Size Values Description Answer id 1 byte CMD_JTAG_AVR32 Answer id status 1 byte RSP_OK RSP_FAILED 8.5 CMD_SAB_READ_AVR32 This command reads a word from the given SAB address from the target MCU. Table 8-9. Command format. Field Size Values Description AVR32JTAG id 1 byte CMD_JTAG_AVR32 Command id (0x80) ICE command 1 byte CMND_JTAG_SAB_READ (0x29) SAB address 5 bytes 30 (msb first) AVR079 8133A-AVR-04/08 AVR079 Table 8-10. Answer format. Field Size Values Description Answer id 1 byte CMD_JTAG_AVR32 Answer id status 1 byte RSP_FAILED RSP_SCAN_CHAIN_READ data 4 bytes If RSP_SCAN_CHAIN_READ 8.6 CMD_BLOCK_WRITE_AVR32 This command writes a block of data starting at the specified SAB address. N should be less than 64 to comply with the maximum data buffer of STK600. Table 8-11. Command format. Field Size Values Description Command id (0x80) AVR32JTAG id 1 byte CMD_JTAG_AVR32 ICE command 1 byte CMND_JTAG_ BLOCK_WRITE (0x2d) count 1 byte n SAB address 8 bytes data n * 4 bytes Number of words < 64 0 padded, msb first Table 8-12. Answer format. Field Size Values Description Answer id 1 byte CMD_JTAG_AVR32 Answer id Status 1 byte RSP_OK RSP_FAILED RSP_ILLEGAL_VALUE 8.7 CMD_ BLOCK_READ_AVR32 This command reads a block of data starting at the specified SAB address. N should be less than 64 to comply with the maximum data buffer of STK600 Table 8-13. Command format. Field Size Values Description AVR32JTAG id 1 byte CMD_JTAG_AVR32 Command id (0x80) ICE command 1 byte CMND_JTAG_BLOCK_READ (0x2c) Count 1 byte n SAB address 5 bytes Number of words 31 8133A-AVR-04/08 Table 8-14. Answer format. Field Size Values Description Answer id 1 byte CMD_JTAG_AVR32 Answer id Status 1 byte RSP_FAILED RSP_ILLEGAL_VALUE RSP_SCAN_CHAIN_READ Data n * 4 bytes If RSP_SCAN_CHAIN_READ 8.8 CMD_NEXUS_WRITE_AVR32 This command writes a word to the specified nexus register. It is equivalent to a SAB write to address OCD_REGISTER + <register> * 4. Table 8-15. Command format. Field Size Values Description AVR32JTAG id 1 byte CMD_JTAG_AVR32 Command id (0x80) ICE command 1 byte CMND_JTAG_NEXUS_WRITE (0x26) register 1 byte Data 4 bytes Table 8-16. Answer format. Field Size Values Description Answer id 1 byte CMD_JTAG_AVR32 Answer id status 1 byte RSP_OK RSP_FAILED 8.9 CMD_NEXUS_READ_AVR32 This command reads a word to the specified nexus register. It is equivalent to a SAB read from address OCD_REGISTER + <register> * 4. Table 8-17. Command format. Field Size Values Description AVR32JTAG id 1 byte CMD_JTAG_AVR32 Command id (0x80) ICE command 1 byte CMND_JTAG_NEXUS_READ (0x27) Register 1 byte Table 8-18. Answer format. Field Size Values Description Answer id 1 byte CMD_JTAG_AVR32 Answer id status 1 byte RSP_FAILED RSP_SCAN_CHAIN_READ Data 4 bytes 32 If RSP_SCAN_CHAIN_READ AVR079 8133A-AVR-04/08 AVR079 9 XPROG protocol The XPROG programming protocol is used with the ATxmega devices, and can use both JTAG and PDI as the physical interface. All multi-byte values (e.g. address and length fields) are big endian. 9.1 CMD_XPROG_SETMODE Before using any of the XPROG commands, the descried XPROG interface must be selected. This can either be PDI or JTAG. Table 9-1. Command format. Offset Field (1) Size Values 0 Command ID 1 byte CMD_XPROG_SETMODE 1 (2) 1 byte 0 = PDI mode, 1 = JTAG mode Notes: Mode 1. The command identifier. 2. Set which of the physical interfaces to use: 0 = PDI, 1 = JTAG. Table 9-2. Answer format. Offset Field (1) 0 Command ID 1 Notes: Status (2) Size Values 1 byte CMD_XPROG_SETMODE 1 byte 1. The command identifier. 2. One of the defined error codes. XPRG_ERR_OK indicates success. 9.2 CMD_XPROG This is STK600’s wrapper command for all XPROG specific commands. Table 9-3. Command format. Offset Field (1) 0 Command ID 1 Notes: XPROG Command (2) Size Values 1 byte CMD_XPROG n bytes Any XPROG command 1. The command identifier. 2. This part of the STK600 command contains the XPROG command. Table 9-4. Answer format. Offset Field (1) Size Values 0 Command ID 1 byte CMD_XPROG 1 XPROG answer(2) n byte Any XPROG command’s answer Notes: 1. The command identifier. 2. The answer for the XPROG command is placed in this filed. The length of the field is depending on the XPROG command. 33 8133A-AVR-04/08 The XPROG commands are described in the following section. The offsets indicated are offsets in the XPROG part of the CMD_XPROG command. To find the absolute offset in the STK600 command, add one. 9.2.1 XPRG_ENTER_PROGMODE This command enables programming mode in the device by enabling the programming interface hardware and sending the programming key. Note: Before using this instruction, the programming interface (PDI or JTAG) must have been set by the programmer specific ‘set mode’ command. Table 9-5. Command format. Offset Field (1) 0 Notes: Command ID 1. Size Values 1 byte XPRG_ENTER_PROGMODE Size Values 1 byte XPRG_ENTER_PROGMODE The command identifier Table 9-6. Answer format. Offset Field (1) 0 Command ID 1 Notes: Status (2) 1 byte 1. The command identifier. 2. One of the defined error codes. 9.2.2 XPRG_LEAVE_PROGMODE This command leaves the device’s programming mode by clearing the reset flags and disabling the programming interface in hardware. Table 9-7. Command format. Offset Field (1) 0 Notes: Command ID 1. Size Values 1 byte XPRG_LEAVE_PROGMODE Size Values 1 byte XPRG_ LEAVE _PROGMODE The command identifier Table 9-8. Answer format. Offset Field (1) 0 Command ID 1 Notes: Status (2) 1 byte 1. The command identifier. 2. XPRG_ERR_OK indicates success. 9.2.3 XPRG_SET_PARAMETER In order to work correctly, some parameters must be set in the programmer. Use the following command to initialize the XPROG interface: 34 AVR079 8133A-AVR-04/08 AVR079 Table 9-9. Command format. Offset Field (1) 0 Command ID 1 Parameter 2 Value(3) Notes: (2) Size Values 1 byte XPRG_ENTER_PROGMODE 1 byte One of the XPRG_PARAM parameters 1-4 Depends on the parameter. 1. The command identifier 2. The parameter to set. See the appendix for the values. 3. The value’s size is depending on which parameter that is to be set. Table 9-10. Answer format. Offset Field (1) Size Values XPRG_ENTER_PROGMODE 0 Command ID 1 byte 1 Status(2) 1 byte Notes: 1. The command identifier. 2. One of the defined error codes. All parameters listed in the appendix must be set in order to initialize the interface. NOTE: Later revisions of the XPROG programming protocol may introduce new parameters. 9.2.4 XPRG_ERASE The XMega memories, fuses and lockbits can be erased at different levels: chip erase (which clears all memories and the lockbits), application erase, boot erase and EEPROM erase. There is also possible to erase single pages in flash and EEPROM 35 8133A-AVR-04/08 Table 9-11. Command format. Offset Field (1) 0 Command ID 1 Erase mode 2 Address(3) Notes: (2) Size Values 1 byte XPRG_ERASE 1 byte XPRG_ERASE_CHIP, XPRG_ERASE_APP, XPRG_ERASE_BOOT, XPRG_ERASE_EEPROM, XPRG_ERASE_APP_PAGE, XPRG_ERASE_BOOT_PAGE, XPRG_ERASE_EEPROM_PAGE or XPRG_ERASE_USERSIG 4 bytes Any 1. The command identifier 2. XPRG_ERASE_CHIP: Erases the whole chip and clears lockbits XPRG_ERASE_APP: Erases the application section XPRG_ERASE_BOOT: Erase the boot section XPRG_ERASE_EEPROM: Erases the whole EEPROM XPRG_ERASE_APP_PAGE: Erases one application page XPRG_ERASE_BOOT_PAGE: Erase one boot page XPRG_ERASE_EEPROM_PAGE: Erases one EEPROM page XPRG_ERASE_USERSIG: Erases the user signature For the other modes, the Address parameter must point to a location inside the memory area to be erased. The address is a TIF space address. 3. 3. The address parameter is ignored if erase mode is XPRG_ERASE_CHIP. Table 9-12. Answer format. Offset Field (1) 0 Command ID 1 Notes: Status (2) Size Values 1 byte XPRG_ERASE 1 byte 1. The command identifier. 2. One of the defined error codes. 9.2.5 XPRG_WRITE_MEM This command handles programming of the different XMega memories: application, boot and eeprom. Fuses, lockbits and user signatures are also programmed with this command. 36 AVR079 8133A-AVR-04/08 AVR079 Table 9-13. Command format. Offset Field 0 Size Values (1) 1 byte XPRG_ERASE (2) Command ID 1 Memory type 1 byte Application, Boot, EEPROM, Fuse, Lockbits… 2 PageMode(3) 1 byte Bitfield, see description below 4 bytes Any address 3 Address (4) (5) 7 Length 2 bytes 1 to 512 9 (6) N bytes N data bytes, size is given by the Length parameter Notes: Data 1. The command identifier 2. XPRG_MEM_TYPE_APPL XPRG_MEM_TYPE_BOOT XPRG_MEM_TYPE_EEPROM XPRG_MEM_TYPE_FUSE XPRG_MEM_TYPE_LOCKBITS XPRG_MEM_TYPE_USERSIG 3. If Memory type is XPRG_MEM_TYPE_APPL, XPRG_MEM_TYPE_BOOT or XPRG_MEM_TYPE_EEPROM: Bit 0: Write page Bit 1: Erase page 4. The start address of the data to be written. The address is in the TIF address space 5. Can be any value between 1 and 512. If page programming, and the actual page size is bigger than 256, the operation must be split into two or more XPRG_WRITE_MEM operations, where only the last operation has the Write page bit set. Note: Only APP, BOOT and EEPROM handles page operations, for any other memory type, the Length field must be set to 1. 4. The data to be written. The size is indicated by the Length field. Table 9-14. Answer format. Offset Field (1) 0 Command ID 1 Notes: Status (2) Size Values 1 byte XPRG_WRITE_MEM 1 byte 1. The command identifier. 2. One of the defined error codes. 9.2.6 XPRG_READ_MEM This command handles reading of the different XMega memories: application, boot and eeprom, signatures, fuses, lockbits and factory calibration values. 37 8133A-AVR-04/08 Table 9-15. Command format. Offset Field 0 Values 1 byte XPRG_READ_MEM (2) 1 byte Application, Boot, EEPROM, Fuse, Lockbits… Command ID 1 Memory type (3) 2 Address 6 Length(4) Notes: Size (1) 4 bytes Any address 2 bytes 1 to 256 1. The command identifier 2. XPRG_MEM_TYPE_APPL XPRG_MEM_TYPE_BOOT XPRG_MEM_TYPE_EEPROM XPRG_MEM_TYPE_FUSE XPRG_MEM_TYPE_LOCKBITS XPRG_MEM_TYPE_USERSIG XPRG_MEM_TYPE_FACTORY_CALIBRATION 3. The start address of the data to be read. The address is in the TIF address space. 4. How many bytes to be read. It can be any value between 1 and 256. Table 9-16. Answer format. Offset Field (1) 0 Command ID (2) 1 Status 2 (3) Notes: Size Values 1 byte XPRG_READ_MEM 1 byte Data N bytes 1. The command identifier. 2. One of the defined error codes. 3. The requested memory area, lowest address first. 9.2.7 XPRG_READ_CRC This command starts the CRC generator and returns a three-byte CRC. Table 9-17. Command format. Offset Field (1) 0 Command ID (2) 1 Notes: 38 CRC type 1. The command identifier 2. XPRG_CRC_APP, XPRG_CRC_BOOT XPRG_CRC_FLASH, see appendix. Size Values 1 byte XPRG_READ_CRC 1 byte Application, Boot, or entire flash or AVR079 8133A-AVR-04/08 AVR079 Table 9-18. Answer format. Offset Field (1) 0 Command ID (2) 1 Status 2 Data(3) Notes: Size Values 1 byte XPRG_READ_CRC 1 byte 3 bytes 1. The command identifier. 2. One of the defined error codes. 3. The CRC value calculated by the device itself. CRC value 10 Return Values This section describes all possible return values and their meaning in detail. 10.1 Success Table 10-1. Return values Value Meaning STATUS_CMD_OK Command executed OK 10.2 Warnings All warnings have MSB set to 1 and MSB-1 set to 0. Table 10-2. Return values Value Meaning STATUS_CMD_TOUT Command timed out STATUS_RDY_BSY_TOUT Sampling of the RDY/nBSY pin timed out STATUS_SET_PARAM_MISSING The ‘Set Device Parameters’ have not been executed in advance of this command 10.3 Errors All errors have MSB and MSB-1 set to 1. Table 10-3. Return values Value Meaning STATUS_CMD_FAILED Command failed STATUS_CKSUM_ERROR Checksum Error STATUS_CMD_UNKNOWN Unknown command 11 Parameters The following parameters can be read and/or written by the CMD_GET_PARAM and CMD_SET_PARAM commands: 39 8133A-AVR-04/08 The parameter values are either one or two bytes. For two-byte values, the high byte is read/written first. Table 11-1. One-byte parameters Value Meaning R/W PARAM_HW_VER Hardware version R PARAM_SW_MAJOR Firmware version number, master mcu R PARAM_SW_MINOR Firmware version number, master mcu R PARAM_VTARGET Target Voltage RW PARAM_STATUS Returns status register R PARAM_STATUS_TGT_CONN Status of target connection R PARAM_CONTROLLER_INIT Indicates if board has been powered down R PARAM_DISCHARGEDELAY Delay with higher resistance of reset line W PARAM_SOCKETCARD_ID Identification value for socketcard R PARAM_ROUTINGCARD_ID Identification value for routingcard R PARAM_EXPCARD_ID Identification value for expansioncard R PARAM_SW_MAJOR_SLAVE1 Firmware version number, slave 1 mcu R PARAM_SW_MINOR_SLAVE1 Firmware version number, slave 1 mcu R PARAM_SW_MAJOR_SLAVE2 Firmware version number, slave 2 mcu R PARAM_SW_MINOR_SLAVE2 Firmware version number, slave 2 mcu R/W PARAM_BOARD_ID_STATUS Returns status for valid combination of routing and socketcard R PARAM_RESET Set reset high or low R PARAM_JTAG_ALLOW_FULL_PAGE_STREAM Boolean: If target allows full page bit stream for memory read/write R PARAM_JTAG_EEPROM_PAGE_SIZE Page size of target eeprom RW PARAM_JTAG_DAISY_BITS_BEFORE Instruction register bits before R Value Meaning R/W PARAM2_SCK_DURATION ISP SCK duration RW PARAM2_AREF0 ADC reference voltage RW PARAM2_AREF1 ADC reference voltage RW PARAM2_CLOCK_CONF Register values for programmable oscillator RW PARAM2_RC_ID_TABLE_REV Routing and socketcard table revision R PARAM2_EC_ID_TABLE_REV Expansioncard table revision R PARAM2_JTAG_FLASH_PAGE_SIZE Page size of target flash RW PARAM2_JTAG_FLASH_SIZE_H High word of flash size RW PARAM2_JTAG_FLASH_SIZE_L Low word of flash size RW Table 11-2. Two-byte parameters 11.1 PARAM_HW_VER Returns a hardware revision number. 40 AVR079 8133A-AVR-04/08 AVR079 11.2 PARAM_SW_MAJOR The PARAM_SW_MAJOR and PARAM_SW_MINOR returns the firmware version of the master mcu. 11.3 PARAM_SW_MINOR See PARAM_SW_MAJOR. 11.4 PARAM_VTARGET The parameter value is voltage in volts x10, i.e. a parameter value of 42 (decimal) corresponds to 4.2V. Note: This parameter cannot be set when the STK600 is in programming mode. The maximum target voltage level is dependant on what target routing/socket board is mounted. To find the maximum allowable target voltage the board-id must be read before setting a new voltage. The maximum voltage for the board is found in “targetboard.xml” 11.5 PARAM_STATUS_TGT_CONN This parameter returns the CMD_CHECK_TARGET_CONNECTION. same status value as See chapter 3.9 The difference between using the command and the GET_PARAM is that bits 4-5 are only updated after the command has been run. 11.6 PARAM2_SCK_DURATION This is a two-byte value, which sets the ISP frequency. When using the ISP programming interface, the ISP clock frequency must not exceed what the target device supports. (The maximum ISP clock frequency depends on the device system clock, internal clock division etc.) The STK600 supports ISP frequencies from 1953 Hz up to 8.0 MHz. The value for PARAM_SCK_DURATION can be found using the following algorithm: unsigned int CalcSckDur(int freq) { sck_dur = ceil((16e6/(2*freq))-1); return __min(4096, sck_dur); // 4096 is an illegal value } 11.7 PARAM_CONTROLLER_INIT This parameter is internally set to 0 when the programmer MCU resets. The host software can write any value it wants to this parameter, and it can be read back later. 41 8133A-AVR-04/08 This parameter is intended to be used as a way of telling if the power on STK600 has been lost or turned off and then back again. This way, the host software can tell if the programmer needs to be initialized again before continuing with its operation. If the returned value is 0 the CMD_SET_CONTROL_STACK must be executed before continuing with any high voltage programming commands. 11.8 PARAM_DISCHARGEDELAY This parameter sets a time period for which the reset line has a higher resistance for each time it is toggled. The purpose is to reduce the maximum current caused by the discharge/recharge of a decoupling capacitor connected to the reset pin. When the reset is toggled a resistor of 510ohm will be switched in, which reduces the peak current to an acceptable level for the internal components of the STK600. The delay should be set to: t>510ohm*C If no capacitor is connected this parameter could be set to 0. 11.9 PARAM2_AREF0 The parameter value is voltage in volts x100, i.e. a parameter value of 449 (decimal) corresponds to 4.49V. The maximum value is 5.5V, or parameter value 550. 11.10 PARAM2_AREF1 Same as for AREF0. 11.11 PARAM2_CLOCK_CONF This is a two-byte value, which configures the chip oscillator. Table 11-3. Two-byte value. D15 D14 D13 D12 D11 D10 D9 D8 OCT3 OCT2 OCT1 OCT0 DAC9 DAC8 DAC7 DAC6 Table 11-4. Two-byte value. D7 D6 D5 D4 D3 D2 D1 D0 DAC5 DAC4 DAC3 DAC2 DAC1 DAC0 X X The frequency is given by the formula: Equation 11-1. Frequency f = 2 OCT ⋅ 42 2078 DAC 2− 1024 AVR079 8133A-AVR-04/08 AVR079 Equation 11-2. OCT ⎛ f ⎞ OCT = 3.322 log ⎜ ⎟ ⎝ 1039 ⎠ Equation 11-3. DAC 2078 ⋅ 2 (10 + OCT ) DAC = 2048 − f 11.12 PARAM_SOCKETCARD_ID Returns a byte that identifies the socket card. The file “targetboard.xml” contains a list of the cards with id values. 11.13 PARAM_ROUTINGCARD_ID Returns a byte that identifies the routing card. The file “targetboard.xml” contains a list of the cards with id values. 11.14 PARAM_EXPCARD_ID Returns a byte that identifies the expansion card. The file “targetboard.xml” contains a list of the cards with id values. 11.15 PARAM_SW_MAJOR_SLAVE1 The PARAM_SW_MAJOR_SLAVE1 and PARAM_SW_MINOR_SLAVE1 returns the firmware version of the slave 1 mcu. 11.16 PARAM_SW_MINOR_SLAVE1 See chapter 11.15 11.17 PARAM_SW_MAJOR_SLAVE2 The PARAM_SW_MAJOR_SLAVE2 and PARAM_SW_MINOR_SLAVE2 returns the firmware version of the slave 2 mcu. 11.18 PARAM_SW_MINOR_SLAVE2 See chapter 11.17 11.19 PARAM2_RC_ID_TABLE_REV Routingcard Board ID table revision 11.20 PARAM2_EC_ID_TABLE_REV Expansioncard Board ID table revision 43 8133A-AVR-04/08 11.21 PARAM_BOARD_ID_STATUS 0x00 = OK 0x01 = BoardID mismatch (VTG set to 0V) 0x02 = BoardID changed while power on STK600 (VTG set to 0V) 11.22 PARAM_RESET Used to set the reset line high or low. Will only work when the board is idle. If used when the kit is in programming mode the parameter will be ignored. 11.23 PARAM_RESET_POLARITY For backward compatability with the STK500, this parameter sets the reset polarity. 11.24 PARAM_JTAG_ALLOW_FULL_PAGE_STREAM Boolean value to indicate if the target MCU supports streaming a full flash page of data, or if each byte must be followed by a return to idle (jtag state). XML:AVRPART\ICE_SETTINGS\JTAGICEmkII\ucAllowFullPageBitstream 11.25 PARAM_JTAG_EEPROM_PAGE_SIZE Used to set the EEprom page size (in bytes) 11.26 PARAM2_JTAG_FLASH_PAGE_SIZE Used to set the flash page size (in bytes) 11.27 PARAM2_JTAG_FLASH_SIZE_H Used to set the flash size (in bytes). As this value can extend 0xffff (64k) the value is split into two parameter registers. 11.28 PARAM2_JTAG_FLASH_SIZE_L See PARAM2_JTAG_FLASH_SIZE_H 11.29 PARAM_JTAG_DAISY_BITS_BEFORE When the target MCU is part of a JTAG daisy chain the STK600 must know how many bits it should skip before and after the target. The PARAM_JTAG_DAISY_BITS_BEFORE and AFTER values specifies how many instruction register bits to skip. In the JTAG data phase all non targeted devices have the SKIP register selected. The SKIP register is one bit. The PARAM_JTAG_DAISY_UNITS_BEFORE and AFTER parameters specify the number of devices before and after the target device, and hence the total SKIP register length to ignore. Example: If the targeted AVR is placed second, in a 4 device chain with instruction register lengths 2, 2 and 5 respectively, Table 11-5. Name 44 Value AVR079 8133A-AVR-04/08 AVR079 Name Value PARAM_JTAG_DAISY_BITS_BEFORE 2 PARAM_JTAG_DAISY_BITS_AFTER 7 PARAM_JTAG_DAISY_UNITS_BEFORE 1 PARAM_JTAG_DAISY_UNITS_AFTER 2 11.30 PARAM_JTAG_DAISY_BITS_AFTER See PARAM_JTAG_DAISY_BITS_BEFORE. 11.31 PARAM_JTAG_DAISY_UNITS_BEFORE See PARAM_JTAG_DAISY_BITS_BEFORE. 11.32 PARAM_JTAG_DAISY_UNITS_AFTER See PARAM_JTAG_DAISY_BITS_BEFORE. 12 XML Parameter Values A parameter set is specific for a certain AVR device, thus the parameter settings belong in the XML part description file. Below is a description where to find the STK600 parameter values in the device specific XML file. After installing AVR Studio 4, all xml files can be found at: “\Program Files\Atmel\AVR Tools\PartDescriptionFiles\”. 45 8133A-AVR-04/08 Figure 12-1. XML file viewed in XML notepad Open the XML file in xml editor/viewer (e.g XML Notepad or Internet Explorer). All device specific values for STK600 are located under STK600 node. For parameters for the CMD_ENTER_PROGMODE_ISP command, look in /AVRPART/ICE_SETTINGS/STK600/IspEnterProgMode. 13 Command Sequence Example This chapter contains examples of how to connect to the STK600 from the PC frontend and how to read signature from a device. See chapter 2.4 Command for the description of the commands and parameters. 46 AVR079 8133A-AVR-04/08 AVR079 13.1 Connect The sequence of commands and parameters sent from PC front-end to the STK600 in order to connect is listed below. • • • • • • • • CMD_SIGN_ON CMD_GET_PARAMETER, PARAM_HW_VER CMD_GET_PARAMETER, PARAM_SW_MAJOR CMD_GET_PARAMETER, PARAM_SW_MINOR CMD_GET_PARAMETER, PARAM_SW_MAJOR_S1 CMD_GET_PARAMETER, PARAM_SW_MINOR_S1 CMD_GET_PARAMETER, PARAM_SW_MAJOR_S2 CMD_GET_PARAMETER, PARAM_SW_MINOR_S2 13.2 Read Signature The sequence of commands and parameters sent from PC front-end to the STK600 in order to read the device signature through ISP is listed below. Note that one already has to be connected to do this. • • • • • • CMD_CHECK_STATUS_TGT_CONN CMD_ENTER_PROGMODE_ISP CMD_READ_SIGNATURE_ISP CMD_READ_SIGNATURE_ISP CMD_READ_SIGNATURE_ISP CMD_LEAVE_PROGMODE_ISP 13.3 STK600 Communication Logging For further details and examples of the communication between AVR Studio and STK600 one can set up logging of all communication to a text file. This can be done by adding a register key in the Registry as described below. 1. Open the Registry by running “regedit”: Figure 13-1. Start regedit from run on the windows menu 2. Browse to the path: HKEY_CURRENT_USER\Software\Atmel\AVRTools\STK500\ 47 8133A-AVR-04/08 3. Make a new String Value (right-click > New > String Value) named “LogFilePath” 4. Enter Data e.g. ”c:\STK600Com.txt” (right-click ”LogFilePath” > Modify > enter Value Data) Figure 13-2. Adding registry string The communication log for an ISP read signature of an ATmega2560 is shown below. Compare the command and answer data with the format tables in chapter 4.9 48 AVR079 8133A-AVR-04/08 AVR079 Figure 13-3. Communication log of ISP read signature of ATmega2560 49 8133A-AVR-04/08 Appendix A.1 Commands and parameters // *** General command constants *** #define CMD_SIGN_ON 0x01 #define CMD_SET_PARAMETER 0x02 #define CMD_GET_PARAMETER 0x03 #define CMD_OSCCAL 0x05 #define CMD_LOAD_ADDRESS 0x06 #define CMD_FIRMWARE_UPGRADE 0x07 #define CMD_RESET_PROTECTION 0x0A #define CMD_CHECK_TARGET_CONNECTION 0x0D #define CMD_LOAD_RC_ID_TABLE 0x0E #define CMD_LOAD_EC_ID_TABLE 0x0F #define CMD_CLEAR_RC_ID_TABLE 0x09 // *** ISP command constants *** #define CMD_ENTER_PROGMODE_ISP 0x10 #define CMD_LEAVE_PROGMODE_ISP 0x11 #define CMD_CHIP_ERASE_ISP 0x12 #define CMD_PROGRAM_FLASH_ISP 0x13 #define CMD_READ_FLASH_ISP 0x14 #define CMD_PROGRAM_EEPROM_ISP 0x15 #define CMD_READ_EEPROM_ISP 0x16 #define CMD_PROGRAM_FUSE_ISP 0x17 #define CMD_READ_FUSE_ISP 0x18 #define CMD_PROGRAM_LOCK_ISP 0x19 #define CMD_READ_LOCK_ISP 0x1A #define CMD_READ_SIGNATURE_ISP 0x1B #define CMD_READ_OSCCAL_ISP 0x1C #define CMD_SPI_MULTI 0x1D // *** PP command constants *** 50 #define CMD_ENTER_PROGMODE_PP 0x20 #define CMD_LEAVE_PROGMODE_PP 0x21 #define CMD_CHIP_ERASE_PP 0x22 #define CMD_PROGRAM_FLASH_PP 0x23 #define CMD_READ_FLASH_PP 0x24 #define CMD_PROGRAM_EEPROM_PP 0x25 #define CMD_READ_EEPROM_PP 0x26 AVR079 8133A-AVR-04/08 AVR079 #define CMD_PROGRAM_FUSE_PP 0x27 #define CMD_READ_FUSE_PP 0x28 #define CMD_PROGRAM_LOCK_PP 0x29 #define CMD_READ_LOCK_PP 0x2A #define CMD_READ_SIGNATURE_PP 0x2B #define CMD_READ_OSCCAL_PP 0x2C #define CMD_SET_CONTROL_STACK 0x2D // *** STK HVSP command constants *** #define CMD_ENTER_PROGMODE_HVSP 0x3D #define CMD_LEAVE_PROGMODE_HVSP 0x3E #define CMD_CHIP_ERASE_HVSP 0x32 #define CMD_PROGRAM_FLASH_HVSP 0x33 #define CMD_READ_FLASH_HVSP 0x34 #define CMD_PROGRAM_EEPROM_HVSP 0x35 #define CMD_READ_EEPROM_HVSP 0x36 #define CMD_PROGRAM_FUSE_HVSP 0x37 #define CMD_READ_FUSE_HVSP 0x38 #define CMD_PROGRAM_LOCK_HVSP 0x39 #define CMD_READ_LOCK_HVSP 0x3A #define CMD_READ_SIGNATURE_HVSP 0x3B #define CMD_READ_OSCCAL_HVSP 0x3C // *** XPROG command constants *** #define CMD_XPROG 0x50 #define CMD_XPROG_SETMODE 0x51 // *** AVR32 JTAG Programming command *** #define CMD_JTAG_AVR32 0x80 #define CMD_ENTER_PROGMODE_JTAG_AVR32 0x81 #define CMD_LEAVE_PROGMODE_JTAG_AVR32 0x82 // *** AVR JTAG Programming command *** #define CMD_JTAG_AVR 0x90 // *** Status constants *** // Success 51 8133A-AVR-04/08 #define STATUS_CMD_OK 0x00 // Warnings #define STATUS_CMD_TOUT 0x80 #define STATUS_RDY_BSY_TOUT 0x81 #define STATUS_SET_PARAM_MISSING 0x82 // Errors #define STATUS_CMD_FAILED 0xC0 #define STATUS_CMD_UNKNOWN 0xC9 #define STATUS_CMD_ILLEGAL_PARAMETER 0xCA // Status #define STATUS_CONN_FAIL_MOSI 0x01 #define STATUS_CONN_FAIL_RST 0x02 #define STATUS_CONN_FAIL_SCK 0x04 #define STATUS_TGT_NOT_DETECTED 0x00 #define STATUS_ISP_READY 0x10 #define STATUS_TGT_REVERSE_INSERTED 0x20 // hw_status // Bits in status variable // Bit 0-3: Slave MCU // Bit 4-7: Master MCU #define STATUS_AREF_ERROR 0 // Set to '1' if AREF is short circuited #define STATUS_VTG_ERROR4 // Set to '1' if VTG is short circuited #define STATUS_RC_CARD_ERROR 5 // Set to '1' if board id changes when board is powered #define STATUS_PROGMODE 6 // Set to '1' if board is in programming mode #define STATUS_POWER_SURGE 7 // Set to '1' if board draws excessive current // *** Parameter constants *** 52 #define PARAM_HW_VER 0x90 #define PARAM_SW_MAJOR 0x91 #define PARAM_SW_MINOR 0x92 AVR079 8133A-AVR-04/08 AVR079 #define PARAM_VTARGET 0x94 #define PARAM_RESET_POLARITY 0x9E #define PARAM_CONTROLLER_INIT 0x9F #define PARAM_STATUS_TGT_CONN 0xA1 #define PARAM_DISCHARGEDELAY 0xA4 #define PARAM_SOCKETCARD_ID 0xA5 #define PARAM_ROUTINGCARD_ID 0xA6 #define PARAM_EXPCARD_ID 0xA7 #define PARAM_SW_MAJOR_SLAVE1 0xA8 #define PARAM_SW_MINOR_SLAVE1 0xA9 #define PARAM_SW_MAJOR_SLAVE2 0xAA #define PARAM_SW_MINOR_SLAVE2 0xAB #define PARAM_BOARD_ID_STATUS 0xAD #define PARAM_RESET 0xB4 #define PARAM_JTAG_ALLOW_FULL_PAGE_STREAM 0x50 #define PARAM_JTAG_EEPROM_PAGE_SIZE 0x52 #define PARAM_JTAG_DAISY_BITS_BEFORE 0x53 #define PARAM_JTAG_DAISY_BITS_AFTER 0x54 #define PARAM_JTAG_DAISY_UNITS_BEFORE 0x55 #define PARAM_JTAG_DAISY_UNITS_AFTER 0x56 // *** Parameter constants for 2 byte values *** #define PARAM2_SCK_DURATION 0xC0 #define PARAM2_CLOCK_CONF 0xC1 #define PARAM2_AREF0 0xC2 #define PARAM2_AREF1 0xC3 #define PARAM2_JTAG_FLASH_SIZE_H 0xC5 #define PARAM2_JTAG_FLASH_SIZE_L 0xC6 #define PARAM2_JTAG_FLASH_PAGE_SIZE 0xC7 #define PARAM2_RC_ID_TABLE_REV 0xC8 #define PARAM2_EC_ID_TABLE_REV 0xC9 53 8133A-AVR-04/08 A.2 XPROG Commands and Parameters // XPROMG commands #define XPRG_CMD_ENTER_PROGMODE 0x01 #define XPRG_CMD_LEAVE_PROGMODE 0x02 #define XPRG_CMD_ERASE 0x03 #define XPRG_CMD_WRITE_MEM 0x04 #define XPRG_CMD_READ_MEM 0x05 #define XPRG_CMD_CRC 0x06 #define XPRG_CMD_SET_PARAM 0x07 // Memory types #define XPRG_MEM_TYPE_APPL 1 #define XPRG_MEM_TYPE_BOOT 2 #define XPRG_MEM_TYPE_EEPROM 3 #define XPRG_MEM_TYPE_FUSE 4 #define XPRG_MEM_TYPE_LOCKBITS 5 #define XPRG_MEM_TYPE_USERSIG 6 #define XPRG_MEM_TYPE_FACTORY_CALIBRATION 7 // Erase types #define XPRG_ERASE_CHIP 1 #define XPRG_ERASE_APP 2 #define XPRG_ERASE_BOOT 3 #define XPRG_ERASE_EEPROM 4 #define XPRG_ERASE_APP_PAGE 5 #define XPRG_ERASE_BOOT_PAGE 6 #define XPRG_ERASE_EEPROM_PAGE 7 #define XPRG_ERASE_USERSIG 8 // Write mode flags #define XPRG_MEM_WRITE_ERASE 0 #define XPRG_MEM_WRITE_WRITE 1 // CRC types #define XPRG_CRC_APP 1 #define XPRG_CRC_BOOT 2 #define XPRG_CRC_FLASH 3 // Error codes #define XPRG_ERR_OK 0 #define XPRG_ERR_FAILED 1 #define XPRG_ERR_COLLISION 2 #define XPRG_ERR_TIMEOUT 3 // XPROG parameters of different sizes 54 AVR079 8133A-AVR-04/08 AVR079 // 4-byte address #define XPRG_PARAM_NVMBASE 0x01 // 2-byte page size #define XPRG_PARAM_EEPPAGESIZE 0x02 A.3 USB Descriptors Table 13-1. Device descriptor Name Value Hex bLength bDescriptorType bcdUSB bDeviceClass bDeviceSubClass bDeviceProtocol bMaxPacketSize0 idVendor idProduct bcdDevice iManufacturer iProduct iSerialNumber bNumConfigurations Valid DEVICE 2.0 Vendor-specific Vendor-specific None 64 Atmel Corporation 0x2106 2.0 1 2 "STK600" 3 1 0x12 0x01 0x0200 0xFF 0x00 0x00 0x40 0x03EB 0x2106 0x0200 0x01 0x02 0x03 0x01 Table 13-2. Configuration descriptor Name Value bLength bDescriptorType wTotalLength bNumInterface bConfigurationValue iConfiguration bmAttributes bMaxPower Valid CONFIGURATION 32 bytes 1 1 0 0x80 500 mA Hex 0x09 0x02 0x0020 0x01 0x01 0x00 0x80 0xFA Table 13-3. Interface descriptor Name Value bLength bDescriptorType bInterfaceNumber bAlternateSetting bNumEndpoints bInterfaceClass bInterfaceSubClass Valid INTERFACE 0 0 2 Vendor-specific Vendor-specific Hex 0x09 0x04 0x00 0x00 0x02 0xFF 0x00 55 8133A-AVR-04/08 Name Value bInterfaceProtocol iInterface None 0 Hex 0x00 0x00 Table 13-4. Endpoint descriptor Name Value bLength bDescriptorType bEndpointAddress bmAttributes wMaxPacketSize bInterval Valid ENDPOINT 3 IN Types - Pkt Size Adjust : No 64 bytes Ignored for Bulk endpoints Hex 0x07 0x05 0x83 0x02 0x0040 0x0A Table 13-5. Endpoint descriptor 56 Name Value bLength bDescriptorType bEndpointAddress bmAttributes wMaxPacketSize bInterval Valid ENDPOINT 2 OUT Types - Pkt Size Adjust:No 64 bytes Ignored for Bulk endpoints Hex 0x07 0x05 0x02 0x02 0x0040 0x00 AVR079 8133A-AVR-04/08 AVR079 14 Table of Contents Features ............................................................................................... 1 1 Introduction ...................................................................................... 1 2 Overview ........................................................................................... 2 2.1 USB Communication ........................................................................................... 2 2.2 Packet Format ..................................................................................................... 2 2.3 USB Driver........................................................................................................... 2 2.4 Command format................................................................................................. 2 3 General Commands ......................................................................... 2 3.1 CMD_SIGN_ON .................................................................................................. 2 3.2 CMD_SET_PARAMETER................................................................................... 3 3.3 CMD_GET_PARAMETER .................................................................................. 3 3.4 CMD_OSCCAL.................................................................................................... 4 3.5 CMD_LOAD_ADDRESS ..................................................................................... 4 3.6 CMD_FIRMWARE_UPGRADE........................................................................... 5 3.7 CMD_LOAD_RC_ID_TABLE .............................................................................. 5 3.8 CMD_LOAD_EC_ID_TABLE .............................................................................. 6 3.9 CMD_CHECK_TARGET_CONNECTION........................................................... 7 4 ISP Programming Commands ........................................................ 7 4.1 CMD_ENTER_PROGMODE_ISP....................................................................... 8 4.2 CMD_LEAVE_PROGMODE_ISP ....................................................................... 8 4.3 CMD_CHIP_ERASE_ISP.................................................................................... 9 4.4 CMD_PROGRAM_FLASH_ISP .......................................................................... 9 4.5 CMD_READ_FLASH_ISP................................................................................. 11 4.6 CMD_PROGRAM_EEPROM_ISP .................................................................... 12 4.7 CMD_READ_EEPROM_ISP............................................................................. 12 4.8 CMD_PROGRAM_FUSE_ISP .......................................................................... 12 4.9 CMD_READ_FUSE_ISP................................................................................... 12 4.10 CMD_PROGRAM_LOCK_ISP ........................................................................ 13 4.11 CMD_READ_LOCK_ISP................................................................................. 13 4.12 CMD_READ_SIGNATURE_ISP ..................................................................... 13 4.13 CMD_READ_OSCCAL_ISP............................................................................ 13 4.14 CMD_SPI_MULTI............................................................................................ 13 5 Parallel Programming Mode Commands ..................................... 14 5.1 CMD_ENTER_PROGMODE_PP...................................................................... 14 57 8133A-AVR-04/08 5.2 CMD_LEAVE_PROGMODE_PP ...................................................................... 15 5.3 CMD_CHIP_ERASE_PP................................................................................... 15 5.4 CMD_PROGRAM_FLASH_PP ......................................................................... 16 5.5 CMD_READ_FLASH_PP.................................................................................. 17 5.6 CMD_PROGRAM_EEPROM_PP ..................................................................... 18 5.7 CMD_READ_EEPROM_PP.............................................................................. 18 5.8 CMD_PROGRAM_FUSE_PP ........................................................................... 18 5.9 CMD_READ_FUSE_PP.................................................................................... 19 5.10 CMD_PROGRAM_LOCK_PP ......................................................................... 19 5.11 CMD_READ_LOCK_PP.................................................................................. 19 5.12 CMD_READ_SIGNATURE_PP ...................................................................... 19 5.13 CMD_READ_OSCCAL_PP............................................................................. 19 5.14 CMD_SET_CONTROL_STACK...................................................................... 20 6 High Voltage Serial Programming Commands............................ 20 6.1 CMD_ENTER_PROGMODE_HVSP................................................................. 20 6.2 CMD_LEAVE_PROGMODE_HVSP ................................................................. 21 6.3 CMD_CHIP_ERASE_HVSP.............................................................................. 21 6.4 CMD_PROGRAM_FLASH_HVSP .................................................................... 22 6.5 CMD_READ_FLASH_HVSP............................................................................. 23 6.6 CMD_PROGRAM_EEPROM_HVSP ................................................................ 24 6.7 CMD_READ_EEPROM_HVSP......................................................................... 24 6.8 CMD_PROGRAM_FUSE_HVSP ...................................................................... 24 6.9 CMD_READ_FUSE_HVSP............................................................................... 24 6.10 CMD_PROGRAM_LOCK_HVSP .................................................................... 25 6.11 CMD_READ_LOCK_HVSP............................................................................. 25 6.12 CMD_READ_SIGNATURE_HVSP ................................................................. 25 6.13 CMD_READ_OSCCAL_HVSP........................................................................ 25 7 AVR8 JTAG..................................................................................... 25 7.1 Memory Read / Write ........................................................................................ 26 7.1.1 CMND_READ_MEMORY........................................................................................ 26 7.1.2 CMND_WRITE_MEMORY ...................................................................................... 27 7.1.3 CMND_RESET........................................................................................................ 27 7.1.4 CMND_ENTER_PROGMODE ................................................................................ 28 7.1.5 CMND_LEAVE_PROGMODE................................................................................. 28 7.1.6 CMND_CHIP_ERASE ............................................................................................. 28 8 AVR32 JTAG................................................................................... 29 8.1 CMD_ENTER_PROGMODE_JTAG_AVR32.................................................... 29 8.2 CMD_LEAVE_PROGMODE_JTAG_AVR32 .................................................... 29 58 AVR079 8133A-AVR-04/08 AVR079 8.3 CMD_RESET_AVR32....................................................................................... 30 8.4 CMD_SAB_WRITE_AVR32 .............................................................................. 30 8.5 CMD_SAB_READ_AVR32................................................................................ 30 8.6 CMD_BLOCK_WRITE_AVR32 ......................................................................... 31 8.7 CMD_ BLOCK_READ_AVR32.......................................................................... 31 8.8 CMD_NEXUS_WRITE_AVR32......................................................................... 32 8.9 CMD_NEXUS_READ_AVR32 .......................................................................... 32 9 XPROG protocol............................................................................. 33 9.1 CMD_XPROG_SETMODE ............................................................................... 33 9.2 CMD_XPROG ................................................................................................... 33 9.2.1 XPRG_ENTER_PROGMODE................................................................................. 34 9.2.2 XPRG_LEAVE_PROGMODE ................................................................................. 34 9.2.3 XPRG_SET_PARAMETER ..................................................................................... 34 9.2.4 XPRG_ERASE ........................................................................................................ 35 9.2.5 XPRG_WRITE_MEM .............................................................................................. 36 9.2.6 XPRG_READ_MEM ................................................................................................ 37 9.2.7 XPRG_READ_CRC................................................................................................. 38 10 Return Values............................................................................... 39 10.1 Success ........................................................................................................... 39 10.2 Warnings ......................................................................................................... 39 10.3 Errors............................................................................................................... 39 11 Parameters ................................................................................... 39 11.1 PARAM_HW_VER .......................................................................................... 40 11.2 PARAM_SW_MAJOR ..................................................................................... 41 11.3 PARAM_SW_MINOR...................................................................................... 41 11.4 PARAM_VTARGET......................................................................................... 41 11.5 PARAM_STATUS_TGT_CONN...................................................................... 41 11.6 PARAM2_SCK_DURATION ........................................................................... 41 11.7 PARAM_CONTROLLER_INIT ........................................................................ 41 11.8 PARAM_DISCHARGEDELAY ........................................................................ 42 11.9 PARAM2_AREF0 ............................................................................................ 42 11.10 PARAM2_AREF1 .......................................................................................... 42 11.11 PARAM2_CLOCK_CONF ............................................................................. 42 11.12 PARAM_SOCKETCARD_ID ......................................................................... 43 11.13 PARAM_ROUTINGCARD_ID ....................................................................... 43 11.14 PARAM_EXPCARD_ID................................................................................. 43 11.15 PARAM_SW_MAJOR_SLAVE1.................................................................... 43 11.16 PARAM_SW_MINOR_SLAVE1 .................................................................... 43 59 8133A-AVR-04/08 11.17 PARAM_SW_MAJOR_SLAVE2.................................................................... 43 11.18 PARAM_SW_MINOR_SLAVE2 .................................................................... 43 11.19 PARAM2_RC_ID_TABLE_REV .................................................................... 43 11.20 PARAM2_EC_ID_TABLE_REV .................................................................... 43 11.21 PARAM_BOARD_ID_STATUS ..................................................................... 44 11.22 PARAM_RESET............................................................................................ 44 11.23 PARAM_RESET_POLARITY........................................................................ 44 11.24 PARAM_JTAG_ALLOW_FULL_PAGE_STREAM........................................ 44 11.25 PARAM_JTAG_EEPROM_PAGE_SIZE....................................................... 44 11.26 PARAM2_JTAG_FLASH_PAGE_SIZE......................................................... 44 11.27 PARAM2_JTAG_FLASH_SIZE_H ................................................................ 44 11.28 PARAM2_JTAG_FLASH_SIZE_L................................................................. 44 11.29 PARAM_JTAG_DAISY_BITS_BEFORE....................................................... 44 11.30 PARAM_JTAG_DAISY_BITS_AFTER.......................................................... 45 11.31 PARAM_JTAG_DAISY_UNITS_BEFORE.................................................... 45 11.32 PARAM_JTAG_DAISY_UNITS_AFTER....................................................... 45 12 XML Parameter Values ................................................................ 45 13 Command Sequence Example.................................................... 46 13.1 Connect ........................................................................................................... 47 13.2 Read Signature ............................................................................................... 47 13.3 STK600 Communication Logging.................................................................... 47 A.1 Commands and parameters ......................................................................... 50 A.2 XPROG Commands and Parameters .......................................................... 54 A.3 USB Descriptors ........................................................................................... 55 14 Table of Contents......................................................................... 57 Disclaimer.......................................................................................... 61 60 AVR079 8133A-AVR-04/08 Disclaimer Headquarters International Atmel Corporation 2325 Orchard Parkway San Jose, CA 95131 USA Tel: 1(408) 441-0311 Fax: 1(408) 487-2600 Atmel Asia Room 1219 Chinachem Golden Plaza 77 Mody Road Tsimshatsui East Kowloon Hong Kong Tel: (852) 2721-9778 Fax: (852) 2722-1369 Atmel Europe Le Krebs 8, Rue Jean-Pierre Timbaud BP 309 78054 Saint-Quentin-enYvelines Cedex France Tel: (33) 1-30-60-70-00 Fax: (33) 1-30-60-71-11 Atmel Japan 9F, Tonetsu Shinkawa Bldg. 1-24-8 Shinkawa Chuo-ku, Tokyo 104-0033 Japan Tel: (81) 3-3523-3551 Fax: (81) 3-3523-7581 Technical Support [email protected] Sales Contact www.atmel.com/contacts Product Contact Web Site www.atmel.com Literature Request www.atmel.com/literature Disclaimer: The information in this document is provided in connection with Atmel products. No license, express or implied, by estoppel or otherwise, to any intellectual property right is granted by this document or in connection with the sale of Atmel products. EXCEPT AS SET FORTH IN ATMEL’S TERMS AND CONDITIONS OF SALE LOCATED ON ATMEL’S WEB SITE, ATMEL ASSUMES NO LIABILITY WHATSOEVER AND DISCLAIMS ANY EXPRESS, IMPLIED OR STATUTORY WARRANTY RELATING TO ITS PRODUCTS INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE, SPECIAL OR INCIDENTAL DAMAGES (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF PROFITS, BUSINESS INTERRUPTION, OR LOSS OF INFORMATION) ARISING OUT OF THE USE OR INABILITY TO USE THIS DOCUMENT, EVEN IF ATMEL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. Atmel makes no representations or warranties with respect to the accuracy or completeness of the contents of this document and reserves the right to make changes to specifications and product descriptions at any time without notice. Atmel does not make any commitment to update the information contained herein. Unless specifically provided otherwise, Atmel products are not suitable for, and shall not be used in, automotive applications. Atmel’s products are not intended, authorized, or warranted for use as components in applications intended to support or sustain life. © 2008 Atmel Corporation. All rights reserved. Atmel®, logo and combinations thereof, AVR®, AVR Studio®, STK®, and others, are the registered trademarks or trademarks of Atmel Corporation or its subsidiaries. Other terms and product names may be trademarks of others. 8133A-AVR-04/08