Роутер или спутниковый ресивер перестал загружаться после неудачной прошивки, а фирменный отладчик стоит неоправданно дорого — именно в этой ситуации чаще всего собирают самодельный JTAG программатор. Интерфейс JTAG позволяет напрямую обращаться к процессору и флеш-памяти устройства, читать и записывать прошивку даже тогда, когда загрузчик полностью стёрт.

Программатор для JTAG можно собрать из недорогих компонентов: от простейшего варианта на LPT-порту из нескольких резисторов до USB-адаптера на микросхеме FT2232. В этой статье разберём, какие схемы реально работают, как подобрать компоненты, правильно соединить сигнальные линии и проверить работоспособность сборки без риска для целевого устройства.

Что такое JTAG и когда нужен самодельный программатор

JTAG (стандарт IEEE 1149.1) — это интерфейс граничного сканирования, изначально созданный для тестирования печатных плат. Со временем он стал стандартным способом отладки и программирования микроконтроллеров, процессоров и флеш-памяти. Через JTAG можно остановить процессор, прочитать содержимое памяти и записать новую прошивку.

Самодельный программатор оправдан в нескольких ситуациях: восстановление «окирпиченных» роутеров и ресиверов, прошивка микроконтроллеров при обучении, работа со старой техникой, для которой фирменные отладчики уже не выпускаются. Если задача разовая, покупать оригинальный J-Link или аналог нет смысла — простая схема справится не хуже, хоть и медленнее.

  • 🔧 Восстановление загрузчика роутера или ресивера после сбоя прошивки
  • 💾 Чтение и запись флеш-памяти NOR и NAND через процессор
  • 🎓 Обучение работе с микроконтроллерами и отладка собственных плат
  • 🛠 Ремонт техники, где UART-консоль недоступна или заблокирована

Основные сигнальные линии интерфейса

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

СигналНазначениеНаправление
TCKТактовый сигналОт программатора к устройству
TMSВыбор режима конечного автоматаОт программатора к устройству
TDIВход данныхОт программатора к устройству
TDOВыход данныхОт устройства к программатору
TRST (опц.)Сброс тестового портаОт программатора к устройству

Кроме сигнальных линий, на разъёме обычно присутствуют GND и Vref — опорное напряжение целевой платы. Именно по Vref программатор определяет логические уровни устройства: 3,3 В или 1,8 В. Подавать питание от программатора на целевую плату нельзя — линия Vref служит только для измерения уровня, а не для запитки устройства.

💡

JTAG работает с уровнями целевой платы. Перед подключением обязательно измерьте напряжение на выводе Vref — несовпадение логических уровней может вывести из строя порт процессора.