AVR068
AVR068
AVR068
Features
Interfaces both STK500 and AVRISP Supports STK500 FW 2.XX
1 Introduction
This document describes the 2.0 version of the communication protocol between the Atmel STK500 and the PC controlling the STK500. The firmware is distributed with AVR Studio 4.11 build 401 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 AvrStudio 4.11 or later. Download the latest AVR Studio 4.x from the Atmel web site, http://www.atmel.com/products/AVR/. The xml file format is described in section 6. This document mainly refers to STK500, but mostly everything also applies to the AVRISP. In the few cases where the behavior is different between STK500 and AVRISP, it will be noted.
PRELIMINARY
Rev. 2591-PRELIMINARY-AVR-01/05
2 Communication interface
The communication between the STK500 and the PC is done over RS232 (PC COM port). The STK500 uses: 115.2kbps, 8 data bits, 1stop bits, no parity. The PC should be set up similarly for the communication to work.
3 Message Format
All commands and responses share a common message format: Figure 3-1. Message format. MESSAGE_START SEQUENCE_NUMBER MESSAGE_SIZE TOKEN MESSAGE_BODY CHECKSUM Table 3-1. Common message format fields
Parameter Name MESSAGE_START SEQUENCE_NUMBER Size/Format 1 byte 1 byte Description Always 0x1B Incremented by one for each message sent. Wraps to zero after 0xFF is reached. Size of the message body(1) Always 0x0E Message body, from 0 to 65535 bytes
(1)
Uses all characters in message including MESSAGE_START and MESSAGE_BODY. XOR of all bytes.
Note:
1. The current STK500 firmware can only handle messages with a message body of maximum of 275 bytes.
The host (PC) sends commands, the STK500 responds with answers. One command will result in one answer. STK500 cannot send a message to the host that is not an answer to a received command. The sequence number for an answer is always the same as for the corresponding command.
AVR068
2591-PRELIMINARY-AVR-01/05
AVR068
The table describes all states, events and conditions for the handling of incoming data. Table 4-1. Protocol Layer State Table
Current State Start Event Read character from inbuf Read character from inbuf Total timeout Get Sequence Number Read character from inbuf Read character from inbuf Total timeout Get Message Size 1 Read character from inbuf Total timeout Get Message Size 2 Read character from inbuf Total timeout Get Token Read character from inbuf Read character from inbuf Total timeout Get Data Read character from inbuf Read character from inbuf Total timeout Get Checksum Read character from inbuf Read character from inbuf Total timeout Checksum OK Checksum NOT OK Nmb char read == MESSAGE_SIZE Nmb char read < MESSAGE_SIZE Exit with error Exit successfully and handle packet Update statistics Exit with error Start Char == ASCII 14 Char != ASCII 14 Update statistics Exit with error Get Checksum Get Data Exit with error Calculate message size Exit with error Get Data Start Get Token Received sequence number == Sent sequence number Received sequence number != Sent sequence number Update statistics Condition Char == ASCII 27 Char != ASCII 27 Update statistics Exit with error Get Message Size Action Next State Get Sequence Number Start
Start
The state machine on the STK500 side, which receives incoming packets from the PC, is similar apart from that there is no total timeout in the reception. The total timeout period is from a command is sent to the answer must be completely received. The total timeout period is 200 ms for the CMD_SIGN_ON command, 5 seconds for the CMD_READ/PROGRAM_FLASH/EEPROM commands, and 1 second for all other commands.
3
2591-PRELIMINARY-AVR-01/05
5 Commands
STK500 commands are sent in the MESSAGE_BODY part of a message (see chapter 2). This section describes all commands that can be entered to the STK500, and all the possible responses that each command can give back to the host. In general, all programming modes use the same protocol commands, but various parameters are sent with the different programming modes in order to avoid unnecessary overhead in the protocol layer. For all commands, the STK500 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.
AVR068
2591-PRELIMINARY-AVR-01/05
AVR068
5.1.2 CMD_SET_PARAMETER The host can set a multitude of parameters in the STK500. See 5.7 Parameters for a description of each parameter. All parameters are one-byte values. Table 5-4. Command format
Field Command ID Parameter ID Value Size 1 byte 1 byte 1 byte Values CMD_SET_PARAMETER Description Command id Which parameter to set The parameters new value
5.1.3 CMD_GET_PARAMETER The host can also read different parameters from the STK500. Table 5-6. Command format
Field Command ID Parameter ID Size 1 byte 1 byte Values CMD_GET_PARAMETER Description Command id Which parameter to get
5
2591-PRELIMINARY-AVR-01/05
5.1.4 CMD_OSCCAL This command performs a calibration sequence as described in application note AVR053. Table 5-9. Command format
Field Command ID Size 1 byte Values CMD_OSCCAL Description Command id
5.1.5 CMD_LOAD_ADDRESS This command will load an address into the STK500. 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 all programming modes. All the abovementioned commands will increment an internal address counter, so this command needs only to be sent once. Table 5-11. Command format
Field Command ID Address Size 1 byte 4 bytes Values CMD_LOAD_ADDRESS Description Command id 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 STK500 that a load extended address must be executed. See datasheet for devices with memories larger than 64KBytes. Table 5-12. Answer format if command succeeded
Field Answer ID Status Size 1 byte 1 byte Values CMD_LOAD_ADDRESS STATUS_CMD_OK Description Answer id A status value indicating success
AVR068
2591-PRELIMINARY-AVR-01/05
AVR068
5.1.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 STK500 can reboot into upgrade mode by using this command. (If the PROGRAM button on STK500 is pressed while turning on power, upgrade mode is also entered.) Table 5-13. Command format
Field Command ID Parameter ID Size 1 byte 10 bytes Values CMD_FIRMWARE_UPGRADE fwupgrade Description Command id String to enable upgrade mode
If the status returned is STATUS_CMD_OK, the STK500 will disconnect and enter upgrade mode.
7
2591-PRELIMINARY-AVR-01/05
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).
AVR068
2591-PRELIMINARY-AVR-01/05
AVR068
5.2.2 CMD_LEAVE_PROGMODE_ISP This command will make STK500 leave programming mode. The device will be put into normal operating mode. XML path: /AVRPART/ICE_SETTINGS/STK500_2/IspLeaveProgMode/ Table 5-17. Command format
Field Command ID preDelay postDelay Size 1 byte 1 byte 1 byte Values CMD_LEAVE_PROGMODE_ISP XML: preDelay XML: postDelay Description Command id Pre-delay (in ms) Post-delay (in ms)
5.2.3 CMD_CHIP_ERASE_ISP This command will perform a chip erase on the target device. XML path: /AVRPART/ICE_SETTINGS/STK500_2/IspChipErase/ Table 5-19. Command format
Field Command ID eraseDelay Size 1 byte 1 byte Values CMD_CHIP_ERASE_ISP XML: eraseDelay Description Command id Delay (in ms) to ensure that the erase of the device is finished Poll method, 0 = use delay 1= use RDY/BSY command Command Byte # 1 to be transmitted Command Byte # 2 to be transmitted Command Byte # 3 to be transmitted Command Byte # 4 to be transmitted
XML: pollMethod
9
2591-PRELIMINARY-AVR-01/05
5.2.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/STK500_2/IspProgramFlash/ Table 5-21. Command format
Field Command ID NumBytes mode delay Size 1 byte 2 byte 1 byte 1 byte XML: mode XML: delay Values CMD_PROGRAM_FLASH_ISP Description Command id Total number of bytes to program, MSB first Mode byte (explained below) Delay, used for different types of programming termination, according to mode byte Command 1 (Load Page, Write Program Memory) Command 2 (Write Program Memory Page) Command 3 (Read Program Memory) XML: pollVal1 XML: pollVal2 Poll Value #1 Poll Value #2 (not used for flash programming) N data
10
AVR068
2591-PRELIMINARY-AVR-01/05
AVR068
5.2.4.1 Mode byte description The mode parameter is essential for how this command works. The bits in the mode byte have the following meanings: Table 5-23. The bits in the mode byte
Bit # 0 1 2 3 4 5 6 7 Description Word/Page Mode (0 = word, 1 = page) Timed delay Value polling RDY/BSY polling Timed delay Value polling RDY/BSY polling Write page Page Mode Word Mode 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 STK500, so leave this bit cleared. 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 devices with page size bigger than what can be transferred to STK500 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.
11
2591-PRELIMINARY-AVR-01/05
5.2.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/STK500_2/IspReadFlash/ Table 5-24. Command format
Field Command ID NumBytes cmd1 Size 1 byte 2 byte 1 byte Values CMD_READ_FLASH_ISP XML: blockSize Description Command id Total number of bytes to read, MSB first Read Program Memory command byte #1. Low/High byte selection bit (3rd bit) is handled in the FIRMWARE.
5.2.6 CMD_PROGRAM_EEPROM_ISP See the CMD_PROGRAM_FLASH_ISP command. 5.2.7 CMD_READ_EEPROM_ISP See the CMD_READ_FLASH_ISP command.
12
AVR068
2591-PRELIMINARY-AVR-01/05
AVR068
5.2.8 CMD_PROGRAM_FUSE_ISP This command programs the fuses of the target device. Table 5-27. Command format
Field Command ID cmd1 cmd2 cmd3 cmd4 Note: Size 1 byte 1 byte 1 byte 1 byte 1 byte Values CMD_PROGRAM_FUSE_ISP Description Command id Command Byte #1 Command Byte #2 Command Byte #3 Command Byte #4
cmd1, cmd2, cmd3 and cmd4 are the four bytes of the low-level program fuse ISP command
5.2.9 CMD_READ_FUSE_ISP This command reads the fuses of the target device. Table 5-29. Command format
Field Command ID RetAddr cmd1 cmd2 cmd3 cmd4 Note: Size 1 byte 1 byte 1 byte 1 byte 1 byte 1 byte Values CMD_READ_FUSE_ISP XML: pollIndex Description Command id Return address Command Byte #1 Command Byte #2 Command Byte #3 Command Byte #4
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)
13
2591-PRELIMINARY-AVR-01/05
5.2.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. 5.2.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. 5.2.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. 5.2.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. 5.2.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 5-31. Command format
Field Command ID NumTx NumRx RxStartAddr Size 1 byte 1 byte 1 byte 1 byte Values CMD_SPI_MULTI 0-255 0-255 Description Command id Number of bytes to transmit Number of bytes to receive Start address of returned data. Specifies on what transmitted byte the response is to be stored and returned. The data be transmitted. The size is specified by NumTx
TxData
0-255 bytes
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. 14
AVR068
2591-PRELIMINARY-AVR-01/05
AVR068
Table 5-32. Answer format
Field Answer ID Status1 data Status2 Size 1 byte 1 byte 0-255 bytes 1 byte STATUS_CMD_OK Values CMD_SPI_MULTI STATUS_CMD_OK Description Answer id Will always read OK The data read from the ISP bus as indicated in the command Will always read OK
powerOffDelay
1 byte
XML: powerOffDelay
resetDelayMs
1 byte
XML: resetDelayMs
resetDelayUs
1 byte
XML: resetDelayUs
15
2591-PRELIMINARY-AVR-01/05
Table 5-35. Valid Result Values for the answer to this command
Values STATUS_CMD_OK STATUS_CMD_ FAILED Description Operation succeeded Operation failed
5.3.2 CMD_LEAVE_PROGMODE_PP This command will make the target device leave programming mode if it succeeds. XML PATH: /AVRPART/ICE_SETTINGS/STK500_2/PpLeaveProgMode/ Table 5-36. Command format
Field Command ID stabDelay resetDelay Size 1 byte 1 byte 1 byte Values CMD_LEAVE_ PROGMODE_PP XML: stabDelay XML: resetDelay Description Command id Delay (in ms) used for pin stabilization Delay (ms) for holding RESET low
5.3.3 CMD_CHIP_ERASE_PP This command will perform a chip erase on the target device if it succeeds. XML PATH: /AVRPART/ICE_SETTINGS/STK500_2/PpChipErase/ Table 5-38. Command format
Field Command ID pulseWidth pollTimeout Size 1 byte 1 byte 1 byte Values CMD_CHIP_ ERASE_PP XML: pulseWidth XML: pollTimeout Description Command id Width (in ms) of the /WR pulse. 0 => 1 cycle Timeout period (in ms) to wait for RDY/BSY flag to rise. If 0, RDY/BSY flag is NOT used.
16
AVR068
2591-PRELIMINARY-AVR-01/05
AVR068
Table 5-39. Answer format (same for all results)
Field Answer ID Status Size 1 byte 1 byte Values CMD_CHIP_ ERASE_PP See table below Description Answer id A Result Value indicating the result of the operation
Table 5-40. Valid Result Values for the answer to this command
Values STATUS_CMD_OK STATUS_RDY_BSY_ TOUT Description Operation succeeded No response from target device within specified timeframe
5.3.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/STK500_2/PpProgramFlash/ Table 5-41. Command format
Field Command ID Nmb bytes (MSB) Nmb bytes (LSB) mode pollTimeout Data Data Data Size 1 byte 1 byte 1 byte 1 byte 1 byte 1 byte 1 byte 1 byte XML: mode XML: pollTimeout Data 1 ... Data N Values CMD_PROGRAM_ FLASH_PP Description Command id Total number of bytes to program (MSB) Total number of bytes to program (LSB) Mode byte (explained below)
17
2591-PRELIMINARY-AVR-01/05
Table 5-43. Valid Result Values for the answer to this command
Values STATUS_CMD_OK STATUS_RDY_BSY_ TOUT Description Operation succeeded No response from target device within specified timeframe
5.3.4.1 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: Table 5-44. Pagesize bit configuration
Pagesize 256 2 4 8 16 32 64 128 Bit 3, 2, 1 000 001 010 011 100 101 110 111
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 STK500 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.
Note: 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.
5.3.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/STK500_2/PpReadFlash/ Table 5-45. Command format
Field Command ID Nmb bytes (MSB) Nmb bytes (LSB) Size 1 byte 1 byte 1 byte Values CMD_READ_FLASH_PP Description Command id Total number of bytes to program (MSB) Total number of bytes to program (LSB)
18
AVR068
2591-PRELIMINARY-AVR-01/05
AVR068
Table 5-46. Answer format if the command is executed
Field Answer ID Status Data Size 1 byte 1 byte Nmb bytes 1 byte STATUS_CMD_OK Values CMD_READ_FLASH_PP STATUS_CMD_OK Data read from device. Will be padded with 0s if errors occurred during read-out. A Result Value indicating the result of the operation Description Answer id
Status
5.3.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/STK500_2/PpReadEeprom/ Command format: See CMD_PROGRAM_FLASH_PP. 5.3.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/STK500_2/PpReadEeprom/ Command format: See CMD_READ_FLASH_PP 5.3.8 CMD_PROGRAM_FUSE_PP XML PATH: /AVRPART/ICE_SETTINGS/STK500_2/PpProgramFuse/ Table 5-47. Command format
Field Command ID Address Data pulseWidth pollTimeout Size 1 byte 1 byte 1 byte 1 byte 1 byte XML: pulseWidth XML: pollTimeout Values CMD_PROGRAM_ FUSE_PP Description Command id Address of fuse byte to program (low, high, ext, ext2) Fuse byte value to be programmed Width (ms) of /WR pulse (0 => 1 cycle) Time-out (ms) for polling RDY/BSY (0 = dont poll)
19
2591-PRELIMINARY-AVR-01/05
Table 5-49. Valid Result Values for the answer to this command
Values STATUS_CMD_OK STATUS_RDY_BSY_ TOUT Description Operation succeeded No response from target device within specified timeframe
XML PATH: /AVRPART/ICE_SETTINGS/STK500_2/PpReadLock/ 5.3.12 CMD_READ_SIGNATURE_PP See CMD_READ_FUSE. XML PATH: /AVRPART/ICE_SETTINGS/STK500_2/PpReadSign/ 5.3.13 CMD_READ_OSCCAL_PP See CMD_READ_FUSE. XML PATH: /AVRPART/ICE_SETTINGS/STK500_2/PpReadOsccal/
20
AVR068
2591-PRELIMINARY-AVR-01/05
AVR068
5.3.14 CMD_SET_CONTROL_STACK 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 STK500 has been powered down.
has
valid
control
stack:
Read
21
2591-PRELIMINARY-AVR-01/05
PowoffDelay
1 byte
XML: powoffDelay
resetDelay1
1 byte
XML: resetDelay1
resetDelay2
1 byte
XML: resetDelay2
5.4.2 CMD_LEAVE_PROGMODE_HVSP This command will make the target device leave programming mode if it succeeds. XML path: /AVRPART/ICE_SETTINGS/STK500_2/HvspLeaveProgMode/ Table 5-56. Command format
Field Command ID stabDelay resetDelay Size 1 byte 1 byte 1 byte Values CMD_LEAVE_ PROGMODE_HVSP XML: stabDelay XML: resetDelay Description Command id Delay (in ms) used for pin stabilization Delay (in ms) in connection with the LeaveProgMode command execution and Reset_low_duration
22
AVR068
2591-PRELIMINARY-AVR-01/05
AVR068
Table 5-57. Answer format
Field Answer ID Status Size 1 byte 1 byte Values CMD_LEAVE_ PROGMODE_HVSP STATUS_CMD_OK Description Answer id A Result Value indicating the result of the operation. Will always read OK
5.4.3 CMD_CHIP_ERASE_HVSP This command will perform a chip erase on the target device if it succeeds. XML path: /AVRPART/ICE_SETTINGS/STK500_2/HvspChipErase/ Table 5-58. Command format
Field Command ID pollTimeout Size 1 byte 1 byte Values CMD_CHIP_ERASE_ HVSP XML: pollTimeout Description Command id Timeout period (in ms) to wait for RDY/BSY flag to rise. If 0, RDY/BSY flag is NOT used. Delay (in ms) to ensure that the erase of the device is finished. If 0, polling will be used.
eraseTime
1 byte
XML: eraseTime
STATUS_CMD_OK or
STATUS_RDY_BSY_TOUT
5.4.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/STK500_2/HvspProgramFlash/ Table 5-60. Command format
Field Command ID NumBytes Mode pollTimeout Data 1 Data N Size 1 byte 2 byte 1 byte 1 byte 1 byte ..... 1 byte Values CMD_PROGRAM_FLASH_HVSP XML: blockSize XML: mode XML: pollTimeout Description Command id Total number of bytes to program, MSB first Mode byte (explained below) pollTimeout (in ms) Data 1 ..... Data N
23
2591-PRELIMINARY-AVR-01/05
STATUS_CMD_OK or
STATUS_RDY_BSY_TOUT
5.4.4.1 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: Table 5-62. Pagesize bit configuration
Pagesize 256 2 4 8 16 32 64 128 Bit 3, 2, 1 000 001 010 011 100 101 110 111
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 STK500 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.
Note: 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.
5.4.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/STK500_2/HvspReadFlash/ Table 5-63. Command format
Field Command ID NumBytes Size 1 byte 2 byte Values CMD_READ_FLASH_HVSP XML: blockSize Description Command id Total number of bytes to read, MSB first
24
AVR068
2591-PRELIMINARY-AVR-01/05
AVR068
Table 5-64. Answer format if the command is executed
Field Command ID Status1 Data Size 1 byte 1 byte Byte*N Values CMD_READ_FLASH_HVSP STATUS_CMD_OK Description Answer id Temporary status, will always read OK Data read from device. Will be padded with 0s if errors occurred during read-out. STATUS_CMD_OK A Result Value indicating the result of the operation. Will always read OK
Status2
1 byte
5.4.6 CMD_PROGRAM_EEPROM_HVSP See the CMD_WRITE_FLASH_HVSP command. 5.4.7 CMD_READ_EEPROM_HVSP See the CMD_READ_FLASH_HVSP command. 5.4.8 CMD_PROGRAM_FUSE_HVSP This command programs one fuse byte, addressed by the Fuse Address byte. XML path: /AVRPART/ICE_SETTINGS/STK500_2/HvspProgramFuse/ Table 5-65. Command format
Field Command ID Fuse Address Fuse Byte pollTimeout Size 1 byte 1 byte 1 byte 1 byte XML: pollTimeout Values CMD_PROGRAM_FUSE_HVSP 0, 1 or 2 Description Command id Address of byte to write (0=low, 1=high, 2=ext) Fuse byte value (low, high or ext) to be programmed Poll timeout
STATUS_CMD_OK or
STATUS_RDY_BSY_TOUT
5.4.9 CMD_READ_FUSE_HVSP This command programs one fuse byte, addressed by the Fuse Address byte. XML path: /AVRPART/ICE_SETTINGS/STK500_2/HvspReadFuse/
25
2591-PRELIMINARY-AVR-01/05
Fuse Byte
1 byte
26
AVR068
2591-PRELIMINARY-AVR-01/05
AVR068
5.5 Special answers
Answers that dont correspond to a specific command. 5.5.1 ANSWER_CKSUM_ERROR This is an answer generated by the transport layer, indicating that a message with incorrect checksum has been received. Table 5-69. Answer format
Field Command ID Status Size 1 byte 1 byte Values ANSWER_CKSUM_ERROR ANSWER_CKSUM_ERROR Description Answer id A status value indicating checksum error
5.6.2 Warnings All warnings have MSB set to 1 and MSB-1 set to 0. Table 5-71. Warning return values
Value STATUS_CMD_TOUT STATUS_RDY_BSY_TOUT STATUS_SET_PARAM_MISSING Meaning Command timed out Sampling of the RDY/nBSY pin timed out The Set Device Parameters have not been executed in advance of this command
5.6.3 Errors All errors have MSB and MSB-1 set to 1. Table 5-72. Error return values
Value STATUS_CMD_FAILED STATUS_CKSUM_ERROR STATUS_CMD_UNKNOWN Meaning Command failed Checksum Error Unknown command
27
2591-PRELIMINARY-AVR-01/05
5.7 Parameters
The following parameters can be read and/or written by the CMD_GET_PARAM and CMD_SET_PARAM commands: Table 5-73. Available parameters
Value PARAM_BUILD_NUMBER_LOW PARAM_BUILD_NUMBER_HIGH PARAM_HW_VER PARAM_SW_MAJOR PARAM_SW_MINOR PARAM_VTARGET PARAM_VADJUST PARAM_OSC_PSCALE PARAM_OSC_CMATCH PARAM_SCK_DURATION PARAM_TOPCARD_DETECT PARAM_STATUS PARAM_DATA PARAM_RESET_POLARITY PARAM_CONTROLLER_INIT Meaning Firmware build number, high byte Firmware build number, low byte Hardware version Firmware version number, major byte Firmware version number, minor byte Target Voltage Adjustable (AREF) voltage Oscillator timer prescaler value Oscillator timer compare match value ISP SCK duration Top card detect Returns status register DATA pins values used in HVPP mode Active low or active high RESET handling Controller initialization R/W R R R R R RW RW RW RW RW R R R W RW
5.7.1 PARAM_BUILD_NUMBER_LOW The PARAM_BUILD_NUMBER_LOW and PARAM_BUILD_NUMBER_HIGH together return a number that is incremented for each build of the firmware. Mainly for ATMEL internal use. 5.7.2 PARAM_BUILD_NUMBER_HIGH See PARAM_BUILD_NUMBER_LOW. 5.7.3 PARAM_HW_VER Returns a hardware revision number. 5.7.4 PARAM_SW_MAJOR The PARAM_SW_MAJOR and PARAM_SW_MINOR returns the firmware version. 5.7.5 PARAM_SW_MINOR See PARAM_SW_MAJOR.
28
AVR068
2591-PRELIMINARY-AVR-01/05
AVR068
5.7.6 PARAM_VTARGET This parameter only applies to STK500, not the AVRISP. STK500 has a controllable target voltage supply, which can be set and monitored with this parameter. The parameter value is voltage in volts x10, i.e. a parameter value of 42 (decimal) corresponds to 4.2V. The VTARGET voltage is adjustable between 0 and 6V. 5.7.7 PARAM_VADJUST This parameter only applies to STK500, not the AVRISP. STK500 has an adjustable analog reference in the same way as the supply voltage. This adjustable reference voltage (AREF) can be set and monitored with the PARAM_ADJUST parameter. The parameter value is voltage in volts x10, i.e. a parameter value of 42 (decimal) corresponds to 4.2V. The VADJUST voltage is adjustable between 0 and 6V. 5.7.8 PARAM_OSC_PSCALE This parameter only applies to STK500, not the AVRISP. The STK500 has a programmable clock generator used to supply a clock signal to the target device. The generator is actually the TIMER2 of the AT90S8535 MCU. The timer in running in Toggle OC2 line mode, where the timer value is cleared on a compare match. The following code example shows how the firmware handles changes in PARAM_OSC_PSCALE or PARAM_OSC_CMATCH:
// Stop Timer2 TCCR2 = 0x18; // Initialize counter value TCNT2 = 0xFF; // Set compare match value OCR2 = osc_cmatch;
// Set timer operation mode and prescaler TCCR2 = (0x18 | (0x07 & osc_pscale));
29
2591-PRELIMINARY-AVR-01/05
The STK500 system clock is fsys = 7.37MHz., which gives the following relation between prescaler and compare values and the resulting frequency: f = prescaled clock / (compare value + 1) / 2 The prescale clock is the system clock divided by some factor according to this table: Table 5-74. Prescaler values
Prescaler Value 0 1 2 3 4 5 6 7 Prescaled clock frequency 0 fsys fsys / 8 fsys / 32 fsys / 64 fsys / 128 fsys / 256 fsys / 1024
The host software can compute the prescale and match values by a using a brute force approach, scanning through all possible prescale and match values, computing the resulting frequency, and using the parameters that gives the best result. 5.7.9 PARAM_OSC_CMATCH This parameter only applies to STK500, not the AVRISP. See PARAM_OSC_PSCALE. 5.7.10 PARAM_SCK_DURATION 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.)
30
AVR068
2591-PRELIMINARY-AVR-01/05
AVR068
The STK500 and AVRISP supports ISP frequencies from 4 kHz up to 1.8 MHz. The value for PARAM_SCK_DURATION can be found using the following algorithm:
#define T_STK500 #define T_AVRISP #define B 135.63e-9 271.27e-9 12.0
unsigned char CalcSckDur(int freq) { if (STK500) { if (freq >= 1843200) sck_dur = 0; else if (freq >= 460800) sck_dur = 1; else if (freq >= 115200) sck_dur = 2; else if (freq >= 57600) sck_dur = 3; else sck_dur = ceil(1/(2 * B * freq * T_STK500) - 10/B); } else // if (AVRISP) { if (freq >= 921600) sck_dur = 0; else if (freq >= 230400) sck_dur = 1; else if (freq >= 57600) sck_dur = 2; else if (freq >= 28800) sck_dur = 3; else sck_dur = ceil(1/(2 * B * freq * T_AVRISP) - 10/B); } return __min(254, sck_dur); // 255 is an illegal value }
31
2591-PRELIMINARY-AVR-01/05
5.7.11 PARAM_TOPCARD_DETECT This parameter only applies to STK500, not the AVRISP. Expansion cards can be connected to STK500. Each type of card has an id circuitry, so that the STK500 can detect which type of card that is mounted. The following IDs are in use: Table 5-75. Topcard IDs
Card STK501 STK502 STK503 STK504 STK505 STK520 ID 0xAA 0x55 0xFA 0xEE 0xE4 0xDD
5.7.12 PARAM_DATA This parameter only applies to STK500, not the AVRISP. This parameter returns the value on the PROG DATA connector used for High-Volt Parallel Programming. 5.7.13 PARAM_RESET_POLARITY The STK500 and AVRISP can program both AT90 (AVR) family and AT89 (8051) family of microcontrollers. They have different RESET pin polarity. The AVR has active low reset, while the AT89 has active high. This parameter sets the polarity of the reset signal. Set the parameter to 1 when programming AVRs, and 0 when programming AT89 controllers.
Note: STK500 and AVRISP store this parameter in EEPROM, so they are available the next time power is applied to the programmers. For STK500, also the RESET button change polarity according to this parameter.
5.7.14 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. This parameter is intended to be used as a way of telling if the power on STK500/AVRISP 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.
32
AVR068
2591-PRELIMINARY-AVR-01/05
AVR068
6 XML Parameter Values
One of the major enhancements in the 2.0 version of the STK500 protocol is the ability to describe parameters for all details of the programming algorithms. 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 STK500 parameter values in the device specific XML file. After installing AvrStudio 4, all xml files can be found at: \Program Files\Atmel\AVR Tools\PartDescriptionFiles\ Figure 6-1. XML file example: ATmega2561.xml
Open the XML file in xml editor/viewer (e.g XML Notepad or Internet Explorer). All device specific values for STK500 and AVRISP are located under STK500_2 node. For parameters for the CMD_ENTER_PROGMODE_ISP command, look in /AVRPART/ICE_SETTINGS_STK500_2/IspEnterProgMode.
33
2591-PRELIMINARY-AVR-01/05
7.1 Connect
The sequence of commands and parameters sent from AvrStudio to the STK500 in order to connect is listed below. CMD_SIGN_ON CMD_GET_PARAMETER, PARAM_TOPCARD_DETECT CMD_GET_PARAMETER, PARAM_HW_VER CMD_GET_PARAMETER, PARAM_SW_MAJOR CMD_GET_PARAMETER, PARAM_SW_MINOR
34
AVR068
2591-PRELIMINARY-AVR-01/05
AVR068
7.2.2 High Voltage Programming The sequence of commands and parameters sent from AvrStudio to the STK500 in order to read the device signature through High Voltage Programming is listed below. Note that one already have to be connected to do this. This sequence goes for both High Voltage Parallel Programming and High Voltage Serial Programming. CMD_GET_PARAMETER, PARAM_TOPCARD_DETECT CMD_GET_PARAMETER, PARAM_CONTROLLER_INIT CMD_SET_CONTROL_STACK CMD_GET_PARAMETER, PARAM_CONTROLLER_INIT CMD_ENTER_PROGMODE_PP (_HVSP) CMD_READ_SIGNATURE_PP (_HVSP) CMD_READ_SIGNATURE_PP (_HVSP) CMD_READ_SIGNATURE_PP (_HVSP) CMD_LEAVE_PROGMODE_ PP (_HVSP)
2. Browse to the path: HKEY_CURRENT_USER\Software\Atmel\AVRTools\STK500\ 3. Make a new String Value (right-click > New > String Value) named LogFilePath 4. Enter Data e.g. c:\STK500Com.txt (right-click LogFilePath > Modify > enter Value Data)
35
2591-PRELIMINARY-AVR-01/05
After editing the Registry, open AvrStudio and start the STK500 Programming Dialog. All commands will now be written to the text file specified in the Registry. This file will look like this: Figure 7-3. Example log file contents
Notes:
1. This is the Command ID, in this case 0x03 which is CMD_GET_PARAMETER 2. This is the Parameter ID, in this case 0x9A which is PARAM_TOPCARD_DETECT
36
AVR068
2591-PRELIMINARY-AVR-01/05
Disclaimer
Atmel Corporation
2325 Orchard Parkway San Jose, CA 95131, USA Tel: 1(408) 441-0311 Fax: 1(408) 487-2600
Atmel Operations
Memory
2325 Orchard Parkway San Jose, CA 95131, USA Tel: 1(408) 441-0311 Fax: 1(408) 436-4314
RF/Automotive
Theresienstrasse 2 Postfach 3535 74025 Heilbronn, Germany Tel: (49) 71-31-67-0 Fax: (49) 71-31-67-2340 1150 East Cheyenne Mtn. Blvd. Colorado Springs, CO 80906, USA Tel: 1(719) 576-3300 Fax: 1(719) 540-1759
Regional Headquarters
Europe
Atmel Sarl Route des Arsenaux 41 Case Postale 80 CH-1705 Fribourg Switzerland Tel: (41) 26-426-5555 Fax: (41) 26-426-5500
Microcontrollers
2325 Orchard Parkway San Jose, CA 95131, USA Tel: 1(408) 441-0311 Fax: 1(408) 436-4314 La Chantrerie BP 70602 44306 Nantes Cedex 3, France Tel: (33) 2-40-18-18-18 Fax: (33) 2-40-18-19-60
Asia
Room 1219 Chinachem Golden Plaza 77 Mody Road Tsimshatsui East Kowloon Hong Kong Tel: (852) 2721-9778 Fax: (852) 2722-1369
ASIC/ASSP/Smart Cards
Zone Industrielle 13106 Rousset Cedex, France Tel: (33) 4-42-53-60-00 Fax: (33) 4-42-53-60-01 1150 East Cheyenne Mtn. Blvd. Colorado Springs, CO 80906, USA Tel: 1(719) 576-3300 Fax: 1(719) 540-1759 Scottish Enterprise Technology Park Maxwell Building East Kilbride G75 0QR, Scotland Tel: (44) 1355-803-000 Fax: (44) 1355-242-743
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
Literature Requests
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 ATMELS TERMS AND CONDITIONS OF SALE LOCATED ON ATMELS 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. Atmels products are not intended, authorized, or warranted for use as components in applications intended to support or sustain life.
Atmel Corporation 2005. All rights reserved. Atmel, logo and combinations thereof, AVR, and AVR Studio are registered trademarks, SM and Everywhere You Are are the trademarks of Atmel Corporation or its subsidiaries. Other terms and product names may be trademarks of others.
2591-PRELIMINARY-AVR-01/05