- PVSM.RU - https://www.pvsm.ru -

Как быстро выяснить схему соединений, когда на плате 70 микросхем в BGA?
Как протестировать плату, начиная с проверки соединений и заканчивая функциональными испытаниями?
Что можно вытворять с помощью JTAG сканирования? Где применять?
Возьмите в свой арсенал этот действительно полезный и могучий инструмент!
Помимо основной схемы, в микросхему добавляют регистры JTAG интерфейса и немного «кремния», который изолирует основную логику от контактов.


Это позволяет напрямую управлять выводами через JTAG без необходимости настраивать, включать или программировать основную логику устройства. Поэтому не имеет значения, является ли ядром микросхемы FPGA, процессор, Ethernet PHY, память DDR или что-то ещё. В этом и заключается концепция пограничного (или периферийного) сканирования: сделать тестирование на уровне платы независимым от типа устройств, установленных на неё.

JTAG – четырехпроводной интерфейс (TMS, TDI, TDO, TCK – обязательные линии, TRST – дополнительная), позволяющий управлять тестовым портом доступа (Test access port, TAP), который представляет собой относительно простой конечный автомат. Внутри конечного автомата можно настроить разные регистры.

Регистр EXTEST даёт контроль над выводами устройства. Изменяя биты в этом регистре, можно устанавливать или считывать состояния контактов.
В регистре IDCODE хранится уникальный 32-битный код микросхемы, содержащий информацию о производителе, типе микросхемы и версии кристалла. Подделать этот код не представляется возможным, поэтому при несовпадении ID кода с информацией на упаковке или корпусе микросхемы можно сделать вывод, что она поддельная (входной контроль компонентов с поддержкой JTAG [1]).
JTAG даёт возможность выявлять в цепях различные дефекты: разрыв, короткое замыкание между цепями или на линию питания (зависание 0 или 1) и др. Можно проверять простые логические цепи, подавая воздействие и ожидая известный результат, и прочее.
Если к выводу подключен генератор, то можно проверить его работоспособность по наличию переключений.

Можно взаимодействовать с устройствами, не имеющими JTAG, имитируя целевой интерфейс (I2C, SPI, управление оперативной памятью, датчиками и т. д.) с помощью «ногодрыга» (bit-bang). Скорости обмена информацией при имитации интерфейсов с помощью JTAG будут медленнее, чем при использовании штатных модулей интерфейсов. Но работоспособность проверить или сделать ещё что-то полезное можно.

В последовательную цепочку JTAG можно соединять более одного устройства.


Кроме управления выводами и стандартных режимов производители могут закладывать в свои устройства присущие конкретному приложению (application specific) функции и предоставлять к ним доступ через JTAG.
Программирование, отладка, встроенные инструменты (например, опрос датчика температуры ядра) и др.

Встроенный JTAG есть у большинства 32-битных микроконтроллеров, процессоров, у всех FPGA и CPLD, и даже у некоторых Ethernet PHY.
Из принципа работы видно, что пограничное JTAG сканирование можно применять для производственных испытаний собранных плат, входного контроля [1] микросхем (выявление подделок), прямой и обратной разработки, ремонта.
Прямая разработка:
Обратная разработка:
– Мы делаем штучные платы в лаборатории. Допустим, монтажники принесли собранную плату. Было бы очень удобно быстро проверить, всё ли работает (как спаяли).
Примеры применения и возможности периферийного JTAG сканирования удобно рассмотреть, изучив некоторые программные инструменты для его выполнения.
Возможности XJTAG [2] в удобной структурированной форме коротко и довольно ёмко описаны на официальном сайте. Cостав пакета [3] XJTAG
В XJRunner можно запускать созданные с помощью XJDeveloper тесты межсоединений, производить внутрисистемное программирование, тестирование устройств без JTAG и др. Есть богатая встроенная библиотека с файлами для разных устройств, на основе которой можно с минимальными усилиями создавать свои тесты для проверки прототипа или испытаний на производстве.
Если на плате найден дефект цепи (обрыв, замыкание и др.), Layout Viewer покажет наиболее вероятные места его расположения. Это позволяет быстро найти точное физическое место нахождения компонента, цепи и контакта на тестируемой плате. Layout Viewer показывает топологию печатной платы, которую он извлекает из ODB++ файла. Такие файлы можно создавать и в Altium Designer [4].

Для упрощения навигации по плате можно наложить на цепи фото платы. Так гораздо удобнее!

Такой инструмент значительно упрощает поиск неисправностей.

XJAnalyser — мощный инструмент для визуализации и отладки цепей в реальном времени. Позволяет выбирать отдельный вывод и прямо с компьютера устанавливать его состояние: высокий или низкий уровни, постоянное быстрое или медленное переключение, отключение вывода (перевод в высокоомное состояние). И все это с помощью интуитивно понятного графического интерфейса.

Состояния контактов можно не только устанавливать, но и считывать. Красный цвет соответствует высокому логическому уровню, синий – низкому, черный – это непригодные для использования контакты (например, питание).

Что интересно, на плату можно подать какой-то внешний меняющийся сигнал, который придёт на определённый вывод микросхемы. Тогда этот вывод будет переключаться и мы увидим это на экране.

Можно сделать наоборот: с помощью JTAG включить постоянное переключение вывода и искать этот сигнал с помощью осциллографа на плате. Это полезно для выявления дефектов цепей (замыканий, обрывов и прочего), а также для обратной разработки.
XJAnalyser может представлять данные цепочки JTAG в стиле логического анализатора с помощью Waveform Viewer [5]:


Это упрощает отладку, предоставляя возможность для захвата и отображения цифровых сигналов отдельных контактов или шин с течением времени, что помогает выявить и исправить трудноуловимые временные неисправности. Настраиваемый триггер делает процесс ещё более удобным.
В динамике всё это выглядит ещё интереснее (рекомендую посмотреть XJAnalyser – Real-time visual PCB analysis and debug [6]). Короткая и ёмкая демонстрация возможностей профессионального пакета XJTAG с понятным объяснением – JTAG Testing with XJTAG Boundary Scan [7].
Для использования XJAnalyser не нужно писать прошивку микросхем на плате. Можно даже не запускать тактирующие генераторы.

Пакет программ XJTAG видится полезным и весьма интересным. Он может пригодиться как любителям электроники для прямой и обратной разработки, ремонта, так и профессиональным инженерам.
Можно скачать полнофункциональную 30-дневную пробную версию XJTAG.
Для работы нужно подключить испытываемую плату к компьютеру с помощью фирменной коробочки XJLink 2 [8] (характеристики [9]) и загрузить BSDL файлы (Boundary Scan Description Language) для каждой микросхемы с JTAG. Файлы BSDL можно скачать с сайтов производителей или в других местах [10].
Интересно, что XJLink 2 можно приобрести на Али примерно за 70000 р (на конец ноября 2024 г). Возможно, получится подружить пакет XJTAG с какой-то значительно более дешёвой коробочкой/платой.


Кряк любит такие инструменты и уже заинтересовался! ☺ А вы?
Пример поиска соединений между BGA корпусами можно найти здесь [11].

Задачу авторы проекта решили с помощью граничного JTAG сканирования. Для удобства разработали инструмент jrev [12], который исследует все пары JTAG-сканируемых контактов на плате. Результаты можно визуализировать в виде интерактивных рисунков с помощью jvis.

Алекс Форенчич несколько изменил код [13] и выложил на Гитхабе.
Программа FTjrev совместима с Bus Blaster v2+, о чём говорится [14] на странице проекта Bus Blaster, и вообще с платами JTAG на базе FT2232 (проект находится здесь [15]).

Бесплатные.
Кроме открытых FTjrev, jrev [12] и jvis есть другие бесплатные варианты.
Использовать JTAG сканирование и управлять платой можно и с помощью связки OpenOCD + Bus Blaster v3, как показано здесь [16].

В платном пакете JTAG Live Studio есть бесплатная программа JTAG Live Buzz, которая может:
JTAG Boundary Scanner от Viveris.

Открытый проект [17] для отладки или тестирования через JTAG. Работает с платами на основе FT2232H, JLINK и др.
Даёт возможность смотреть состояние и управлять контактами ввода-вывода микросхем; имитировать I2C, SPI, MDIO и др. Поддерживает скрипты.
Управлять программой JTAG Boundary Scanner можно с помощью Питона. Для этого есть проект [18] Pyjtagbs. Дополнительно можно посмотреть здесь [19].
Платные.
Более-менее подробно мы рассмотрели XJTAG. В целом, возможности у платных инструментов похожи. Поэтому рассмотрим остальные инструменты кратко.
JTAG Live Studio платная. Предлагает минимальный уровень автоматизации тестов. Краткое описание пакета [20], демонстрация [21] всего пакета JTAG Live Studio. Работает с разными платами, в том числе на основе FT2232H.
Сложные изделия тестируют в старшей системе – JTAG ProVision. Она практически полностью автоматизирована, поддерживает большое число TAP-портов. Включает в себя огромную библиотеку не-JTAG компонентов, которые можно также протестировать. Можно интегрировать с Альтиум дизайнером через JTAG Maps. Но и стоит раза в 4 дороже.
Это не полный список инструментов. Есть другие.
Дополнительно можно посмотреть, например, список JTAG Boundary Scan Software [22].
Помимо основной схемы, в микросхему добавляют регистры JTAG интерфейса и немного «кремния», который изолирует основную логику от контактов.
Это позволяет напрямую управлять выводами через JTAG без необходимости настраивать, включать или программировать основную логику устройства. Поэтому не имеет значения, является ли ядром микросхемы FPGA, процессор, Ethernet PHY, память DDR или что-то ещё. В этом и заключается концепция пограничного (или периферийного) сканирования: сделать тестирование на уровне платы независимым от типа устройств, установленных на неё.
Встроенный JTAG есть у большинства 32-битных микроконтроллеров, процессоров, у всех FPGA и CPLD, и даже у некоторых Ethernet PHY.
Можно взаимодействовать с устройствами, не имеющими JTAG, имитируя целевой интерфейс (I2C, SPI, управление оперативной памятью, датчиками и т. д.) с помощью «ногодрыга» (bit-bang).
В регистре IDCODE хранится уникальный 32-битный код микросхемы, содержащий информацию о производителе, типе микросхемы и версии кристалла.
Из принципа работы видно, что пограничное JTAG сканирование можно применять для производственных испытаний собранных плат, входного контроля [1] микросхем (выявление подделок), прямой и обратной разработки, ремонта.
Для этого существуют различные платные и бесплатные инструменты. Предоставляемые ими возможности впечатляют и часто значительно упрощают задачу.
Уважаемые читатели, будьте так любезны и ответьте на вопросы. Нам всем будут интересны результаты. Благодарим за голосование!
Автор: Kopcheniy
Источник [29]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/bga/406616
Ссылки в тексте:
[1] входной контроль компонентов с поддержкой JTAG: https://www.youtube.com/watch?v=vlzPS4AmEbA
[2] Возможности XJTAG: https://www.xjtag.com/ru/products/capabilities/
[3] Cостав пакета: https://www.xjtag.com/products/software/
[4] создавать и в Altium Designer: https://www.rezonit.ru/articles/konfiguratsiya-fayla-odb-v-altium-designer/
[5] Waveform Viewer: https://www.xjtag.com/?page_id=30362
[6] XJAnalyser – Real-time visual PCB analysis and debug: https://www.youtube.com/watch?v=D1VV4BvPBiI
[7] JTAG Testing with XJTAG Boundary Scan: https://www.youtube.com/watch?v=BctMdb9AxWM
[8] XJLink 2: https://www.embeddedsingapore.com/wp-content/uploads/2019/05/xjlink2_data_sheet.pdf
[9] характеристики: https://www.xjtag.com/wp-content/uploads/xjtag-tech-specs_xjlink2-en.pdf
[10] в других местах: https://bsdl.info/index.htm
[11] здесь: http://nsa.unaligned.org/
[12] jrev: http://nsa.unaligned.org/jrev.php
[13] несколько изменил код: http://alexforencich.com/wiki/en/reverse-engineering/jtag/start
[14] говорится: http://dangerousprototypes.com/docs/Bus_Blaster
[15] здесь: https://github.com/alexforencich/ftjrev
[16] здесь: https://www.youtube.com/watch?v=8YUWH7W8H3w
[17] проект: https://github.com/viveris/jtag-boundary-scanner?tab=readme-ov-file
[18] проект: https://github.com/colinoflynn/pyjtagbs?tab=readme-ov-file
[19] здесь: https://circuitcellar.com/research-design-hub/design-solutions/bringing-jtag-boundary-scan-into-2021/
[20] Краткое описание пакета: https://microsin.net/adminstuff/others/jtag-live-and-ft2232h-adapter.html
[21] демонстрация: https://youtu.be/3z9EeSbchrU?t=1387
[22] JTAG Boundary Scan Software: https://www.eevblog.com/forum/microcontrollers/jtag-boundary-scan-software-391165/
[23] Every HW Engineer Needs To Know This About JTAG: https://www.youtube.com/watch?v=lV3DECTwTCQ
[24] JTAG Functional Test: https://www.cta.ru/articles/soel/2020/2020-5/124055/
[25] доклад на конференции: https://www.youtube.com/watch?v=3z9EeSbchrU
[26] презентация: https://fpga-systems.ru/conference/2021-1/presentations/05_ivanov_2021-1.pdf
[27] в конце: https://youtu.be/TlWlLeC5BUs?t=1035
[28] https://iosifk.narod.ru/jtag_page.htm: https://iosifk.narod.ru/jtag_page.htm
[29] Источник: https://habr.com/ru/companies/timeweb/articles/865094/?utm_campaign=865094&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.