Здесь приведен перевод апноута Atmel "AVR067: JTAGICE mkII Communication Protocol" [1]. Описывается протокол обмена между средой разработки AVR Studio® (фронтэнд) и аппаратным отладчиком (эмулятором) JTAGICE mkII [2]. Затрагиваются следующие темы:
• Команды, которые отправляются в JTAGICE mkII из среды разработки AVR Studio
• Ответы, которые JTAGICE mkII отправляет обратно в AVR Studio • Конфигурируемые параметры • Различные типы памяти • Специальные символы (Special Characters) и форматы пакета (Packet Formats) для синхронизации пакетов (Packet Synchronization) и для управления ошибками (Error Control) • Поддержка точек останова (Break Point) в JTAGICE mkII (только для устройств tinyAVR / megaAVR)
Назначение этого документа - разрешить сторонним фирмам разрабатывать свое собственное программное обеспечение (фронтэнд, интерфейс пользователя), которое может использовать эмулятор JTAGICE mkII.
[2 Теория функционирования]
Протокол обмена работает в окружении master – slave, ведущее устройство - ведомое устройство. Среда разработки AVR Studio и компьютер, на котором она работает, является master, и аппаратный отладчик JTAGICE mkII работает как slave.
JTAGICE mkII slave всегда работает в одном из 3 перечисленных состояний:
1. STOPPED (остановлено) 2. RUNNING (выполняется программа на отлаживаемом устройстве AVR) 3. PROGRAMMING (выполняется программирование памяти отлаживаемого устройства AVR)
Некоторые команды могут быть выполнены только когда slave находится в режиме STOPPED, другие могут работать во всех режимах. Подробности описаны для каждой отдельной команды.
События (Events) - это сообщения, отправляемые slave без предварительного поступления команды от master.
Последовательный обмен данными асинхронен по своей природе, также работает и протокол JTAGICE mkII. Все команды и ответы имеют токены и проверки CRC, добавленные для того, чтобы разрешить приемнику проверить на правильность принятое сообщение.
Этот транспортный протокол гарантирует, что каждый пакет будет корректно принят и проверен, но при этом не гарантируется, что будет принят каждый пакет (т. е. пакеты, которые прошли с ошибкой, будут отброшены). Повторная передача и пропуск пакетов поддерживается на уровне приложения (отлаживаемом устройстве AVR), не на уровне передачи (transmission layer). Когда для соединения с JTAGICE mkII используется интерфейс USB, то повторная передача поддерживается автоматически еще на аппаратном уровне (hardware layer) интерфейса. Это неверно для интерфейса соединения RS232.
Протокол основан на порядке байт "Little Endian", т. е. для адресов памяти младший значащий байт (LSB) всегда будет передан первым.
2.1 Соединение через USB и RS-232
2.1.1 RS-232
При включении питания JTAGICE mkII скорость и параметры RS-232 устанавливается в значение 19200 bps, 8N1, no handshake. Однако при использовании команды Set Parameter и параметра Baud rate можно изменить скорость обмена.
Прим. переводчика: при использовании RS-232 к эмулятору нужно подключить внешний источник питания.
2.1.2 USB
JTAGICE mkII имеет порт USB, который может обеспечить соединение USB full-speed (12 Mbps). В дополнение к передаче данных, кабель USB может предоставить и питание для эмулятора, так что не требуется внешний источник питания. После прохождения энумерации в операционной системе (это стандартная процедура распознавания устройств USB при подключении) эмулятор может потреблять до 500mA мощности от хаба USB.
2.1.3 Конфигурация USB (USB Configuration)
JTAGICE mkII имеет 1 конфигурацию с 1 интерфейсом, содержащим две конечные точки трансфера данных типа bulk. Дескрипторы USB можно найти в секции 7. Сообщения JTAGICE mkII передаются через конечные точки bulk. Максимальный размер пакета показан в дескрипторах конечной точки.
В дополнение к механизму фреймов, предоставленных форматом фрейма JTAGICE mkII, эмулятор использует короткие пакеты (на обоих IN и OUT конечных точках) чтобы показать, какой пакет последний в фрейме JTAGEICE mkII. Драйвер хоста должен также поддерживать короткие пакеты.
Прим. переводчика: bulk, конфигурация, интерфейс, конечные точки IN и OUT, дескрипторы, хост - это чисто термины USB.
[3 Формат сообщений (Message Format)]
Все команды, ответы и события используют один и тот же формат сообщения: < MESSAGE_START, SEQUENCE_NUMBER, MESSAGE_SIZE, TOKEN, MESSAGE_BODY, CRC >.
Таблица 3-1 Параметры сообщений.
Имя параметра |
Назначение |
Формат |
MESSAGE_START |
Символ с кодом ASCII 27 (управляющий символ ESC) |
[BYTE] |
SEQUENCE_NUMBER |
Число, которое увеличивается на 1 с каждым отправленным сообщением. После достижения максимального значения 0xFFFE переходит в 0. Значение 0xFFFF зарезервировано для (асинхронных) событий EVENTS. |
[BYTE]*2, младший байт LSB идет первым |
MESSAGE_SIZE |
Размер тела сообщения в байтах. |
[BYTE]*4,младший байт LSB идет первым |
TOKEN |
Токен, символ ASCII 14, который делает протокол более удобным для работы. |
[BYTE] |
MESSAGE_BODY |
Тело сообщения. |
[BYTE]*MESSAGE_SIZE |
CRC |
Контрольная сумма всего сообщения, включая MESSAGE_START и MESSAGE_BODY |
[BYTE]*2 |
Первый байт в теле сообщений всегда MESSAGE_ID (идентификатор сообщения). Размер MESSAGE_BODY как минимум 1 байт.
• Сообщения используют MESSAGE_ID в диапазоне 0x01 .. 0x3F • Сообщения об успехе используют MESSAGE_ID в диапазоне 0x80 .. 0x9F • Сообщения о неудаче используют MESSAGE_ID в диапазоне 0xA0 .. 0xBF • События используют MESSAGE_ID в диапазоне 0xE0 .. 0xFF • Сообщение начинается с символа ASCII 27 (0x1B), это не может быть изменено. • Токен является символом ASCII 14 (0x0E), это не может быть изменено.
[4 Парсинг, обработка сообщений (Message parsing)]
Сообщения так или иначе должны быть прочитаны машиной состояний как поток байт. Каждый раз, когда встречается символ MESSAGE_START, машина состояний начинает на декодирование сообщения, и либо завершает обработку сообщения, либо поток байт отбрасывается, если было нарушено правило обработки сообщения.
Сообщения могут поступать в любом порядке, и к их поступлению не предъявляется никаких требований по необходимому периоду времени между командами. В эмуляторе реализована очередь обработки сообщений (message queue), где машина состояний делает парсинг и проверку полного сообщения, которое было последовательно принято и помещено в очередь сообщений. Эмулятор выполняет сообщения в порядке, в каком он их находит в очереди. Ответы на сообщения даются тогда, когда сообщение обработано эмулятором.
Для передач через RS232 и USB используется одна и та же машина состояний. Подпрограмма прерывания на процессоре управления обменом в JTAGICE mkII читает соответствующий UART и помещает приходящие данные в буфер FIFO, находящийся в SRAM. Машина состояний читает данные оттуда и делает их парсинг.
4.2 Общая реализация машины состояний
Рис. 4-1. Диаграмма состояний.
Пояснение к диаграмме состояний. E: означает EVENT, событие. C: означает условие, Condition. A: означает действие, Action. Get Sequence Number означает выборка SEQUENCE_NUMBER. Get Message Size означает выборку MESSAGE_SIZE. Get Token означает выборку TOKEN. Get Data означает выборку данных.
Таблица 4-1. Таблица состояний. Серые поля представляют сообщения с ошибкой (message failed, при этом управление переходит в точку НАЧАЛО), а в белых показаны нормальные сообщения (message valid).
Текущее состояние |
Событие (E: EVENT) |
Условие (C) |
Действие (A) |
Следующее состояние |
НАЧАЛО |
Чтение символа из входного буфера |
Символ == ASCII 27 |
Запуск отсчета таймаута |
Выборка SEQUENCE_NUMBER |
Чтение символа из входного буфера |
Символ != ASCII 27 |
нет действий |
НАЧАЛО |
Выборка SEQUENCE_NUMBER |
Чтение символа из входного буфера |
Счетчик количества байт == 2 |
Запуск отсчета таймаута |
Выборка MESSAGE_SIZE |
Чтение символа из входного буфера |
Счетчик количества байт < 2 |
Запуск отсчета таймаута |
Выборка SEQUENCE_NUMBER |
Таймаут |
нет действий |
Обновление статистики сообщения |
НАЧАЛО |
Выборка MESSAGE_SIZE |
Чтение символа из входного буфера |
Счетчик количества байт < 4 |
Запуск отсчета таймаута |
Выборка MESSAGE_SIZE |
Чтение символа из входного буфера |
Счетчик количества байт == 4 |
Запуск отсчета таймаута. Вычисление MESSAGE_SIZE |
Выборка TOKEN |
Таймаут |
нет действий |
Обновление статистики сообщения |
НАЧАЛО |
Выборка TOKEN |
Чтение символа из входного буфера |
Символ == ASCII 14 |
Запуск отсчета таймаута |
Выборка данных |
Чтение символа из буфера |
Символ != ASCII 14 |
Обновление статистики сообщения. Останов отсчета таймаута |
НАЧАЛО |
Таймаут |
нет действий |
Обновление статистики сообщения. |
НАЧАЛО |
Выборка данных |
Чтение символа из входного буфера |
Количество символов == MESSAGE_SIZE |
Запуск отсчета таймаута |
Выборка CRC |
Чтение символа из входного буфера |
Количество символов < MESSAGE_SIZE |
Запуск отсчета таймаута |
Выборка данных |
Таймаут |
нет действий |
Обновление статистики сообщения |
НАЧАЛО |
Выборка CRC |
Чтение символа из входного буфера |
Счетчик количества байт == 2 CRC OK |
Вычисление CRC. Обновление статистики сообщения. Выполнение команды. Останов отсчета таймаута. |
НАЧАЛО |
Чтение символа из входного буфера. |
Счетчик количества байт == 2. CRC с ошибкой |
Вычисление CRC. Обновление статистики сообщения. Останов отсчета таймаута. |
НАЧАЛО |
Чтение символа из входного буфера. |
Счетчик количества байт < 2 |
Запуск отсчета таймаута. |
Выборка CRC |
Таймаут |
нет действий |
Обновление статистики сообщения |
НАЧАЛО |
[5 Команды и ответы]
5.1 Команды master
5.1.1 Sign off (CMND_SIGN_OFF: 0x00)
Master выдает эту команду, когда он прерывает сессию отладки. Состояние slave: может быть любым.
Таблица 5-1. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Инкрементируется с каждым отправленным пакетом. |
MESSAGE_SIZE |
0x01 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
отсутствует |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID >
Таблица 5-2. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x00 (CMND_SIGN_OFF) |
[BYTE] |
Таблица 5-3. Ответ.
Имя параметра |
Описание |
RSP_OK |
Команда выполнена. |
RSP_FAILED |
JTAGICE mkII подключен, но он не понял команду. |
5.1.2 Check if Emulator is present (CMND_GET_SIGN_ON: 0x01)
Master выдает эту команду, чтобы увидеть - подключен ли, и работает ли эмулятор, или нет. Состояние slave: может быть любым.
Таблица 5-4. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Инкрементируется с каждым отправленным пакетом. |
MESSAGE_SIZE |
0x01 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
отсутствует |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID >
Таблица 5-5. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x01 (CMND_GET_SIGN_ON) |
[BYTE] |
Таблица 5-6. Ответ.
Имя параметра |
Описание |
RSP_SIGN_ON |
Содержит строку подписи для JTAGICE mkII. Должны быть решены проблемы совместимости с другими эмуляторами. Sign on (RSP_SIGN_ON : 0x86) |
RSP_FAILED |
JTAGICE mkII подключен, но он не понял команду. |
TIMEOUT |
Slave не ответил в течение заданного времени. Либо slave отсутствует, либо не включен. |
Мусор |
В случае использования для канала обмена последовательного порта RS232 может быть ошибка аппаратуры или ошибка в конфигурации UART (неправильно установленная скорость обмена, ошибка в установке бита четности и т. д.). Если используется обмен через USB, то это означает ошибку аппаратуры. |
5.1.3 Write Emulator Parameter (CMND_SET_PARAMETER: 0x02)
Эмулятор содержит некоторое количество настроечных параметров. Эта команда используется для записи всех параметров. Идентификатор параметра (parameter ID) указывает, какой параметр будет записан. Состояние slave: зависит от параметра.
Таблица 5-7. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Инкрементируется с каждым отправленным пакетом. |
MESSAGE_SIZE |
Равно размеру поля MESSAGE_BODY в байтах. |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
см. далее |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID, PARAMETER_ID, PARAMETER_VALUE >
Таблица 5-8. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x02 (CMND_SET_PARAMETER) |
[BYTE] |
PARAMETER_ID |
Идентификатор параметра. |
[BYTE] |
PARAMETER_VALUE |
Значение параметра, может быть любого размера. |
[BYTE] * N, младший байт идет первым, если это применимо. |
Таблица 5-9. Ответ.
Имя параметра |
Описание |
RSP_OK |
Параметр записан успешно. |
RSP_FAILED |
JTAGICE mkII подключен, но он не понял команду. |
RSP_ILLEGAL_PARAMETER |
JTAGICE mkII не поддерживает выбранный параметр (например, может быть из-за несовместимости текущей версии AVR Studio и firmware JTAGICE mkII). |
RSP_ILLEGAL_VALUE |
Предоставленное значение ошибочное или выходит за пределы допустимого диапазона. |
RSP_ILLEGAL_EMULATOR_MODE |
Операция не может быть выполнена в этом режиме работы эмулятора (JTAG/debugWire). |
TIMEOUT |
Slave не ответил в течение заданного времени. Либо slave отсутствует, либо не включен. |
Описание параметров можно найти в последней секции этого документа.
5.1.4 Read Emulator Parameter (CMND_GET_PARAMETER: 0x03)
Эта команда позволяет вернуть значение параметра обратно в AVR Studio. Описание параметров можно найти в последней секции этого документа. Состояние slave: зависит от параметра.
Таблица 5-10. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Инкрементируется с каждым отправленным пакетом. |
MESSAGE_SIZE |
0x02 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
Определено ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID, PARAMETER_ID >
Таблица 5-11. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x03 (CMND_GET_PARAMETER) |
[BYTE] |
PARAMETER_ID |
Идентификатор запрашиваемого параметра. |
[BYTE] |
Таблица 5-12. Ответ.
Имя параметра |
Описание |
RSP_PARAMETER |
Запрошенный параметр возвращен. Возврат параметра (RSP_PARAMETER : 0x81). |
RSP_FAILED |
JTAGICE mkII подключен, но он не понял команду. |
RSP_ILLEGAL_PARAMETER |
JTAGICE mkII не поддерживает выбранный параметр (например, может быть из-за несовместимости текущей версии AVR Studio и firmware JTAGICE mkII). |
RSP_ILLEGAL_EMULATOR_MODE |
Операция не может быть выполнена в этом режиме работы эмулятора (JTAG/debugWire). |
TIMEOUT |
Slave не ответил в течение заданного времени. Либо slave отсутствует, либо не включен. |
5.1.5 Write Memory (CMND_WRITE_MEMORY: 0x04)
Записать блок памяти по любому адресу в любую область памяти. Состояние slave: STOPPED.
Таблица 5-13. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Инкрементируется с каждым отправленным пакетом. |
MESSAGE_SIZE |
Размер поля MESSAGE_BODY в байтах. |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
Определено ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID, MEMORY_TYPE, BYTE_COUNT, START_ADDRESS, DATA >
Таблица 5-14. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x04 (CMND_WRITE_MEMORY) |
[BYTE] |
MEMORY_TYPE |
Тип памяти (FLASH, SRAM, EEPROM, ...) |
[BYTE] |
BYTE_COUNT |
Количество байт, которое должно быт записано. |
[BYTE] * 4, младший байт LSB идет первым |
START_ADDRESS |
Начальный адрес памяти. |
[BYTE] * 4, младший байт LSB идет первым |
DATA |
Данные. |
[BYTE] * BYTE_CNT |
Определения и значения параметров различных типов памяти можно найти в секции "Типы памяти".
Таблица 5-15. Ответ.
Имя параметра |
Описание |
RSP_OK |
Память записана успешно. |
RSP_FAILED |
JTAGICE mkII подключен, но он не понял команду. |
RSP_ILLEGAL_MEMORY_TYPE |
JTAGICE mkII не поддерживает выбранный тип памяти. |
RSP_ILLEGAL_MEMORY_RANGE |
Запись в память вышла за пределы выбранной области памяти. |
RSP_ILLEGAL_EMULATOR_MODE |
Операция не может быть выполнена в этом режиме работы эмулятора (JTAG/debugWire). |
RSP_ILLEGAL_MCU_STATE |
Операция не может быть выполнена для текущего состояния MCU (отлаживаемого микроконтроллера AVR). |
TIMEOUT |
Slave не ответил в течение заданного времени. Либо slave отсутствует, либо не включен. |
5.1.6 Read Memory (CMND_READ_MEMORY: 0x05)
Чтение блока памяти по любому адресу из любой области памяти. Состояние slave: STOPPED.
Таблица 5-16. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Инкрементируется с каждым отправленным пакетом. |
MESSAGE_SIZE |
10 байт |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MEMORY_TYPE, BYTE_COUNT, START_ADDRESS >
Таблица 5-17. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x05 (CMND_READ_MEMORY) |
[BYTE] |
MEMORY_TYPE |
Тип памяти (FLASH, SRAM, EEPROM, ...) |
[BYTE] |
BYTE_COUNT |
Количество байт для чтения. |
[BYTE] * 4, младший байт LSB идет первым |
START_ADDRESS |
Начальный адрес памяти. |
[BYTE] * 4, младший байт LSB идет первым |
Определения и значения параметров различных типов памяти можно найти в секции "Типы памяти".
Таблица 5-18. Ответ.
Имя параметра |
Описание |
RSP_MEMORY |
Память прочитана успешно. Чтение памяти (RSP_MEMORY : 0x82) |
RSP_FAILED |
JTAGICE mkII подключен, но он не понял команду. |
RSP_ILLEGAL_MEMORY_TYPE |
JTAGICE mkII не поддерживает выбранный тип памяти. |
RSP_ILLEGAL_MEMORY_RANGE |
Запись в память вышла за пределы выбранной области памяти. |
RSP_ILLEGAL_EMULATOR_MODE |
Операция не может быть выполнена в этом режиме работы эмулятора (JTAG/debugWire). |
RSP_ILLEGAL_MCU_STATE |
Операция не может быть выполнена для текущего состояния MCU (отлаживаемого микроконтроллера AVR). |
TIMEOUT |
Slave не ответил в течение заданного времени. Либо slave отсутствует, либо не включен. |
5.1.7 Write Program Counter (CMND_WRITE_PC: 0x06)
Записывает счетчик команд AVR. Состояние slave: STOPPED.
Таблица 5-19. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Инкрементируется с каждым отправленным пакетом. |
MESSAGE_SIZE |
5 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID, PROGRAM_COUNTER >
Таблица 5-20. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x06 (CMND_WRITE_PC) |
[BYTE] |
PROGRAM_COUNTER |
Значение для счетчика команд. |
[BYTE] |
Таблица 5-21. Ответ.
Имя параметра |
Описание |
RSP_OK |
Счетчик команд записан успешно. |
RSP_FAILED |
JTAGICE mkII подключен, но он не понял команду. |
RSP_ILLEGAL_EMULATOR_MODE |
Операция не может быть выполнена в этом режиме работы эмулятора (JTAG/debugWire). |
RSP_ILLEGAL_MCU_STATE |
Операция не может быть выполнена для текущего состояния MCU (отлаживаемого микроконтроллера AVR). |
TIMEOUT |
Slave не ответил в течение заданного времени. Либо slave отсутствует, либо не включен. |
5.1.8 Read Program Counter (CMND_READ_PC: 0x07)
Чтение счетчика команд AVR. Состояние slave: STOPPED.
Таблица 5-22. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Инкрементируется с каждым отправленным пакетом. |
MESSAGE_SIZE |
1 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID >
Таблица 5-23. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x07 (CMND_READ_PC) |
[BYTE] |
Таблица 5-24. Ответ.
Имя параметра |
Описание |
RSP_PC |
Возвращено значение счетчика команд. Чтение счетчика команд (RSP_PC : 0x84) |
RSP_FAILED |
JTAGICE mkII подключен, но он не понял команду. |
RSP_ILLEGAL_EMULATOR_MODE |
Операция не может быть выполнена в этом режиме работы эмулятора (JTAG/debugWire). |
RSP_ILLEGAL_MCU_STATE |
Операция не может быть выполнена для текущего состояния MCU (отлаживаемого микроконтроллера AVR). |
TIMEOUT |
Slave не ответил в течение заданного времени. Либо slave отсутствует, либо не включен. |
5.1.9 Start Program Execution (CMND_GO: 0x08)
Запускает выполнение программы начиная с текущего адреса, хранящегося в счетчике команд. Состояние slave: STOPPED или RUNNING. Когда команда CMND_GO выполняется, то состояние эмулятора либо изменяется на RUNNING, либо остается без изменения.
Таблица 5-25. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Инкрементируется с каждым отправленным пакетом. |
MESSAGE_SIZE |
1 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID >
Таблица 5-26. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x08 (CMND_GO) |
[BYTE] |
Таблица 5-27. Ответ.
Имя параметра |
Описание |
RSP_OK |
Команда была выполнена. |
RSP_FAILED |
JTAGICE mkII подключен, но он не понял команду. |
RSP_ILLEGAL_EMULATOR_MODE |
Операция не может быть выполнена в этом режиме работы эмулятора (JTAG/debugWire). |
TIMEOUT |
Slave не ответил в течение заданного времени. Либо slave отсутствует, либо не включен. |
5.1.10 Single Step (CMND_SINGLE_STEP: 0x09)
Запускает выполнение одного шага (одной инструкции) с текущего адреса, хранящегося в счетчике команд. Состояние slave: STOPPED. После выполнения slave находится в состоянии RUNNING до следующей точки останова. Затем (slave) выдает событие останова (Break Event), и slave возвращается в состояние STOPPED.
Таблица 5-28. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Инкрементируется с каждым отправленным пакетом. |
MESSAGE_SIZE |
3 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
Флаг высокого уровня или низкого уровня, см. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID, FLAG >
Таблица 5-29. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x09 (CMND_SINGLE_STEP) |
[BYTE] |
FLAG |
0x01 : Низкий уровень (шаги по инструкциям ассемблера). 0x02 : Высокий уровень (шаги по операторам языка высокого уровня). |
[BYTE] |
STEP_MODE |
0x00: STEP_OVER (шаг без захода в подпрограмму). 0x01: STEP_INTO (шаг с заходом в тело подпрограммы). 0x02: STEP_OUT (шаг с выходом из подпрограммы). |
[BYTE] |
Таблица 5-30. Ответ.
Имя параметра |
Описание |
RSP_OK |
Команда была выполнена. |
RSP_FAILED |
JTAGICE mkII подключен, но он не понял команду. |
RSP_ILLEGAL_EMULATOR_MODE |
Операция не может быть выполнена в этом режиме работы эмулятора (JTAG/debugWire). |
RSP_ILLEGAL_MCU_STATE |
Операция не может быть выполнена в текущем состоянии целевого MCU (target, отлаживаемый микроконтроллер AVR). |
TIMEOUT |
Slave не ответил в течение заданного времени. Либо slave отсутствует, либо не включен. |
5.1.11 Stop Program Execution (CMND_FORCED_STOP: 0x0A)
Останавливает выполнение программы. Состояние slave: STOPPED или RUNNING. После выполнения команды slave переходит в состояние STOPPED.
Таблица 5-31. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Инкрементируется с каждым отправленным пакетом. |
MESSAGE_SIZE |
2 байта |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID, MODE >
Таблица 5-32. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x0A (CMND_TORCED_STOP) |
[BYTE] |
MODE |
0x01 : Низкий уровень. 0x02 : Высокий уровень (останавливается на следующем операторе языка высокого уровня). |
[BYTE] |
Таблица 5-33. Ответ.
Имя параметра |
Описание |
RSP_OK |
Команда была выполнена. |
RSP_FAILED |
JTAGICE mkII подключен, но он не понял команду. |
RSP_ILLEGAL_EMULATOR_MODE |
Операция не может быть выполнена в этом режиме работы эмулятора (JTAG/debugWire). |
TIMEOUT |
Slave не ответил в течение заданного времени. Либо slave отсутствует, либо не включен. |
5.1.12 Reset User Program (CMND_RESET: 0x0B)
Эмулятор выполняет все действия по перезапуску выполнения программы. Состояние slave: любое. Если до выполнения команды slave находился в состоянии RUNNING, то состояние будет изменено на STOPPED перед выполнением этой команды.
Таблица 5-34. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Инкрементируется с каждым отправленным пакетом. |
MESSAGE_SIZE |
Размер тела сообщения (MESSAGE_BODY). |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. Флаг высокого уровня или низкого уровня. Высокий уровень обычно приводит к установке счетчика команд на начало тела функции main. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID, FLAG >
Таблица 5-35. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x0B (CMND_RESET) |
[BYTE] |
FLAG |
0x01: Низкий уровень. 0x02: Высокий уровень (сброс, затем вход в main). 0x04: Сброс с запретом debugWire. |
[BYTE] |
Таблица 5-36. Ответ.
Имя параметра |
Описание |
RSP_OK |
Команда была выполнена. |
RSP_FAILED |
JTAGICE mkII подключен, но он не понял команду. |
RSP_ILLEGAL_EMULATOR_MODE |
Операция не может быть выполнена в этом режиме работы эмулятора (JTAG/debugWire). |
TIMEOUT |
Slave не ответил в течение заданного времени. Либо slave отсутствует, либо не включен. |
5.1.13 Set Device Descriptor (CMND_SET_DEVICE_DESCRIPTOR: 0x0C)
Передает все параметры, относящиеся к специфической настройке устройства. Состояние slave: STOPPED.
Таблица 5-37. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Инкрементируется с каждым отправленным пакетом. |
MESSAGE_SIZE |
Размер тела сообщения (MESSAGE_BODY). |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
Все параметры для настройки специфичного устройства. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID, PARAMETERS >
Таблица 5-38. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x0C (CMND_SET_DEVICE_DESCRIPTOR) |
[BYTE] |
PARAMETERS |
Все параметры, требуемые для настройки устройства в чистом двоичном виде, идентичном дескриптору JTAGICE. |
[BYTE] * 298 |
Таблица 5-39. Ответ.
Имя параметра |
Описание |
RSP_OK |
Команда была выполнена. |
RSP_FAILED |
JTAGICE mkII подключен, но он не понял команду. |
RSP_ILLEGAL_EMULATOR_MODE |
Операция не может быть выполнена в этом режиме работы эмулятора (JTAG/debugWire). |
RSP_ILLEGAL_MCU_STATE |
Операция не может быть выполнена в текущем состоянии целевого MCU (target, отлаживаемый микроконтроллер AVR). |
TIMEOUT |
Slave не ответил в течение заданного времени. Либо slave отсутствует, либо не включен. |
5.1.14 Erase Page SPM (CMND_ERASEPAGE_SPM: 0x0D)
Очищает страницу памяти FLASH целиком. Состояние slave: STOPPED.
Таблица 5-40. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Инкрементируется с каждым отправленным пакетом. |
MESSAGE_SIZE |
5 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID, PAGE_ADDRESS >
Таблица 5-41. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x0D (CMND_ERASEPAGE_SPM) |
[BYTE] |
PAGE_ADDRESS |
Адрес для очищаемой страницы. |
[BYTE] * 4, младший байт LSB идет первым |
Таблица 5-42. Ответ.
Имя параметра |
Описание |
RSP_OK |
Команда была выполнена. |
RSP_FAILED |
JTAGICE mkII подключен, но он не понял команду. |
RSP_ILLEGAL_EMULATOR_MODE |
Операция не может быть выполнена в этом режиме работы эмулятора (JTAG/debugWire). |
RSP_ILLEGAL_MCU_STATE |
Операция не может быть выполнена в текущем состоянии целевого MCU (target, отлаживаемый микроконтроллер AVR). |
TIMEOUT |
Slave не ответил в течение заданного времени. Либо slave отсутствует, либо не включен. |
5.1.15 Get Sync (CMND_GET_SYNC 0x0F)
Эта команда отправляется из AVR Studio для восстановления синхронизации с JTAGICE mkII, если синхронизация была потеряна.
Таблица 5-43. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Инкрементируется с каждым отправленным пакетом. |
MESSAGE_SIZE |
1 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID >
Таблица 5-44. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x0F (CMND_GET_SYNC) |
[BYTE] |
Таблица 5-45. Ответ.
Имя параметра |
Описание |
RSP_OK |
Команда была выполнена. |
RSP_FAILED |
JTAGICE mkII подключен, но он не понял команду. |
TIMEOUT |
Slave не ответил в течение заданного времени. Либо slave отсутствует, либо не включен. |
5.1.16 Self test (CMND_SELFTEST: 0x10)
Заставляет JTAGICE mkII выполнить самотестирование и выдать обратно отчет для master. Состояние slave: STOPPED.
Таблица 5-46. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Инкрементируется с каждым отправленным пакетом. |
MESSAGE_SIZE |
Размер MESSAGE_BODY. |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
Параметры для самотестирования (выбор, что тестировать). |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из:
Таблица 5-47. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x10 (CMND_SELFTEST) |
[BYTE] |
FLAGS |
Флаги, идентифицирующие, какие тесты должны быть выполнены. бит 7: внутренние тесты (SRAM, FIFO, ...) бит 6: не используется бит 5: не используется бит 4: не используется бит 3: детектор перемычки сброса STK500 (STK500 RESET JUMPER) бит 2: JTAG PUSH PULL (проверка нагруженности JTAG) бит 1: емкость на сигнале debugWire бит 0: debugWire PUSH PULL (проверка нагруженности сигнала debugWire) |
[BYTE] |
Таблица 5-48. Ответ.
Имя параметра |
Описание |
RSP_OK |
Команда была выполнена. |
RSP_FAILED |
JTAGICE mkII подключен, но он не понял команду. |
RSP_ILLEGAL_EMULATOR_MODE |
Операция не может быть выполнена в этом режиме работы эмулятора (JTAG/debugWire). |
RSP_ILLEGAL_MCU_STATE |
Операция не может быть выполнена в текущем состоянии целевого MCU (target, отлаживаемый микроконтроллер AVR). |
TIMEOUT |
Slave не ответил в течение заданного времени. Либо slave отсутствует, либо не включен. |
5.1.17 Set Breakpoint (CMND_SET_BREAK: 0x11)
Устанавливает точку останова (breakpoint). Аппаратные точки останова на устройствах megaAVR только с интерфейсом JTAG, и с программные точки останова (software breakpoints). Состояние slave: STOPPED.
Таблица 5-49. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Инкрементируется с каждым отправленным пакетом. |
MESSAGE_SIZE |
Размер MESSAGE_BODY. |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
Параметры для установки breakpoint (точка останова, см. формат ниже). |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID, TYPE, NUMBER, ADDRESS, MODE >
Таблица 5-50. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x11 (CMND_SET_BREAK) |
[BYTE] |
TYPE |
0x01: точка останова на память программ (program memory breakpoint) 0x02: точка останова по данным (data breakpoint) 0x03: маска для data breakpoint |
[BYTE] |
NUMBER |
Номер точки останова, от 0x01 до 0x04. Поддерживается до 4 точек останова. Код 0x00 для программных точек останова (software breakpoint). |
[BYTE] |
ADDRESS |
Адрес точки останова или значение маски. |
[BYTE] * 4, младший байт LSB идет первым |
MODE |
0x00: останов на чтении памяти 0x01: останов на записи в память 0x02: останов на чтении или записи 0x03: останов в программе |
[BYTE] |
Таблица 5-51. Ответ.
Имя параметра |
Описание |
RSP_OK |
Команда была выполнена. |
RSP_FAILED |
JTAGICE mkII подключен, но он не понял команду. |
RSP_ILLEGAL_BREAKPOINT |
Точка останова с таким номером не существует, или не поддерживается в этом режиме. Illegal breakpoint (RSP_ILLEGAL_BREAKPOINT: 0xA8) |
RSP_ILLEGAL_EMULATOR_MODE |
Операция не может быть выполнена в этом режиме работы эмулятора (JTAG/debugWire). |
RSP_ILLEGAL_MCU_STATE |
Операция не может быть выполнена в текущем состоянии целевого MCU (target, отлаживаемый микроконтроллер AVR). |
TIMEOUT |
Slave не ответил в течение заданного времени. Либо slave отсутствует, либо не включен. |
5.1.18 Get Breakpoint (CMND_GET_BREAK: 0x12)
Используется хостом (AVR Studio) для чтения назад текущих установок breakpoint в JTAGICE mkII. Аппаратные точки останова на устройствах megaAVR только с интерфейсом JTAG, и с программные точки останова (software breakpoints). Состояние slave: STOPPED.
Таблица 5-52. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Инкрементируется с каждым отправленным пакетом. |
MESSAGE_SIZE |
2 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID, NUMBER >
Таблица 5-53. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x12 (CMND_GET_BREAK) |
[BYTE] |
NUMBER |
Номер точки останова, от 0x01 до 0x04. Поддерживается до 4 точек останова. |
[BYTE] |
Таблица 5-54. Ответ.
Имя параметра |
Описание |
RSP_GET_BREAK |
Команда была выполнена, точка останова возвращена. Чтение breakpoint (RSP_GET_BREAK: 0x83) |
RSP_FAILED |
JTAGICE mkII подключен, но он не понял команду. |
RSP_ILLEGAL_BREAKPOINT |
Точка останова не поддерживается в этом режиме. |
RSP_ILLEGAL_EMULATOR_MODE |
Операция не может быть выполнена в этом режиме работы эмулятора (JTAG/debugWire). |
RSP_ILLEGAL_MCU_STATE |
Операция не может быть выполнена в текущем состоянии целевого MCU (target, отлаживаемый микроконтроллер AVR). |
TIMEOUT |
Slave не ответил в течение заданного времени. Либо slave отсутствует, либо не включен. |
5.1.19 Chip erase (CMD_CHIP_ERASE: 0x13)
Используется для выполнения полной очистки чипа (chip erase). Только устройства megaAVR с интерфейсом JTAG. Устройства с интерфейсом debugWire автоматически очищают страницы FLASH перед программированием. Устройства XMEGA используют специально выделенную функцию XMEGA Erase, которая описана далее в этом документе.
Таблица 5-55. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Инкрементируется с каждым отправленным пакетом. |
MESSAGE_SIZE |
1 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID >
Таблица 5-56. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x13 (CMND_CHIP_ERASE) |
[BYTE] |
Таблица 5-57. Ответ.
Имя параметра |
Описание |
RSP_OK |
Команда была выполнена. |
RSP_FAILED |
JTAGICE mkII подключен, но он не понял команду. |
RSP_ILLEGAL_EMULATOR_MODE |
Операция не может быть выполнена в этом режиме работы эмулятора (JTAG/debugWire). |
RSP_ILLEGAL_MCU_STATE |
Операция не может быть выполнена в текущем состоянии целевого MCU (target, отлаживаемый микроконтроллер AVR). |
TIMEOUT |
Slave не ответил в течение заданного времени. Либо slave отсутствует, либо не включен. |
5.1.20 Enter programming mode (CMND_ENTER_PROGMODE: 0x14)
Вход в режим программирования.
Таблица 5-58. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Инкрементируется с каждым отправленным пакетом. |
MESSAGE_SIZE |
1 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID >
Таблица 5-59. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x14 (CMND_ENTER_PROGMODE) |
[BYTE] |
Таблица 5-60. Ответ.
Имя параметра |
Описание |
RSP_OK |
Команда была выполнена. |
RSP_FAILED |
JTAGICE mkII подключен, но он не понял команду. |
RSP_ILLEGAL_JTAG_ID |
JTAG ID не соответствует целевому отлаживаемому устройству (target device). Illegal JTAG ID (RSP_ILLEGAL_JTAG_ID: 0xA9) |
RSP_ILLEGAL_EMULATOR_MODE |
Операция не может быть выполнена в этом режиме работы эмулятора (JTAG/debugWire). |
RSP_ILLEGAL_MCU_STATE |
Операция не может быть выполнена в текущем состоянии целевого MCU (target, отлаживаемый микроконтроллер AVR). |
TIMEOUT |
Slave не ответил в течение заданного времени. Либо slave отсутствует, либо не включен. |
5.1.21 Leave programming mode (CMND_LEAVE_PROGMODE: 0x15)
Выход из режима программирования.
Таблица 5-61. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Инкрементируется с каждым отправленным пакетом. |
MESSAGE_SIZE |
1 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID >
Таблица 5-62. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x15 (CMND_LEAVE_PROGMODE) |
[BYTE] |
Таблица 5-63. Ответ.
Имя параметра |
Описание |
RSP_OK |
Команда была выполнена. |
RSP_FAILED |
JTAGICE mkII подключен, но он не понял команду. |
RSP_ILLEGAL_EMULATOR_MODE |
Операция не может быть выполнена в этом режиме работы эмулятора (JTAG/debugWire). |
RSP_ILLEGAL_MCU_STATE |
Операция не может быть выполнена в текущем состоянии целевого MCU (target, отлаживаемый микроконтроллер AVR). |
TIMEOUT |
Slave не ответил в течение заданного времени. Либо slave отсутствует, либо не включен. |
5.1.22 Clear Breakpoint (CMND_CLR_BREAK: 0x1A)
Очистка точки останова. Аппаратные точки останова на устройствах megaAVR только с интерфейсом JTAG, и с программные точки останова (software breakpoints). Состояние slave: STOPPED.
Таблица 5-64. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Инкрементируется с каждым отправленным пакетом. |
MESSAGE_SIZE |
Размер MESSAGE_BODY |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
Параметры для конечной точки (см. формат ниже). |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID, NUMBER, ADDRESS >
Таблица 5-65. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x1A (CMND_CLR_BREAK) |
[BYTE] |
NUMBER |
Номер точки останова, от 0x01 до 0x04. Поддерживается до 4 точек останова. |
[BYTE] |
ADDRESS |
Адрес точки останова (для программной точки останова, software breakpoint). |
[BYTE] * 4, младший байт LSB идет первым |
Таблица 5-66. Ответ.
Имя параметра |
Описание |
RSP_OK |
Команда была выполнена. |
RSP_FAILED |
JTAGICE mkII подключен, но он не понял команду. |
RSP_ILLEGAL_BREAKPOINT |
Точка останова с таким номером не существует, или не поддерживается в этом режиме. Illegal breakpoint (RSP_ILLEGAL_BREAKPOINT: 0xA8) |
RSP_ILLEGAL_EMULATOR_MODE |
Операция не может быть выполнена в этом режиме работы эмулятора (JTAG/debugWire). |
RSP_ILLEGAL_MCU_STATE |
Операция не может быть выполнена в текущем состоянии целевого MCU (target, отлаживаемый микроконтроллер AVR). |
TIMEOUT |
Slave не ответил в течение заданного времени. Либо slave отсутствует, либо не включен. |
5.1.23 Run to Address (CMND_RUN_TO_ADDR: 0x1C)
Запускает выполнение программы начиная с текущего адреса в счетчике команд до указанного адреса, который появится в счетчике команд. Состояние slave: STOPPED. Когда команда выполнена, то состояние меняется на RUNNING.
Таблица 5-67. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Инкрементируется с каждым отправленным пакетом. |
MESSAGE_SIZE |
5 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
Адрес, значение счетчика команд, на котором произойдет останов. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID, P.C. Address >
Таблица 5-68. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x1C (CMND_RUN_TO_ADDR) |
[BYTE] |
Program Counter |
Адрес, где произойдет останов. |
[BYTE] * 4, младший байт LSB идет первым |
Таблица 5-69. Ответ.
Имя параметра |
Описание |
RSP_OK |
Команда была выполнена. |
RSP_FAILED |
JTAGICE mkII подключен, но он не понял команду. |
RSP_ILLEGAL_EMULATOR_MODE |
Операция не может быть выполнена в этом режиме работы эмулятора (JTAG/debugWire). |
TIMEOUT |
Slave не ответил в течение заданного времени. Либо slave отсутствует, либо не включен. |
5.1.24 Universal SPI command (CMND_SPI_CMD: 0x1D)
Запускает универсальную команду SPI. Состояние slave: STOPPED.
Прим. переводчика: возможно, эта команда используется только для установки фьюза разрешения debugWire, потому что в оригинальном даташите AVR067 явная ошибка: в таблице 5-71 почему-то стояло имя команды CMND_SPI_ENABLE_DW_FUSE.
Таблица 5-70. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Инкрементируется с каждым отправленным пакетом. |
MESSAGE_SIZE |
5 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
Данные команды SPI. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID, COMMAND [4] >
Таблица 5-71. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x1D (CMND_SPI_CMD) |
[BYTE] |
COMMAND |
4 байта команды SPI |
[BYTE] * 4 |
Таблица 5-72. Ответ.
Имя параметра |
Описание |
RSP_SPI_DATA |
Команда была выполнена. |
RSP_FAILED |
JTAGICE mkII подключен, но он не понял команду. |
RSP_ILLEGAL_EMULATOR_MODE |
Операция не может быть выполнена в этом режиме работы эмулятора (JTAG/debugWire). |
TIMEOUT |
Slave не ответил в течение заданного времени. Либо slave отсутствует, либо не включен. |
5.1.25 Clear event memory (CMND_CLEAR_EVENTS: 0x22)
Инструктирует JTAGICE mkII очистить память событий (event memory, для SW breakpoints, программных точек останова). Должна быть вызвана ПОСЛЕ установки описателя устройства, чтобы удостовериться в том, что будет очищено только требуемое количество event memory.
Таблица 5-73. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Инкрементируется с каждым отправленным пакетом. |
MESSAGE_SIZE |
1 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID >
Таблица 5-74. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x22 (CMND_CLEAR_EVENTS) |
[BYTE] |
Таблица 5-75. Ответ.
Имя параметра |
Описание |
RSP_OK |
Команда была выполнена. |
RSP_FAILED |
JTAGICE mkII подключен, но он не понял команду. |
RSP_ILLEGAL_MCU_STATE |
Операция не может быть выполнена в текущем состоянии MCU (отлаживаемый микроконтроллер AVR). |
TIMEOUT |
Slave не ответил в течение заданного времени. Либо slave отсутствует, либо не включен. |
5.1.26 Restore target (CMND_RESTORE_TARGET: 0x23)
Инструктирует JTAGICE mkII восстановить целевое устройство (target device, отлаживаемый микроконтроллер) в состояние, в котором он может свободно выполнять программу. Это должно быть сделано после завершения сессии отладки, перед отключением и перед запретом фьюза OCD (для JTAG). Команда делает следующее:
• Останавливает цель (Stop target) • Заменяет SW breakpoint-ы оригинальными инструкциями • Сбрасывает цель (Reset target) • Запускает цель на выполнение программы (Run target)
Таблица 5-76. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Инкрементируется с каждым отправленным пакетом. |
MESSAGE_SIZE |
1 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID >
Таблица 5-77. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x23 (CMND_RESTORE_TARGET) |
[BYTE] |
Таблица 5-78. Ответ.
Имя параметра |
Описание |
RSP_OK |
Команда была выполнена. |
RSP_FAILED |
JTAGICE mkII подключен, но он не понял команду. |
RSP_ILLEGAL_MCU_STATE |
Операция не может быть выполнена в текущем состоянии MCU (отлаживаемый микроконтроллер AVR). |
TIMEOUT |
Slave не ответил в течение заданного времени. Либо slave отсутствует, либо не включен. |
5.1.27 Encapsulated ISP command (CMND_ISP_PACKET: 0x2F)
Используется для отправки в JTAGICE mkII любых команд программирования. Пакет ISP, совместимый со стандартным программатором AVRISP mkII [4], инкапсулируется (встраивается) в пакет JTAGICE mkII. Так что JTAGICE mkII работает с пакетом ISP точно так же, как и AVRISP mkII. Таблица 5-170 показывает команды ISP, которые поддерживаются в JTAGICE mkII. Для дополнительной информации по командам ISP см. [5].
Таблица 5-79. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Инкрементируется с каждым отправленным пакетом. |
MESSAGE_SIZE |
Размер MESSAGE_BODY |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID, ISP_PACKET >
Таблица 5-80. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x2F (CMND_ISP_PACKET) |
[BYTE] |
ISP_PACKET |
Инкапсулированные данные AVRISP |
[BYTE] * n |
Таблица 5-81. Ответ.
Имя параметра |
Описание |
RSP_OK |
Команда была выполнена. |
RSP_FAILED |
JTAGICE mkII подключен, но он не понял команду. |
RSP_ILLEGAL_MCU_STATE |
Операция не может быть выполнена в текущем состоянии MCU (отлаживаемый микроконтроллер AVR). |
TIMEOUT |
Slave не ответил в течение заданного времени. Либо slave отсутствует, либо не включен. |
Таблица 5-170. Команды AVRISP mkII, которые поддерживает JTAGICE mkII.
Команда |
Назначение |
CMD_SET_PARAMETER |
Устанавливает параметр |
CMD_GET_PARAMETER |
Читает обратно значение параметра |
CMD_OSCCAL |
Выполняет последовательность калибровки OSCCAL |
CMD_LOAD_ADDRESS |
Загружает адреса для функций программирования |
CMD_ENTER_PROGMODE_ISP |
Переводит target device (отлаживаемый микроконтроллер) в режим программирования |
CMD_LEAVE_PROGMODE_ISP |
Выводит target из режима программирования |
CMD_CHIP_ERASE_ISP |
Выполняет очистку памяти target device |
CMD_PROGRAM_FLASH_ISP |
Программирует память FLASH на target device |
CMD_READ_FLASH_ISP |
Читает память FLASH на target device |
CMD_PROGRAM_EEPROM_ISP |
Программирует память EEPROM на target device |
CMD_READ_EEPROM_ISP |
Читает память EEPROM на target device |
CMD_PROGRAM_FUSE_ISP |
Программирует фьюзы на target device |
CMD_READ_FUSE_ISP |
Читает фьюзы на target device |
CMD_PROGRAM_LOCK_ISP |
Программирует биты защиты на target device |
CMD_READ_LOCK_ISP |
Читает биты защиты на target device |
CMD_READ_SIGNATURE_ISP |
Читает байты сигнатуры на target device |
CMD_READ_OSCCAL_ISP |
Читает байт OSCCAL на target device |
CMD_SPI_MULTI |
Обычная (generic) команда, используемая для выполнения команд ISP |
5.1.28 Write JTAG Instruction (CMND_JTAG_INSTR: 0x24)
Записывает инструкцию JTAG в IR (Instruction Register).
Таблица 5-82. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Инкрементируется с каждым отправленным пакетом. |
MESSAGE_SIZE |
2 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID, IR_VALUE >
Таблица 5-83. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x24 (CMND_JTAG_INSTR) |
[BYTE] |
IR_VALUE |
Значение для записи в IR (Instruction Register) |
[BYTE] |
Таблица 5-84. Ответ.
Имя параметра |
Описание |
RSP_SCAN_CHAIN_READ |
Команда была выполнена. |
RSP_FAILED |
JTAGICE mkII подключен, но он не понял команду. |
RSP_ILLEGAL_EMULATOR_MODE |
Операция не может быть выполнена в этом режиме работы эмулятора (JTAG/debugWire). |
TIMEOUT |
Slave не ответил в течение заданного времени. Либо slave отсутствует, либо не включен. |
5.1.29 Write / read JTAG data (CMND_JTAG_DATA: 0x25)
Записывает и читает данные в / из JTAG DR (Data Register).
Таблица 5-85. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Инкрементируется с каждым отправленным пакетом. |
MESSAGE_SIZE |
N |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID, BITS, DATA >
Таблица 5-86. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x25 (CMND_JTAG_DATA) |
[BYTE] |
BITS |
Количество бит для записи / чтения |
[BYTE] |
DATA |
Данные для записи в DR (Data Register) |
[BYTE] * 4 |
Таблица 5-87. Ответ.
Имя параметра |
Описание |
RSP_SCAN_CHAIN_READ |
Команда была выполнена, данные возвращены. |
RSP_FAILED |
JTAGICE mkII подключен, но он не понял команду. |
RSP_ILLEGAL_EMULATOR_MODE |
Операция не может быть выполнена в этом режиме работы эмулятора (JTAG/debugWire). |
TIMEOUT |
Slave не ответил в течение заданного времени. Либо slave отсутствует, либо не включен. |
5.1.30 Write data to SAB (CMND_JTAG_SAB_WRITE: 0x28)
Записывает данные в AVR32 SAB.
Таблица 5-88. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Инкрементируется с каждым отправленным пакетом. |
MESSAGE_SIZE |
10 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID, ADDRESS, DATA >
Таблица 5-89. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x28 (CMND_JTAG_SAB_WRITE) |
[BYTE] |
ADDRESS |
SAB адрес для записи |
[BYTE] * 5 |
DATA |
Данные для записи в SAB |
[BYTE] * 4 |
Таблица 5-90. Ответ.
Имя параметра |
Описание |
RSP_OK |
Команда была выполнена. |
RSP_FAILED |
JTAGICE mkII подключен, но он не понял команду. |
RSP_ILLEGAL_EMULATOR_MODE |
Операция не может быть выполнена в этом режиме работы эмулятора (JTAG/debugWire). |
RSP_ILLEGAL_VALUE |
Команда предоставлена с неправильным значением величины. |
TIMEOUT |
Slave не ответил в течение заданного времени. Либо slave отсутствует, либо не включен. |
5.1.31 Read SAB data (CMND_JTAG_SAB_READ: 0x29)
Читает данные из AVR32 SAB.
Таблица 5-91. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Инкрементируется с каждым отправленным пакетом. |
MESSAGE_SIZE |
6 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID, ADDRESS >
Таблица 5-92. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x25 (CMND_JTAG_DATA) |
[BYTE] |
ADDRESS |
SAB адрес для чтения |
[BYTE] * 5 |
Таблица 5-93. Ответ.
Имя параметра |
Описание |
RSP_SCAN_CHAIN_READ |
Команда была выполнена, данные возвращены. |
RSP_FAILED |
JTAGICE mkII подключен, но он не понял команду. |
RSP_ILLEGAL_EMULATOR_MODE |
Операция не может быть выполнена в этом режиме работы эмулятора (JTAG/debugWire). |
TIMEOUT |
Slave не ответил в течение заданного времени. Либо slave отсутствует, либо не включен. |
5.1.32 JTAG data block read (CMND_JTAG_BLOCK_READ: 0x2C)
Читает блок данных из AVR32 SAB
Таблица 5-94. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Инкрементируется с каждым отправленным пакетом. |
MESSAGE_SIZE |
7 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID, SIZE, ADDRESS >
Таблица 5-95. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x2C (CMND_JTAG_BLOCK_READ) |
[BYTE] |
SIZE |
Количество 32-битных слов для чтения |
[BYTE] |
ADDRESS |
SAB адрес для чтения |
[BYTE] * 5 |
Таблица 5-96. Ответ.
Имя параметра |
Описание |
RSP_SCAN_CHAIN_READ |
Команда была выполнена, данные возвращены. |
RSP_FAILED |
JTAGICE mkII подключен, но он не понял команду. |
RSP_ILLEGAL_EMULATOR_MODE |
Операция не может быть выполнена в этом режиме работы эмулятора (JTAG/debugWire). |
TIMEOUT |
Slave не ответил в течение заданного времени. Либо slave отсутствует, либо не включен. |
5.1.33 JTAG data block write (CMND_JTAG_BLOCK_WRITE: 0x2D)
Записывает блок данных в AVR32 SAB
Таблица 5-97. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Инкрементируется с каждым отправленным пакетом. |
MESSAGE_SIZE |
N |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID, SIZE, ADDRESS, DATA >
Таблица 5-98. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x28 (CMND_JTAG_BLOCK_WRITE) |
[BYTE] |
SIZE |
Количество 32-битных слов для чтения |
[BYTE] |
ADDRESS |
SAB адрес для записи (дополненный, padded) |
[BYTE] * 8 |
DATA |
Данные для записи в SAB |
[BYTE] * 4 |
Таблица 5-99. Ответ.
Имя параметра |
Описание |
RSP_OK |
Команда была выполнена. |
RSP_FAILED |
JTAGICE mkII подключен, но он не понял команду. |
RSP_ILLEGAL_EMULATOR_MODE |
Операция не может быть выполнена в этом режиме работы эмулятора (JTAG/debugWire). |
RSP_ILLEGAL_VALUE |
Команда предоставлена с неправильным значением величины. |
TIMEOUT |
Slave не ответил в течение заданного времени. Либо slave отсутствует, либо не включен. |
5.1.34 XMEGA Erase (CMND_XMEGA_ERASE : 0x34)
Функции очистки XMEGA. Состояние slave: PROGRAMMING.
Таблица 5-100. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Инкрементируется с каждым отправленным пакетом. |
MESSAGE_SIZE |
5 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID, ERASE_MODE, ADDRESS >
Таблица 5-101. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x34 (CMND_XMEGA_ERASE) |
[BYTE] |
ERASE_MODE |
0x00 XMEGA_ERASE_CHIP 0x01 XMEGA_ERASE_APP 0x02 XMEGA_ERASE_BOOT 0x03 XMEGA_ERASE_EEPROM 0x04 XMEGA_ERASE_APP_PAGE 0x05 XMEGA_ERASE_BOOT_PAGE 0x06 XMEGA_ERASE_EEPROM_PAGE 0x07 XMEGA_ERASE_USERSIG
|
[BYTE] |
ADDRESS |
Адрес очищаемой области |
[BYTE] * 4, младший байт LSB идет первым |
Таблица 5-102. Ответ.
Имя параметра |
Описание |
RSP_OK |
Команда была выполнена. |
RSP_FAILED |
JTAGICE mkII подключен, но он не понял команду. |
RSP_ILLEGAL_EMULATOR_MODE |
Операция не может быть выполнена в этом режиме работы эмулятора (JTAG/debugWire). |
RSP_ILLEGAL_MCU_STATE |
Операция не может быть выполнена в текущем состоянии целевого MCU (target, отлаживаемый микроконтроллер AVR). |
TIMEOUT |
Slave не ответил в течение заданного времени. Либо slave отсутствует, либо не включен. |
5.2 Ответы slave
5.2.1 OK (RSP_OK : 0x80)
Подтверждение: slave распознал и понял команду, все в порядке.
Таблица 5-103. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Значение идентично соответствующему запросу от master. |
MESSAGE_SIZE |
1 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID >
Таблица 5-104. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x80 (RSP_OK) |
[BYTE] |
5.2.2 Failed (RSP_FAILED: 0xA0)
Slave не понял команду и ничего не сделал. Тело сообщения (message body) может быть расширено, чтобы получить подробную информацию о том, ЧТО ИМЕННО не так. В этом месте спецификация может быть обновлена.
Таблица 5-105. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Значение идентично соответствующему запросу от master. |
MESSAGE_SIZE |
1 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID >
Таблица 5-106. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0xA0 (RSP_FAILED) |
[BYTE] |
5.2.3 Illegal Parameter (RSP_ILLEGAL_PARAMETER: 0xA1)
Master попытался записать или прочитать параметр эмулятора, который не существует.
Таблица 5-107. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Значение идентично соответствующему запросу от master. |
MESSAGE_SIZE |
1 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID >
Таблица 5-108. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0xA1 (RSP_ILLEGAL_PARAMETER) |
[BYTE] |
5.2.4 Parameter return (RSP_PARAMETER: 0x81)
Эмулятор возвратил запрошенный параметр.
Таблица 5-109. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Значение идентично соответствующему запросу от master. |
MESSAGE_SIZE |
См. ниже. |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID, PARAMETER_VALUE >
Таблица 5-110. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x81 (RSP_PARAMETER) |
[BYTE] |
PARAMETER_VALUE |
Значение параметра |
[BYTE] * N |
5.2.5 Illegal Memory Access (RSP_ILLEGAL_MEMORY_TYPE: 0xA2)
Master попытался записать или прочитать тип памяти эмулятора, который не существует.
Таблица 5-111. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Значение идентично соответствующему запросу от master. |
MESSAGE_SIZE |
1 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID >
Таблица 5-112. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0xA2 (RSP_ILLEGAL_MEMORY_TYPE) |
[BYTE] |
5.2.6 Illegal Memory Access (RSP_ILLEGAL_MEMORY_RANGE: 0xA3)
Master попытался записать или прочитать неподдерживаемый объем памяти.
Таблица 5-113. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Значение идентично соответствующему запросу от master. |
MESSAGE_SIZE |
1 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID >
Таблица 5-114. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0xA3 (RSP_ILLEGAL_MEMORY_RANGE) |
[BYTE] |
5.2.7 Memory read (RSP_MEMORY: 0x82)
Эмулятор возвратил запрошенный блок памяти.
Таблица 5-115. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Значение идентично соответствующему запросу от master. |
MESSAGE_SIZE |
Размер MESSAGE_BODY в байтах |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID, DATA >
Таблица 5-116. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x82 (RSP_MEMORY) |
[BYTE] |
DATA |
Данные, прочитанные из памяти |
[BYTE] * N |
5.2.8 Breakpoint read (RSP_GET_BREAK: 0x83)
Эмулятор возвратил только запрошенную конечную точку.
Таблица 5-117. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Значение идентично соответствующему запросу от master. |
MESSAGE_SIZE |
Размер MESSAGE_BODY в байтах |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID, TYPE, ADDRESS, MODE >
Таблица 5-118. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x83 (RSP_GET_BREAK) |
[BYTE] |
TYPE |
0x01: точка останова в программе (program breakpoint) 0x02: точка останова по данным (data breakpoint) |
[BYTE] |
ADDRESS |
Адрес |
[BYTE] * 4, младший байт LSB идет первым |
5.2.9 Operation cannot be performed (RSP_ILLEGAL_EMULATOR_MODE: 0xA4)
Master запросил операцию, которая не может быть выполнена в текущем режиме эмулятора.
Таблица 5-119. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Значение идентично соответствующему запросу от master. |
MESSAGE_SIZE |
2 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID, CURRENT_MODE >
Таблица 5-120. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0xA4 (RSP_ILLEGAL_EMULATOR_MODE) |
[BYTE] |
CURRENT_MODE |
0x00: EMULATOR_MODE_DEBUGWIRE 0x01: EMULATOR_MODE_JTAG 0x02: EMULATOR_MODE_UNKNOWN |
[BYTE] |
5.2.10 Operation cannot be performed (RSP_ILLEGAL_MCU_STATE: 0xA5)
Master запросил операцию, которая не может быть выполнена в текущем режиме отлаживаемого процессора (target MCU).
Таблица 5-121. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Значение идентично соответствующему запросу от master. |
MESSAGE_SIZE |
2 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID, CURRENT_MODE >
Таблица 5-122. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0xA5 (RSP_ILLEGAL_MCU_STATE) |
[BYTE] |
CURRENT_MODE |
0x00: STOPPED 0x01: RUNNING 0x02: PROGRAMMING |
[BYTE] |
5.2.11 Program Counter Read (RSP_PC: 0x84)
Возвращает master-у текущее значение счетчика команд (program counter).
Таблица 5-123. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Значение идентично соответствующему запросу от master. |
MESSAGE_SIZE |
5 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID, PROGRAM_COUNTER >
Таблица 5-124. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x84 (RSP_PC) |
[BYTE] |
MESSAGE_BODY |
Значение счетчика команд |
[BYTE] * 4, младший байт LSB идет первым |
5.2.12 Selftest (RSP_SELFTEST: 0x85)
Возвращает результат самотестирования. Содержимое этого теста описано далее. Самотестирование выполняет 2 задачи:
1. Проверяет целостность самого эмулятора. 2. Проверяет на работоспособность реальные условия отладки (интерфейс с устройством в порядке, нет залипших сигналов и т. д.).
Таблица 5-125. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Значение идентично соответствующему запросу от master. |
MESSAGE_SIZE |
Размер MESSAGE_BODY в байтах. |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из 9 частей: < MESSAGE_ID, SELFTEST_0, ..., SELFTEST_7 >
Таблица 5-126. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x85 (RSP_SELFTEST) |
[BYTE] |
SELFTEST_0 |
TEST_SPECIFIC_RESULT |
[BYTE] |
- ... - |
- ... - |
- ... - |
SELFTEST_7 |
TEST_SPECIFIC_RESULT |
[BYTE] |
До 8 отдельных функций самотестирования может быть выбрано командой CMND_SELFTEST. Каждый тест возвращает 1 байт ответа, независимо от того, был ли тест проведен или нет. Отдельные результаты являются значениями SELFTEST, которые могут быть настроены для каждого конкретного теста.
Таблица 5-127. Ответ.
Мнемоника |
Значение |
Что означает self-test |
SELFTEST_SKIPPED |
0x00 |
Этот тест не выполнен |
SELFTEST_OK |
0x01 |
Тест прошел успешно |
SELFTEST_FAILED |
0x80 |
Тест завершился неудачно |
ST_USART_FAILURE |
0x81 |
Внутренний тест USART завершился с ошибкой |
ST_FIFO_M_FAILURE |
0x82 |
Чтение FIFO со стороны master завершилось с ошибкой |
ST_FIFO_S_FAILURE |
0x83 |
Чтение FIFO со стороны slave завершилось с ошибкой |
ST_FIFO_M_EMPTY_FAILURE |
0x84 |
Чтение бита EMPTY со стороны master завершилось с ошибкой |
ST_FIFO_S_EMPTY_FAILURE |
0x85 |
Чтение бита EMPTY со стороны slave завершилось с ошибкой |
ST_FIFO_M_FULL_FAILURE |
0x86 |
Чтение бита FULL со стороны master завершилось с ошибкой |
ST_FIFO_S_FULL_FAILURE |
0x87 |
Чтение бита FULL со стороны slave завершилось с ошибкой |
ST_FIFO_M_NINE_FAILURE |
0x88 |
Чтение бита NINTH (9-й бит) со стороны master завершилось с ошибкой |
ST_FIFO_S_NINE_FAILURE |
0x89 |
Чтение бита NINTH (9-й бит) со стороны slave завершилось с ошибкой |
ST_SRAM_FAILURE |
0x8A |
Тест чтения-записи внутреннего SRAM закончился с ошибкой |
ST_JTAG_TMS_STUCK_HIGH |
0x8B |
Сигнал JTAG TMS не получается перевести в уровень лог. 0 (он залип на лог. 1)! |
ST_JTAG_TCK_STUCK_HIGH |
0x8C |
Сигнал JTAG TCK не получается перевести в уровень лог. 0 (он залип на лог. 1)! |
ST_JTAG_TDI_STUCK_HIGH |
0x8D |
Сигнал JTAG TDI не получается перевести в уровень лог. 0 (он залип на лог. 1)! |
ST_JTAG_TMS_STUCK_LOW |
0x8E |
Сигнал JTAG TMS не получается перевести в уровень лог. 1 (он залип на лог. 0)! |
ST_JTAG_TCK_STUCK_TMS |
0x8F |
Сигналы JTAG TCK и TMS возможно замкнули друг на друга.
|
ST_JTAG_TDI_STUCK_TMS |
0x90 |
Сигналы JTAG TDI и TMS возможно замкнули друг на друга. |
ST_JTAG_TCK_STUCK_LOW |
0x91 |
Сигнал JTAG TCK не получается перевести в уровень лог. 1 (он залип на лог. 0)! |
ST_JTAG_TMS_STUCK_TCK |
0x92 |
Сигналы JTAG TMS и TCK возможно замкнули друг на друга. |
ST_JTAG_TDI_STUCK_TCK |
0x93 |
Сигналы JTAG TDI и TCK возможно замкнули друг на друга. |
ST_JTAG_TDI_STUCK_LOW |
0x94 |
Сигнал JTAG TDI не получается перевести в уровень лог. 1 (он залип на лог. 0)! |
ST_JTAG_TMS_STUCK_TDI |
0x95 |
Сигналы JTAG TMS и TDI возможно замкнули друг на друга. |
ST_JTAG_TCK_STUCK_TDI |
0x96 |
Сигналы JTAG TCK и TDI возможно замкнули друг на друга. |
• Сообщения самотестирования JTAG должны быть в следующей форме: "JTAG connection failed: %message. Please check the physical connection between the ICE and the target." Соединение JTAG неисправно: %сообщение_о_неисправности. Пожалуйста проверьте физическое подключение между ICE (это отладчик) и целевым отлаживаемым устройством.
• Если тест емкости интерфейса debugWire (debugWire Capacitance test) завершился неудачей, должно быть прочитано сообщение: "The JTAGICE mkII has detected a high capacitance on the RESET line, which may be affecting the debugWire communication. Please remove any capacitors from the reset line in your target circuit." JTAGICE mkII определил, что на сигнале сброса RESET подключена большая емкость, это может повлиять на обмен данными по проводу debugWire. Пожалуйста отключите все конденсаторы от сигнала сброса в схеме целевого отлаживаемого устройства.
Прим. переводчика: шина отладки debugWire, в отличие от обычного JTAG, использует для обмена данными только 2 провода - земля GND и ножку сброса микроконтроллера RESET. Через сигнал сброса осуществляется не только сброс микроконтроллера, но и происходит обмен данными, так что любые подключенные на сигнале сброса емкости могут помешать работе эмулятора. Не все микроконтроллеры AVR имеют шину debugWire (за информацией обратитесь к даташиту на микроконтроллер).
• Если тест debugWire PUSH PULL завершился с ошибкой, должно быть прочитано сообщение: "The JTAGICE mkII is unable to pull the reset line low in your target application. Using a too strong pull-up resistor (to low resistance) can cause this. The recommended value is in the order of 10k." JTAGICE mkII не смог перевести сигнал сброса в состояние низкого логического уровня в Вашем отлаживаемом целевом устройстве. Это может произойти, если применен слишком маленький верхний нагрузочный резистор на сигнале сброса. Рекомендуемое значение для нагрузочного резистора - номинал около 10 кОм.
5.2.13 SPI data returned (RSP_SPI_DATA: 0x88)
Возвращает данные, которые выводятся по команде SPI.
Таблица 5-128. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Значение идентично соответствующему запросу от master. |
MESSAGE_SIZE |
Размер MESSAGE_BODY в байтах. |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID >
Таблица 5-129. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x88 (RSP_SPI_DATA) |
[BYTE] |
DATA |
Данные, которые выведены командой SPI |
[BYTE] |
5.2.14 Illegal Command (RSP_ILLEGAL_COMMAND: 0xAA)
Master попытался использовать неправильную команду эмулятора.
Таблица 5-130. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Значение идентично соответствующему запросу от master. |
MESSAGE_SIZE |
1 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID >
Таблица 5-131. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0xAA (RSP_ILLEGAL_COMMAND) |
[BYTE] |
5.2.15 Illegal Value (RSP_ILLEGAL_VALUE: 0xA6)
Master попытался записать неправильное значение параметра эмулятора.
Таблица 5-132. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Значение идентично соответствующему запросу от master. |
MESSAGE_SIZE |
1 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID >
Таблица 5-133. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0xA6 (RSP_ILLEGAL_VALUE) |
[BYTE] |
5.2.16 Sign on (RSP_SIGN_ON: 0x86)
Ответ на команду sign on (подпись) от Master. Назначение ответа - сказать AVR Studio, какой эмулятор подключен и какие версии железа (HW, hardware) и программного обеспечения (FW, firmware) в нем используются.
Таблица 5-134. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Значение идентично соответствующему запросу от master. |
MESSAGE_SIZE |
Размер MESSAGE_BODY в байтах. |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID, COMM_ID, M_MCU_BLDR, M_MCU_FW_MIN, M_MCU_FW_MAJ, M_MCU_HW, S_MCU_BLDR, S_MCU_FW_MIN, S_MCU_FW_MAJ, S_MCU_HW, SERIAL_NUMBER, DEVICE_ID_STR >
Таблица 5-135. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x86 (RSP_SIGNON) |
[BYTE] |
COMM_ID |
Версия протокола обмена |
[BYTE] |
M_MCU_BLDR |
Версия firmware M_MCU boot-loader |
[BYTE] |
M_MCU_FW_MIN |
Версия firmware M_MCU (минор) |
[BYTE] |
M_MCU_FW_MAJ |
Версия firmware M_MCU (мажор) |
[BYTE] |
M_MCU_HW |
Версия аппаратуры M_MCU |
[BYTE] |
S_MCU_BLDR |
Версия firmware S_MCU boot-loader |
[BYTE] |
S_MCU_FW_MIN |
Версия firmware S_MCU (минор) |
[BYTE] |
S_MCU_FW_MAJ |
Версия firmware S_MCU (мажор) |
[BYTE] |
S_MCU_HW |
Версия аппаратуры S_MCU |
[BYTE] |
SERIAL_NUMBER |
(USB) сохраненный в EEPROM серийный номер |
[BYTE] * 6, младший LSB байт идет первым |
DEVICE_ID_STR |
ASCII строка, завершенная нулем "JTAGICE mkII\0", идентифицирующая устройство эмулятора |
[BYTE] * N |
5.2.17 Illegal breakpoint (RSP_ILLEGAL_BREAKPOINT: 0xA8)
Master сделал попытку установить или получить точку останова, которая не существует.
Таблица 5-136. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Значение идентично соответствующему запросу от master. |
MESSAGE_SIZE |
1 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID >
Таблица 5-137. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0xA8 (RSP_ILLEGAL_BREAKPOINT) |
[BYTE] |
5.2.18 Illegal JTAG ID (RSP_ILLEGAL_JTAG_ID: 0xA9)
Master сделал попытку войти в режим программирования, но JTAG ID не соответствует целевому устройству (target device).
Таблица 5-138. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Значение идентично соответствующему запросу от master. |
MESSAGE_SIZE |
1 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID >
Таблица 5-139. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0xA9 (RSP_ILLEGAL_JTAG_ID) |
[BYTE] |
5.2.19 Illegal Command (RSP_ILLEGAL_COMMAND: 0xAA)
Master попытался выполнить неизвестную команду.
Таблица 5-140. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Значение идентично соответствующему запросу от master. |
MESSAGE_SIZE |
1 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID >
Таблица 5-141. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0xAA (RSP_ILLEGAL_COMMAND) |
[BYTE] |
5.2.20 Illegal Target Power State (RSP_NO_TARGET_POWER: 0xAB)
Master сделал попытку выполнить команду, но целевое устройство (target device) выключено (у него отсутствует питание) или не подключено.
Таблица 5-142. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Значение идентично соответствующему запросу от master. |
MESSAGE_SIZE |
1 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID >
Таблица 5-143. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0xAA (RSP_NO_TARGET_POWER) |
[BYTE] |
5.2.21 DebugWire sync failed (RSP_DEBUGWIRE_SYNC_FAILED: 0xAC)
Master попытался войти в режим debugWire, но target не ответил на импульс сброса. Синхронизация DebugWire не достигнута. Такой ответ может прийти на set_parameter переключения эмулятора в режим debugWire, или может быть ответом на другие команды режима debugWire.
Таблица 5-144. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Значение идентично соответствующему запросу от master. |
MESSAGE_SIZE |
1 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID >
Таблица 5-145. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0xAC (RSP_DEBUGWIRE_SYNC_FAILED) |
[BYTE] |
5.2.22 JTAGICE mkII has not enough power to run (RSP_ILLEGAL_POWER_STATE: 0xAD)
Не хватает мощности питания для работы. Этот ответ будет выдан на любую команду, когда JTAGICE mkII получает питание от USB, но прошел энумерацию только для работы от 100 mA. В этом случае JTAGICE mkII находится в режиме пониженного энергопотребления (power save mode) и не будет нормально выполнять никакие команды.
Таблица 5-146. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Значение идентично соответствующему запросу от master. |
MESSAGE_SIZE |
1 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID >
Таблица 5-147. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0xAD (RSP_ILLEGAL_POWER_STATE) |
[BYTE] |
5.2.23 Scan chain read (RSP_SCAN_CHAIN_READ: 0x87)
Возвращает данные в результате успешного прямого чтения по цепочке сканирования JTAG (JTAG scan chain).
Таблица 5-148. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
Значение идентично соответствующему запросу от master. |
MESSAGE_SIZE |
N+1 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID, DATA >
Таблица 5-149. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0x87 (RSP_SCAN_CHAIN_READ) |
[BYTE] |
DATA |
Данные, прочитанные из цепочки сканирования JTAG (JTAG scan chain) |
[BYTE] * N, младший LSB байт идет первым |
[6 События (Events)]
6.1 Что такое события
События являются сообщениями, которые посылает slave (JTAGICE mkII) к master-у (AVR Studio), когда перед этим не была выдана какая-то команда от master. Т. е. эмулятор передает данные в AVR Studio по собственной инициативе. Типичный пример - событие BREAK, когда эмулятор может работать в режиме RUNNING (выполнение программы микроконтроллером) довольно долго, но как только выполнилось условие срабатывания точки останова (break condition), то эмулятор останавливает (переходит в состояние STOPPED) выполнение программы микроконтроллера на соответствующей точке останова. При этом эмулятор должен сообщить о событии останова в AVR Studio. Для этого эмулятор выдает BREAK event для master, который будет выполнять в ответ на это событие соответствующие действия (обновится листинг программы в IDE AVR Studio, и будет показано место в программе, где произошел останов). В этой секции перечислены все события.
6.2.1 Event Break (EVT_BREAK: 0xE0)
Сработало условие точки останова break condition; эмулятор переходит из состояния RUNNING в состояние STOPPED.
Таблица 6-1. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
0xFFFF (зарезервировано для событий) |
MESSAGE_SIZE |
6 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID, PROGRAM_COUNTER, BREAK_CAUSE >
Таблица 6-2. Параметры (устройства tinyAVR / megaAVR).
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0xE0 (EVT_BREAK) |
[BYTE] |
PROGRAM_COUNTER |
Значение счетчика команд |
[BYTE] * 4, младший LSB байт идет первым |
BREAK_CAUSE |
0x00 = unspecified 0x01 = program break 0x02 = data break PDSB 0x03 = data break PDMSB |
[BYTE] |
6.2.2 Event Target Power On (EVT_TARGET_POWER_ON: 0xE4)
Эмулятор отправляет это событие, если питание target было выключено, и затем включилось. AVR Studio должно выполнить соответствующие действия.
Таблица 6-3. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
0xFFFF (зарезервировано для событий) |
MESSAGE_SIZE |
1 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID >
Таблица 6-4. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0xE4 (EVT_TARGET_POWER_ON) |
[BYTE] |
6.2.3 Event Target Power Off (EVT_TARGET_POWER_OFF: 0xE5)
Эмулятор отправляет это событие, когда питание target было включено, и затем выключилось. AVR Studio должно выполнить соответствующие действия.
Таблица 6-5. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
0xFFFF (зарезервировано для событий) |
MESSAGE_SIZE |
1 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID >
Таблица 6-6. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0xE5 (EVT_TARGET_POWER_OFF) |
[BYTE] |
6.2.4 Event Target External Reset (EVT_EXT_RESET: 0xE7)
Пришел внешний сброс target (все еще состояние запуска).
Таблица 6-7. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
0xFFFF (зарезервировано для событий) |
MESSAGE_SIZE |
1 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID >
Таблица 6-8. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0xE7 (EVT_EXT_RESET) |
[BYTE] |
6.2.5 Event Target Enter Sleep (EVT_TARGET_SLEEP: 0xE8)
Процессор target работает, но перешел в режим сна (sleep mode, пониженное энергопотребление).
Таблица 6-9. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
0xFFFF (зарезервировано для событий) |
MESSAGE_SIZE |
1 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID >
Таблица 6-10. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0xE8 (EVT_TARGET_SLEEP) |
[BYTE] |
6.2.6 Event Target Wakeup (EVT_TARGET_WAKEUP: 0xE9)
Процессор target проснулся и вышел из режима пониженного энергопотребления (sleep).
Таблица 6-11. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
0xFFFF (зарезервировано для событий) |
MESSAGE_SIZE |
1 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID >
Таблица 6-12. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0xE9 (EVT_TARGET_WAKEUP) |
[BYTE] |
6.2.7 Event illegal power state (EVT_POWER_ERROR_STATE: 0xEA)
JTAGICE mkII вошел в недопустимое состояние питания (например, пытается получить питание от незапитанного хаба USB) и не может продолжить отладку.
Таблица 6-13. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
0xFFFF (зарезервировано для событий) |
MESSAGE_SIZE |
1 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID >
Таблица 6-14. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0xEA (EVT_ICE_POWER_ERROR_STATE) |
[BYTE] |
6.2.8 Event power OK (EVT_POWER_OK: 0xEB)
Источник питания JTAGICE mkII в порядке, и может использоваться для работы без ограничений.
Таблица 6-15. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
0xFFFF (зарезервировано для событий) |
MESSAGE_SIZE |
1 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID >
Таблица 6-16. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0xEB (EVT_ICE_POWER_OK) |
[BYTE] |
6.2.9 Event IDR dirty (EVT_IDR_DIRTY: 0xEC)
Устройство целевого отлаживаемого процессора (target device) записало регистр IDR.
Таблица 6-17. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
0xFFFF (зарезервировано для событий) |
MESSAGE_SIZE |
1 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID >
Таблица 6-18. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
0xEC (EVT_IDR_DIRTY) |
[BYTE] |
IDR |
Значение, записанное в IDR приложением target |
[BYTE] |
6.2.10 DebugWire Error Events (EVT_ERROR_PHY_X)
Таблица 6-19. События ошибки.
Имя события |
Значение |
EVT_ERROR_PHY_FORCE_BREAK_TIMEOUT |
0xE2 |
EVT_ERROR_PHY_RELEASE_BREAK_TIMEOUT |
0xE3 |
EVT_ERROR_PHY_MAX_BIT_LENGTH_DIFF |
0xED |
EVT_ERROR_PHY_SYNC_TIMEOUT |
0xF0 |
EVT_ERROR_PHY_SYNC_TIMEOUT_BAUD |
0xF4 |
EVT_ERROR_PHY_SYNC_OUT_OF_RANGE |
0xF5 |
EVT_ERROR_PHY_SYNC_WAIT_TIMEOUT |
0xF6 |
EVT_ERROR_PHY_RECEIVE_TIMEOUT |
0xF7 |
EVT_ERROR_PHY_RECEIVED_BREAK |
0xF8 |
EVT_ERROR_PHY_OPT_RECEIVE_TIMEOUT |
0xF9 |
EVT_ERROR_PHY_OPT_RECEIVED_BREAK |
0xFA |
EVT_RESULT_PHY_NO_ACTIVITY |
0xFB |
Таблица 6-20. Формат сообщения.
Имя параметра |
Описание |
MESSAGE_START |
ASCII 27 (символ ESC) |
SEQUENCE_NUMBER |
0xFFFF (зарезервировано для событий) |
MESSAGE_SIZE |
1 |
TOKEN |
ASCII 14 |
MESSAGE_BODY |
См. ниже. |
CRC |
2 байта контрольной суммы |
Тело сообщения (MESSAGE_BODY) состоит из: < MESSAGE_ID >
Таблица 6-21. Параметры.
Имя параметра |
Назначение |
Формат |
MESSAGE_ID |
(EVT_ERROR_PHY_X) |
[BYTE] |
[7 Дескрипторы USB]
В этой секции перечислены дескрипторы, используемые для обмена данными с устройством USB JTAGICE mkII.
7.1 DEVICE Descriptor
Таблица 7-1. Дескриптор устройства.
Смещение |
Поле |
Значение |
Описание |
0 |
bLength |
0x12 |
Размер этого дескриптора 18 байт |
1 |
bDescriptorType |
0x01 |
Тип дескриптора - DEVICE Descriptor |
2 |
bcdUSB |
0x0110 |
Устройство совместимо со стандартом USB версии 1.10 |
4 |
bDeviceClass |
0xFF |
Класс устройства специфичен для вендора |
5 |
bDeviceSubClass |
0x00 |
Каждый интерфейс указывает свою собственную информацию подкласса |
6 |
bDeviceProtocol |
0x00 |
Нет протокола на базе устройства |
7 |
bMaxPacketSize0 |
0x10 |
Максимальный размер пакета для конечной точки 0 равен 16 байт |
8 |
idVendor |
0x03EB |
VID, Vendor ID, идентификатор вендора Atmel |
10 |
idProduct |
0x2103 |
PID, Product ID, идентификатор продукта |
12 |
bcdDevice |
0x0200 |
Номер релиза устройства 2.00 |
14 |
iManufacturer |
0x01 |
Индекс строкового дескриптора, описывающего производителя, равен 1 |
15 |
iProduct |
0x02 |
Индекс строкового дескриптора, описывающего продукт, равен 2 |
16 |
iSerialNumber |
0x03 |
Индекс строкового дескриптора, описывающего серийный номер, равен 3 |
17 |
bNumConfigurations |
0x01 |
Устройство имеет 1 возможный вариант конфигурации |
7.2 CONFIGURATION Descriptor
Таблица 7-2. Дескриптор конфигурации.
Смещение |
Поле |
Значение |
Описание |
0 |
bLength |
0x09 |
Размер этого дескриптора 9 байт |
1 |
bDescriptorType |
0x02 |
Тип дескриптора - CONFIGURATION Descriptor |
2 |
wTotalLength |
0x0020 |
Общее количество данных для этой конфигурации 32 байта. Это включает комбинированную длину всех возвращаемых дескрипторов. |
4 |
bNumInterfaces |
0x01 |
Эта конфигурация поддерживает 1 интерфейс |
5 |
bConfigurationValue |
0x01 |
Для выбора этой конфигурации должна использоваться величина 1 |
6 |
iConfiguration |
0x00 |
У устройства нет строкового дескриптора, описывающего эту конфигурацию |
7 |
bmAttributes |
0x80 |
Характеристики конфигурации: бит 7 зарезервирован |
8 |
MaxPower |
0xFA |
Максимальное энергопотребление устройством в этой конфигурации 500 мА |
7.3 INTERFACE Descriptor
Таблица 7-3. Дескриптор интерфейса.
Смещение |
Поле |
Значение |
Описание |
0 |
bLength |
0x09 |
Размер этого дескриптора 9 байт |
1 |
bDescriptorType |
0x04 |
Тип дескриптора - INTERFACE Descriptor |
2 |
bInterfaceNumber |
0x00 |
Этот интерфейс имеет номер 0 |
3 |
bAlternateSetting |
0x00 |
Значение, используемое для выбора альтернативной установки для этого интерфейса, равно 0 |
4 |
bNumEndpoints |
0x02 |
Для этого интерфейса используется 2 конечные точки |
5 |
bInterfaceClass |
0xFF |
Класс интерфейса специфичен для вендора |
6 |
bInterfaceSubClass |
0x00 |
Код подкласса 0x00 |
7 |
bInterfaceProtocol |
0x00 |
Интерфейс не имеет никаких протоколов, специфичных для класса |
8 |
iInterface |
0x00 |
Устройство не имеет строкового описателя, который описывает этот интерфейс |
7.4 IN ENDPOINT Descriptor
Конечная точка IN используется для обмена данными в направлении от JTAGICE mkII к компьютеру (хост USB).
Таблица 7-4. Дескриптор конечной точки IN.
Смещение |
Поле |
Значение |
Описание |
0 |
bLength |
0x07 |
Размер этого дескриптора 7 байт |
1 |
bDescriptorType |
0x05 |
Тип дескриптора - ENDPOINT Descriptor |
2 |
bEndpointAddress |
0x82 |
Это конечная точка IN с адресом (номером конечной точки) 2 |
3 |
bmAttributes |
0x02 |
Типы: Transfer (тип передачи): BULK Sync (синхронизация): No Sync (нет синхронизации) Usage (назначение): Data EP (конечная точка данных) |
4 |
wMaxPacketSize |
0x0040 |
Максимальный размер пакета для этой конечной точки 64 байта (биты 12 и 11: дополнительные транзакции/фрейм) |
6 |
bInterval |
0x0A |
Интервал опроса 10. Значение интервала опроса равно bInterval или 2**(bInterval-1) |
7.5 OUT ENDPOINT Descriptor
Конечная точка OUT используется для обмена данными в направлении от компьютера (хост USB) к JTAGICE mkII.
Таблица 7-5. Дескриптор конечной точки OUT.
Смещение |
Поле |
Значение |
Описание |
0 |
bLength |
0x07 |
Размер этого дескриптора 7 байт |
1 |
bDescriptorType |
0x05 |
Тип дескриптора - ENDPOINT Descriptor |
2 |
bEndpointAddress |
0x02 |
Это конечная точка OUT с адресом (номером конечной точки) 2 |
3 |
bmAttributes |
0x02 |
Типы: Transfer (тип передачи): BULK Sync (синхронизация): No Sync (нет синхронизации) Usage (назначение): Data EP (конечная точка данных) |
4 |
wMaxPacketSize |
0x0040 |
Максимальный размер пакета для этой конечной точки 64 байта (биты 12 и 11: дополнительные транзакции/фрейм) |
6 |
bInterval |
0x0A |
Интервал опроса 10. Значение интервала опроса равно bInterval или 2**(bInterval-1) |
[8 Параметры]
В таблице 8-1 описаны параметры JTAGICE mkII, которыми можно управлять командами Set и Get.
Таблица 8-1. Описание параметров.
ID |
Описание |
Формат |
Доступ |
Значение |
0x01 |
Версия аппаратуры |
[BYTE] M_MCU ver [BYTE] S_MCU ver |
R |
Строка версии аппаратуры |
0x02 |
Версия firmware |
[BYTE] M_MCU_min [BYTE] M_MCU_maj [BYTE] S_MCU_min [BYTE] S_MCU_maj |
R |
Строка версии firmware |
0x03 |
Режим эмулятора (debugWire или JTAG) |
[BYTE] |
R/W |
0x00: debugWire 0x01: JTAG для megaAVR 0x02: неизвестно / отсутствует (по умолчанию) 0x03: SPI 0x04: JTAG для AVR32 0x05: JTAG для XMEGA 0x06: PDI для XMEGA |
0x04 |
(не используется) |
|
|
(не используется) |
0x05 |
Скорость обмена RS232 (значение по умолчанию 4, что соответствует 19200). Настройка RS232 соответствует выбранной скорости, нет четности, 8 бит данных, 1 стоп-бит |
[BYTE] |
R/W |
0x01: 2400 0x02: 4800 0x03: 9600 0x04: 19200 по умолчанию 0x05: 38400 0x06: 57600 0x07: 115200 0x08: 14400 |
0x06 |
OCD Vtarget |
[BYTE] * 2, младший байт LSB идет первым |
R |
Прочитано из устройства |
0x07 |
OCD JTAG Clock |
[BYTE] |
R/W |
Задержка между установкой и очисткой тактов JTAG |
0x08 |
OCD Break Cause (случай останова) |
[BYTE] |
R |
Прочитано из устройства при срабатывании точки останова |
0x09 |
Таймеры, работающие в target device, находятся в режиме останова |
[BYTE] |
R/W |
0x00: таймеры остановлены (по умолчанию) 0x01: таймеры запущены |
0x0A |
Break on Change of Flow |
[BYTE] |
R/W |
0x00 |
0x0B |
Break Addr1 |
[BYTE] * 2, младший байт LSB идет первым |
R/W |
(не используется) |
0x0C |
Break Addr2 |
[BYTE] * 2, младший байт LSB идет первым |
R/W |
(не используется) |
0x0D |
CombBreakCtrl |
[BYTE] |
R/W |
(не используется) |
0x0E |
Строка JTAGID |
[BYTE] * 4 |
R |
Специфично для устройства |
0x0F .. 0x12 |
(не используется) |
|
|
(не используется) |
0x13 |
Внешний сброс |
[BYTE] |
R/W |
0x00: нет 0x01: да (по умолчанию) |
0x14 |
Размер страницы FLASH |
[BYTE] * 2, младший байт LSB идет первым |
R/W |
Зависит от отлаживаемого устройства |
0x15 |
Размер страницы EEPROM |
[BYTE] |
R/W |
Зависит от отлаживаемого устройства |
0x16 |
(не используется) |
|
|
(не используется) |
0x17 |
PSB0 |
[BYTE] * 2, младший байт LSB идет первым |
R/W |
(не используется) |
0x18 |
PSB1 |
[BYTE] * 2, младший байт LSB идет первым |
R/W |
(не используется) |
0x19 |
(не используется) |
|
|
(не используется) |
0x1A |
Target MCU STATE |
[BYTE] |
R |
0x00: STOPPED 0x01: RUNNING 0x02: PROGRAMMING |
0x1B |
Информация цепочки JTAG |
[BYTE] юнитов перед [BYTE] юнитов после [BYTE] битов перед [BYTE] битов после |
R/W |
|
0x1C |
Адрес загрузки |
[BYTE] * 4, младший байт LSB идет первым |
R/W |
|
0x1D |
Сигнатура target |
[BYTE] * 2, младший байт LSB идет первым |
R |
Читается из target |
0x1E |
(не используется) |
|
|
(не используется) |
0x1F |
Точка входа в программу |
[BYTE] * 4, младший байт LSB идет первым |
W |
|
0x22 |
Чтение mailbox CAN |
[BYTE] |
R/W |
0x00: не читать CAN-mailbox 0x01: читать CAN-mailbox |
0x23 |
Разрешить события IDR |
[BYTE] |
W |
0x00: доступ к OSCCAL 0x01: доступ к IDR |
0x24 |
Разрешить программирование страницы в цепочке сканирования JTAG |
[BYTE] |
W |
0x00: не разрешено 0x01: разрешено |
0x2D |
Soft reset (после отписки) |
[BYTE] |
W |
0x00: жесткий сброс 0x01: нет сброса |
0x31 |
Смещение PDI контроллера NVM |
[BYTE] * 4, младший байт LSB идет первым |
W |
Зависит от устройства |
0x32 |
Смещение PDI секции FLASH приложения |
[BYTE] * 4, младший байт LSB идет первым |
W |
Зависит от устройства |
0x33 |
Смещение PDI секции загрузки приложения |
[BYTE] * 4, младший байт LSB идет первым |
W |
Зависит от устройства |
0x37 |
Последовательность разрешения JTAG AVR32 |
[BYTE] |
W |
0x00: JTAG не разрешен 0x01: использовать последовательность разрешения JTAG |
0x38 |
Запуск после программирования |
[BYTE] |
W |
0x00: удерживать target остановленным 0x01: разрешить target запуститься |
0x40 |
Ошибки парсинга пакета |
[BYTE] * 4, младший байт LSB идет первым |
R |
|
0x41 |
Принято допустимых пакетов |
[BYTE] * 4, младший байт LSB идет первым |
R |
|
0x42 |
Ошибки обмена TX |
[BYTE] * 4, младший байт LSB идет первым |
R |
|
0x43 |
Ошибки обмена RX |
[BYTE] * 4, младший байт LSB идет первым |
R |
|
0x44 |
Ошибки CRC |
[BYTE] * 4, младший байт LSB идет первым |
R |
|
0x45 |
Источник питания |
[BYTE] |
R |
0x00: внешний 0x01: USB |
[9 Поля дескриптора устройства (Device Descriptor)]
Заданные параметры, используемые командой "Set Device Descriptor" (установить дескриптор устройства).
unsigned char ucReadIO[8]; //LSB = IOloc 0, MSB = IOloc63
unsigned char ucReadIOShadow[8]; //LSB = IOloc 0, MSB = IOloc63
unsigned char ucWriteIO[8]; //LSB = IOloc 0, MSB = IOloc63
unsigned char ucWriteIOShadow[8]; //LSB = IOloc 0, MSB = IOloc63
unsigned char ucReadExtIO[52]; //LSB = IOloc 96, MSB = IOloc511
unsigned char ucReadIOExtShadow[52]; //LSB = IOloc 96, MSB = IOloc511
unsigned char ucWriteExtIO[52]; //LSB = IOloc 96, MSB = IOloc511
unsigned char ucWriteIOExtShadow[52]; //LSB = IOloc 96, MSB = IOloc511
unsigned char ucIDRAddress; //адрес IDR
unsigned char ucSPMCRAddress; //адрес регистра SPMCR и dW BasePC
unsigned long ulBootAddress; //адрес запуска загрузчика устройства
// (Device Boot Loader Start Address)
unsigned char ucRAMPZAddress; //адрес регистра RAMPZ в пространстве
// SRAM I/O
unsigned int uiFlashPageSize; //размер страницы FLASH устройства
// (Device Flash Page Size),
// Size = 2 exp ucFlashPageSize
unsigned char ucEepromPageSize; //Размер страницы EEPROM устройства
// (Device Eeprom Page Size) в байтах
unsigned int uiUpperExtIOLoc; //Верхнее (последнее) размещение
// extended I/O, 0 если нет external I/O
unsigned long ulFlashSize; //размер памяти FLASH устройства
unsigned char ucEepromInst[20]; //инструкции для записи/чтения EEPROM
unsigned char ucFlashInst[3]; //инструкции для записи/чтения FLASH
unsigned char ucSPHaddr; //старший байт значения указателя стека
unsigned char ucSPLaddr; //младший байт значения указателя стека
unsigned int uiFlashpages; //количество страниц в памяти FLASH
unsigned char ucDWDRAddress; //адрес регистра DWDR
unsigned char ucDWBasePC; //значение базы/маски для PC
unsigned char ucAllowFullPageBitstream;//FALSE на ВСЕХ новых типах устройств
unsigned int uiStartSmallestBootLoaderSection;
unsigned char EnablePageProgramming; //Только для устройств с JTAG,
// по умолчанию TRUE
unsigned char ucCacheType; //CacheType_Normal 0x00,
//CacheType_CAN 0x01
unsigned int uiSramStartAddr //Начало SRAM
unsigned char ucResetType; //Выбирает тип сброса. 0x00
unsigned char ucPCMaskExtended; //Для устройств с расширенным PC
unsigned char ucPCMaskHigh; //Старшая маска PC
unsigned char ucEindAddress; //адрес EIND IO
unsigned int EECRAddress; //адрес EECR IO
[10 Типы памяти]
Таблицы 10-1. Типы памяти.
Область памяти |
Значение MEM_TYPE |
IO_SHADOW |
0x30 |
SRAM |
0x20 |
EEPROM |
0x22 |
EVENT |
0x60 |
SPM |
0xA0 |
FLASH_PAGE |
0xB0 |
EEPROM_PAGE |
0xB1 |
FUSE_BITS |
0xB2 |
LOCK_BITS |
0xB3 |
SIGN_JTAG |
0xB4 |
OSCCAL_BYTE |
0xB5 |
CAN |
0xB6 |
XMEGA_APPLICATION_FLASH |
0xC0 |
XMEGA_BOOT_FLASH |
0xC1 |
XMEGA_USER_SIGNATURE |
0xC5 |
XMEGA_CALIBRATION_SIGNATURE |
0xC6 |
Когда происходит чтение SRAM, могут предприняты 3 различные действия в зависимости от диапазона адреса. Если адрес в диапазоне 0x0000 .. 0x001F, то JTAGICE mkII будет захватывать данные их файла рабочих регистров общего назначения (general purpose working register file). Если адрес в диапазоне 0x0020 .. 0x005F, то данные будут захватываться из файла регистров ввода/вывода (IO register file). Если AVR поддерживает расширенные регистры ввода/вывода (Extended IO registers) и адрес в диапазоне до 0x00FF, то данные будут захватываться из файла расширенных регистров ввода/вывода (External IO register file).
Если адрес вне диапазона 0x005F, то данные захватываются из внутреннего/внешнего ОЗУ (internal/external SRAM), когда не используется файл внешних регистров ввода/вывода (external IO register file). Если файл внешних регистров ввода/вывода (external IO register) используется, то адрес должен быть в пределах 0x0FF, чтобы данные захватывались из internal/external SRAM.
Чтение памяти через инструкцию SPM (Read memory type SPM) читает одно слово памяти программ (2 байта), тогда как FLASH_PAGE читает страницу целиком. Запись памяти использует FLASH_PAGE для программирования всей памяти FLASH. SPM используется для программирования только одной страницы.
Тип памяти EEPROM_PAGE использует запись страницы и чтение байта. Типы памяти FUSE_BITS, LOCK_BITS и OSCCAL_BYTE используют чтение (и запись) байта.
Адрес, который отправляется в JTAGICE mkII, является байтовым для всех типов памяти. Нужно предоставить только начальный адрес.
Программа эмулятора сообщает об ошибках чтения памяти (Read Memory) как Resp_FAILED. Неизвестные типы для Read Memory и Write Memory игнорируются. Тип памяти CAN поддерживается путем чтения 300 байт всякий раз, когда осуществляется доступ к этому типу памяти. Доступ к памяти CAN управляется параметром Read CAN mailbox. Если параметр Read CAN mailbox = TRUE, то произойдет чтение всех 300 байт, если FALSE, то чтение не осуществляется.
Запись в CAN-mailbox также происходит с помощью использования MemType_CAN. Для каждого редактируемого/записываемого байта здесь должен произойти вызов Cmnd_Write_Memory для этого типа памяти вместе с адресом для байта.
[11 Точки останова, Breakpoints (устройства megaAVR с интерфейсом JTAG)]
Система OCD (расшифровывается On Chip Debug, встроенная в чип система отладки) использует компараторы точки останова (Break Point Comparators) для установки Break Point. Узел управления Break Point содержит две одиночные точки останова на памяти программ (single Program Memory Break Point), и две комбинированные точки останова (combined Break Point). Совместно могут быть сконфигурированы до 4 точек останова следующими способами (при этом для пошагового выполнения всегда задействована одна Break Point):
• 4 одиночные точки останова на программе (Program Memory Break Point) • 3 одиночные точки останова на программе + 1 одиночная точка останова на памяти данных (Data Memory Break Point) • 2 одиночные точки останова на программе + 2 одиночные точки останова на памяти данных • 2 одиночные точки останова на программе + 1 точка останова на программе с маской (Program Memory Break Point with mask, так называемая точка останова с диапазоном, "range Break Point") • 2 одиночные точки останова на программе + 1 точки останова на памяти данных с маской (Data Memory Break Point with mask, "range Break Point")
Data Memory Break Point может быть установлена в один из трех режимов; Data Memory Read, Data Memory Write или Data Memory Read or Write. Data Memory break устанавливает AVR CPU в режим останова (Stopped mode) после завершения инструкции, которая привела к выполнению условия точки останова. Условие останова по содержимому данных не поддерживается.
Система OCD содержит разные регистры в узле управления точками останова (Break Point control unit).
PSBO и PSB1 – Program Break на одиночный адрес, это 16-bit регистры сравнения для счетчика программ (Program Counter) CPU.
PDMSB – Program/Data Mask or Single Break, это регистр, используемый для установки одиночной точки останова в программе либо на адрес памяти программ, либо на адрес памяти данных. Альтернативно PDMSB может действовать как маска на адресе для компаратора PDSB, что реализует точку останова на диапазоне (range-break).
PDSB – Program/Data Single Break, используется для установки одиночной точки останова либо на адрес памяти программ, либо на адрес памяти данных. Альтернативно PDSB может замаскировать адрес для компаратора PDSB, что реализует точку останова на диапазоне (range-break).
BCR – Break Control Register, кроме всего прочего этот регистр используется для управления установками четырех различных вышеупомянутых регистра останова.
Для установки Break Point-ов в JTAG ICE AVR Studio использует команду Cmnd_setParameter и параметры PSB0 H/L и PSB1 H/L для установки регистров PSB0 или PSB1. В этом случае адрес в команде установки параметра является адресом, на котором будет размещена Break Point, и значение показывает должен ли быть установлен PSB0 или PSB1 Break Point на этом месте (0 = PSB0, 1 = PSB1). Необходимая модификация BCR выполняется автоматически.
CmndSetParameter и Parameter BreakAddr устанавливают регистры PDMSB и PDSB. В этом случае BCR автоматически не модифицируется. Чтобы активизировать PDMSB и PDSB Break Point-ы, должна использоваться команда CmndSetParameter и параметр CombBreakCtrl для установки BCR в нужное значение.
Когда JTAGICE mkII останавливается, то все Break Point-ы очищаются, так что перед каждым запуском должны быть установлены все Break Point-ы. Так что команда очистки точек останова не нужна (Clear Break Points).
[12 Алгоритм вычисления CRC16]
Следующий исходный од выполняет расчет контрольной суммы CRC16, которая используется для верификации протокола обмена JTAGICE mkII. Используйте функцию VerifyChecksum для проверки контрольной суммы, чтобы удостовериться в целостности принятой команды. Возвращаемый результат TRUE, если целостность сообщения не нарушена, иначе (если данные сообщения испорчены) будет возвращено FALSE.
Используйте функцию AppendChecksum для добавления 2 байт CRC16 к сообщению перед отправлением сообщения.
/////////////////////////////////////////////////////////////////////////
// Файл crc16.h.
#ifndef CRC16_H
#define CRC16_H
class Crc16
{
public:
//Вычисление контрольной суммы сообщения.
static unsigned short Checksum ( const unsigned char* message,
unsigned long length,
unsigned short crc = 0xffff);
//Проверяет последние 2 байта (младший байт LSB первый)
// на правильность CRC сообщения.
static bool VerifyChecksum ( const unsigned char* message,
unsigned long length);
//Добавляет 2 байта CRC (младший байт LSB первый) к сообщению.
// length является размером сообщения без учета crc.
// Место для байт CRC должно быть предварительно выделено!
static void AppendChecksum ( unsigned char* message,
unsigned long length);
};
#endif
/////////////////////////////////////////////////////////////////////////
// Файл crc16.cpp.
#include "Crc16.h"
// Код, взятый из DataTransportLayer crc16.h
// Определения CRC16
const unsigned short crc_table[256] =
{ 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf,
0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7,
0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e,
0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876,
0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd,
0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5,
0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c,
0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974,
0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb,
0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3,
0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a,
0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72,
0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9,
0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1,
0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738,
0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70,
0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7,
0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff,
0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036,
0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e,
0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5,
0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd,
0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134,
0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c,
0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3,
0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb,
0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232,
0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a,
0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1,
0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9,
0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330,
0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78
};
// Макрос вычисления CRC
#define CRC_INIT 0xFFFF
#define CRC(crcval,newchar) crcval = (crcval >> 8) ^
crc_table[(crcval ^ newchar) & 0x00ff]
unsigned short Crc16::Checksum ( const unsigned char* message,
unsigned long length,
unsigned short crc)
{
for(unsigned long i = 0; i < length; i++)
{
CRC(crc, message[i]);
}
return crc;
}
// Возвращает true, если последние 2 байта в сообщении корректная crc
// от предыдущих байт.
bool Crc16::VerifyChecksum( const unsigned char* message,
unsigned long length)
{
unsigned short expected = Checksum(message, length - 2);
return (expected & 0xff) == message[length - 2] &&
((expected >> 8) & 0xff) == message[length - 1];
}
void Crc16::AppendChecksum ( unsigned char* message,
unsigned long length)
{
unsigned long crc = Checksum(message, length);
message[length] = (unsigned char)(crc & 0xff);
message[length+1] = (unsigned char)((crc >> 8) & 0xff);
}
[Ссылки]
1. AVR067: JTAGICE mkII Communication Protocol site:atmel.com. 2. Atmel AVR JTAGICE mkII. 3. Цоколевка интерфейсов JTAG. 4. AVR-USB162MU: макетирование и изготовление программатора AVRISP-MKII в домашних условиях. 5. AVR069: AVRISP mkII Communication Protocol. 6. HappyJTAG: простой интерфейс JTAG для AVR. 7. HappyJTAG2: JTAG и ISP для AVR. |