Есть то, что JTAG «означает», и есть то, что JTAG «есть». Как уже отмечалось JTAG «является» промышленным стандартом интерфейса шины для производства тестирования, как в J oint T Эст фикция G Roup.
Что JTAG «означает» для разработчика встроенного программного обеспечения, так это интерфейс отладки на SoC / микропроцессоре для внешней отладки встроенного программного обеспечения, работающего на чипе. Почти каждый процессор / SoC на рынке использует интерфейс JTAG не только для производственных испытаний, но и для поддержки отладки программного обеспечения. Вы найдете интерфейс JTAG на всем, от процессоров x86 серверного класса до домашних WiFi-маршрутизаторов стоимостью менее 50 долларов. Благодаря подходящему аппаратному обеспечению интерфейса и подходящему программному обеспечению эти интерфейсы предоставят вам возможность чтения / записи памяти, установки точек останова и одношагового кода.
Ключ, конечно же, заключается в получении правильного оборудования и программного обеспечения. Даже если базовый интерфейс JTAG стандартизирован, конкретные средства отладки программного обеспечения, доступные в устройстве, могут не быть. JTAG похож на TCP / IP. Он существует в середине стека приложения. Вам нужен правильный физический уровень для связи с оборудованием (т.е. что вы имеете в виду, что эта штука использует 10-Base-2?!?!?), И вам нужно правильное прикладное программное обеспечение над ним (что вы имеете в виду, мне нужен суслик) клиент?!?!?!). Однако сила экосистемы ARM привела к некоторой степени стандартизации там (см. OpenOCD).
Вы также спрашивали об использовании JTAG для программирования flash. Да, некоторые программы используют его и для этой цели. SoC может предоставлять средства JTAG для чтения / записи из адресных пространств памяти ЦП, он может обеспечивать прямой доступ к контроллерам флэш-памяти и, как минимум, JTAG обеспечивает необработанный низкоуровневый доступ к выводам ввода-вывода на краю чипа (это было первоначальная цель JTAG - обеспечить возможность проверки целостности соединений между чипами и микросхемами во время производственных испытаний, то есть «сканирование границ JTAG»). Любое из этих средств может быть использовано умными программистами для подачи сигналов, необходимых для перепрограммирования флеш-чипа в случае, если устройство случайно «замуровано».