Об особенностях электротехнических (и не только) сообществ: параллельные IT‑миры задают каверзные вопросы про JTAG

в 9:06, , рубрики: jtag, игра, эксперты

В литературном жанре фантастики существует художественный приём, когда постулируется наличие множества одновременно существующих миров. Каждый из этих миров похож на другой, но отличается несколькими ключевыми особенностями. Все эти миры существуют по большей части независимо, но допускают возможность путешествий между собой.
На первый взгляд, применимость концепции мультивселенной весьма ограничена и распространяется разве что на контрфактический метод в исторических исследованиях.

Однако я считаю, что существование параллельных миров реальней, чем кажется.
Так, в одном из наших параллельных миров шлем виртуальной реальности Oculus Rift DK1, выдающий Full HD для каждого глаза, в общем‑то, устарел к концу 2010‑х и сейчас представляет собой скорее антиквариат.
В то же самое время, новейшая версия знаменитого пакета симуляции LTspice, вышедшая 24.08.2024, имеет пользовательский интерфейс, характерный для конца 1990‑х.

Интерфейс MDI в середине третьего десятилетия XXI века
Интерфейс MDI в середине третьего десятилетия XXI века

Приведу другой пример, показывающий, что граница между параллельными мирами может пролегать даже внутри отдельно взятой головы.
В шестой серии третьего сезона сериала «Кремниевая долина», обыгрывается конфликт персонажа Томаса Миддлдитча с его новой подругой, который возник на почве того, как правильно делать отступы в коде: пробелами или табуляцией.
Один и тот же человек может одновременно смеяться над этой ситуацией, занимать чью‑либо сторону, и при этом знать о существовании такого класса утилит, как бьютифаеры, которые как раз не изменяя сути кода, меняют его форматирование в соответствии с шаблоном оформления — расставляют отступы и переносы.

JTAG – Just a Tool for Application debuG

Личный пример, когда я столкнулся с существованием параллельных миров, связан с JTAG.

Статьи, доклады на различных конференциях и прочие материалы о JTAG почти всегда стартуют с одного и того же вступления:
«Еще в 1980 году группа разработчиков Joint Test Action Group (JTAG) разработала спецификацию для тестирования межсоединений на плате: "boundary-scan testing"».
Именно вот с этого «Ещё в 1980 году...».

Затем почти всегда идёт пояснение:
«boundary‑scan — это периферийное или граничное сканирование».
Именно так: «периферийное или граничное»

После этого рассказывается, как же непросто производителям печатных плат:
«Представьте себе, что Вы разрабатываете плату скажем с 5 микросхемами и у каждой микросхемы 100-1000 контактов. Микросхемы соединены между собой тысячами соединений на плате. На заводе плата будет выпускаться партиями десятками тысяч экземпляров. Понятно, что часть плат после монтажа компонентов будет браком. Где-то не пропаяются контакты, где-то трещина в PCB или не получилось переходное отверстие между слоями платы».
И раскрывается суть JTAG отключить у цифровой микросхемы буферы ввода‑вывода от внутренних схем, реализующих основной функционал. Подключить их к специальному внутреннему модулю, который позволит директивно устанавливать на выводах лог.0, лог.1, HiZ, а также считывать текущее значение. И протестировать (прозвонить) все межсоединения.

Затем скороговоркой рассказывается «что‑то на умном» про TAP‑контроллер, конечный автомат, регистры инструкций и данных. Про то, что регистр данных может как содержать идентификационный код микросхемы, так и отвечать за состояния выводов. Про то, что в таком случае он будет называться «boundary‑scan register — регистр периферийного или граничного сканирования». Про типы ячеек и про что‑то ещё.
Всё это проносится как кроны деревьев перед глазами человека, катающегося на карусели.

И, наконец, идёт реклама технических решений от конкретной компании.

Всё это настолько шаблонно и настолько повторяется, что слыша/читая «Ещё в 1980 году...», уже автоматически ожидается появление чего‑нибудь «периферийного или граничного».
Поэтому в цикле статей про JTAG я постарался уделить максимум внимания именно техническим аспектам.

Ввиду вышесказанного было несколько неожиданно прочитать комментарий автора @lorc следующего содержания:

Я в основном работаю с JTAG в режиме отладки MCU <...> Со стороны вот такого вот пользователя JTAG, я бы хотел дать совет: укажите где-то в начале статьи что JTAG не только для отладки кода. Что изначально его придумали как раз для boundary scan. Лично для меня это когда-то давно стало открытием.

Мне показалось, что это отдельное исключение из статистики общечитательского опыта.
Но потом я внезапно узнаю, что один из авторов Хабра с гордостью, по сути, продублировал функционал JTAG при помощи UART, встроенного в микроконтроллер.

Разумеется, в отличие от упомянутого проекта, оригинальный JTAG работает не только на микроконтроллерах, но и на процессорах, ПЛИС, статической памяти (например, CY7C1525KV18) и многом другом.
А ещё с оригинальным JTAG работает масса прикладного программного обеспечения для тестирования электроники от компаний Corelis, Göpel, JTAG Technologies и XJTAG. Данное программное обеспечение предоставляет в том числе возможность автоматической генерации тестов по списку соединений (нетлисту), полученному из EDA, где разрабатывалось то или иное электронное устройство.

В беседе с другим программистом микроконтроллеров (с достаточно большим стажем работы и весомым портфолио) я решил упомянуть данную историю в качестве отраслевого анекдота. Однако тот шутку не понял, и сказал:

Не, а причём здесь JTAG и тестирование? Тем более тестирование межсоединений на печатных платах!

Внезапно стало понятно, что существует целый параллельный мир, в котором JTAG — не аббревиатура (в которой T — это Test), а имя собственное.
И в котором JTAG был создан «для программирования микроконтроллеров».

Правила игры в наши параллельные миры

С одной стороны, ближайший коллега по сообществу может оказаться представителем абсолютно другого измерения, причём совершенно внезапно.
С другой стороны, я и сам могу оказаться подобным представителем для кого‑либо. Например, я был абсолютно уверен, что счётчик Гейгера не способен регистрировать рентгеновское излучение. А он может, особенно, если сделан на основе слюдяного датчика.

Ввиду этого, мне кажется, весьма любопытной была бы следующая игра‑исследование:

  1. Несколько членов какого‑либо хаба договариваются друг с другом о взаимном опросе на профессиональную тематику. Участниками могут быть как топовые авторы с кармой 200+, так и нонеймы с отрицательной кармой и нулём статей.

  2. Каждый участник формулирует по 2‑3 вопроса с развёрнутыми и обоснованными ответами. Вопросы должны по возможности высвечивать компетентность в конкретной сфере внутри тематики хаба, а ответы на них должны быть очевидны тому, кто их сформулировал.
    При этом сами вопросы могут быть как ультрасложные, так и элементарные. Как с подвохом, так и абсолютно прозрачные для специалистов в данной сфере.
    Очень желательно, чтобы для решения данных вопросов не требовалось обращение ни к каким дополнительным материалам. То есть чтобы Настоящий Специалист, по мнению автора конкретного вопроса, по умолчанию знал на него ответ.
    Если же без знания каких‑либо справочных данных вопрос неразрешим, то эти данные желательно включить в сам вопрос.

  3. Авторы вопросов, помимо ответов, снабжают вопросы тегами (1‑3 шт.), обозначающими узкоспециализированную тематику.

  4. Все вопросы скидываются ведущему, который сводит их в единый файл. Он не редактирует и не обсуждает суть вопросов, но может по договорённости откорректировать ошибки правописания.
    Разумеется, если в вопросе есть что‑либо непристойное либо незаконное, ведущий должен отклонить данный вопрос/ответ.

  5. В заранее оговоренный день ведущий рассылает файл с вопросами участникам.

  6. Участники должны за сутки дать ответы на вопросы, не используя дополнительные материалы: ни книги, ни Интернет, ни ChatGPT, ни друзей (коллег, знакомых, родственников).
    Джентльменам верят на слово, так что никакой контроль не предусмотрен.
    А временно́й интервал в сутки служит для того, чтобы участник не наткнулся на ответ случайно, скажем, листая ленту Хабра.

  7. Если участник не знает ответа на какой‑либо вопрос, то он так и пишет: «Без малейшего понятия, что такое этот ваш баундари‑скан регистр»
    Если он слышал о теме вопроса краем уха, то вполне допустим ответ: «Это что‑то про JTAG»
    При этом, если участник понимает, что он не специалист в данном вопросе, ему сто́ит это указать: «...но вообще не вникал. Просто видел пару раз на конференциях доклады на тему»

  8. Ответы передаются ведущему и он публикует статью, где предоставляются вопросы с авторскими ответами и ответами участников. Всё в обезличенном виде — никаких бонусов за правильные ответы, никаких санкций и позора за ошибочные ответы.

  9. Затем происходит публичное обсуждение качества и корректности ответов, вопросов и их тегов.

Мне, как автору хабов Электроника для начинающих и Производство и разработка электроники, в качестве целевой аудитории видятся в первую очередь участники именно этих хабов. И именно в таком опросе я бы с радостью принял участие.

Но возможно, что и представители других инженерно‑технических сфер будут заинтересованы в проведении подобной игры. Если такая игра состоится, я также с интересом прочитал бы итоговую статью‑отчёт о ней.

Автор: Flammmable

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js