50486

[i] Отладка МК, объединённых в JTAG-цепочку, с использованием различных программаторов в IDE Keil

Автор статьи: Комарьков Владимир Николаевич (Инженер)
Дата последнего изменения: 09.12.2025 12:09:06

Микроконтроллеры (МК), поддерживающие отладочный интерфейс JTAG (IEEE 1149.1), могут быть объединены на плате в общую JTAG-цепочку. Такое объединение позволяет получить доступ к каждому МК с использованием только одного программатора. В данной статье рассмотрены особенности работы различных программаторов с МК, объединёнными в JTAG-цепочку, в среде разработки Keil.

В JTAG-цепочку могут быть включены следующие МК Миландр с ядром Cortex-M (или аналогом), имеющие интерфейс JTAG: К1901ВЦ1QI, семейство К1986ВЕ9x, семейство К1986ВЕ1x, К1986ВК01GI, К1986ВЕ8Т.

МК К1986ВК214 и К1986ВК234 имеют только отладочный интерфейс SWD, поэтому они не могут быть включены в JTAG- цепочку.

Содержание

1. Общая информация о JTAG-цепочке
2. Программатор ULINK2
3. Внутрисхемный гальванически развязанный USB-программатор производства АО «ПКК Миландр» (CMSIS-DAP)
4. Программатор J-Link Base                                                                         

1. Общая информация о JTAG-цепочке

На рисунке 1 представлен пример объединения нескольких МК в JTAG-цепочку.

Рисунок 1 - Пример JTAG-цепочки

Шина JTAG-сигналов называется портом тестового доступа (TAP - Test Access Port). Порт тестового доступа имеет четыре или пять выделенных выводов МК: ТСК, TMS, TDI, TDO и (опционально) TRST. Каждый МК в JTAG-цепочке подключён к сигналам этой шины:

  • TCK (Test Clock) - синхросигнал;

  • TMS (Test Mode Select) - выбор тестового режима;

  • TDI (Test Data Input) - вход тестовой последовательности;

  • TDO (Test Data Output) - выход тестовой последовательности;

  • TRST (Test Reset) - сигнал сброса TAP-контроллера (опциональный).

Необходимо отметить, что именно сигналы TDI и TDO объединяют несколько МК в последовательную цепочку, т.е. выход TDO одного МК соединен со входом TDI другого МК. Остальные сигналы имеют параллельный доступ ко всем МК.

Объединять в JTAG-цепочку можно как разные МК (например, К1986ВЕ1x и К1986ВК01GI), так и одинаковые (например, несколько К1986ВЕ9x).

Стандарт IEEE 1149.1 не вводит ограничений на максимальное количество устройств в JTAG-цепочке. Однако, данное ограничение определяется самим программатором, о чём указывается в его характеристиках.

2. Программатор ULINK2

Максимальное количество устройств в JTAG-цепочке - 64.

При работе с JTAG-цепочкой каких-либо дополнительных настроек в среде Keil производить не требуется. Достаточно только в настройках программатора, поле «JTAG Device Chain», выбрать требуемый МК, как показано на рисунке 2, после чего можно выполнять программирование и отладку данного МК.

Рисунок 2 - Настройка программатора ULINK2

Самое верхнее устройство в поле «JTAG Device Chain» соответствует МК, подключенному к выводу TDO программатора (на рисунке 1 это MCU1), далее следуют МК в соответствии с их подключением в JTAG-цепочке.

3. Внутрисхемный гальванически развязанный USB-программатор производства АО «ПКК Миландр» (CMSIS-DAP)

Максимальное количество устройств в JTAG-цепочке - 8 (по состоянию на декабрь 2025 года).

При работе с JTAG-цепочкой каких-либо дополнительных настроек в среде Keil производить не требуется. Достаточно только в настройках программатора, поле «JTAG Device Chain», выбрать требуемый МК, как показано на рисунке 3, после чего можно выполнять программирование и отладку данного МК.

Рисунок 3 - Настройка программатора CMSIS-DAP

Самое верхнее устройство в поле «JTAG Device Chain» соответствует МК, подключенному к выводу TDO программатора (на рисунке 1 это MCU1), далее следуют МК в соответствии с их подключением в JTAG-цепочке.

4. Программатор J-Link Base

Максимальное количество устройств в JTAG-цепочке - 32.

При работе с программатором J-Link Base была обнаружена особенность: при подключении в Keil 5.36 к МК, вне зависимости от настроек «Target Driver Setup->JTAG Device Chain», всегда выбирается последнее устройство в JTAG-цепочке. Поэтому, чтобы выбрать необходимый МК, следует принудительно указать программатору, к какому устройству в JTAG-цепочке необходимо подключиться. Для этого в папке с проектом Keil необходимо разместить скрипт-файл «JLinkScript», в котором будет указано подключение к требуемому МК.

Также в настройках программатора необходимо задать соответствующие настройки подключения, например, как показано на рисунке 4, и выбрать в окне "Target Driver Setup->JTAG Device Chain" любой МК из JTAG-цепочки.

Рисунок 4 - Настройка программатора J-Link Base

В конце статьи приведён пример скрипт-файла, сделанного для следующей JTAG-цепочки:

J-Link TDI -> #5(K1986VE9x) -> #4-3(K1901VC1QI) -> #2(K1986VK01GI) -> #1(K1986VE1x) -> #0(K1986VE8T) -> J-Link TDO

Для подключения к требуемому МК необходимо установить в 1 соответствующую переменную MCU_XXX в 1.

Подробнее про скрипт-файл «JlinkScript» приведено на официальном сайте Segger: https://wiki.segger.com/Manual_setup_of_JTAG_chain

Информация по использованию скрипт-файлов J-Link в Keil представлена на сайте:
https://wiki.segger.com/Keil_MDK-ARM#Using_J-Link_Script_Files

Сохранить статью в PDF

Файлы для скачивания

Теги

Была ли статья полезной?