Что находится внутри блока отладчика и как именно это работает

#debugging #embedded #usb #breakpoints #jtag

#отладка #встроенный #usb #точки останова #jtag

Вопрос:

Я работаю с блоком отладчика iSystem, используемым для отладки автомобильных встроенных систем.

Я не могу не задаться вопросом, что находится внутри таких коробок и как именно они работают.

Я понимаю только то, что на одном конце есть интерфейс USB, а на другом — интерфейс JTAG. Я думаю, что будет электроника для преобразования сигналов USB в TTL, но после этого я не уверен.

Отвечает ли этот блок только за установку точек останова в нашем коде в режиме реального времени через интерфейс JTAG (управляемый нами) и передачу информации о состоянии MCU обратно к нам через USB? Что именно там может быть, что делает его таким сложным и дорогостоящим?

Ответ №1:

На большинстве современных процессоров большая часть тяжелой работы по отладке выполняется на кристалле. До того, как отладка на кристалле была распространена, встроенные эмуляторы были очень сложными и даже более дорогими — я помню, как арендовал один для проекта Intel 8051 за еженедельную аренду, вероятно, большую, чем стоимость большинства модулей JTAG. Кроме того, это была большая панель размером с книгу с дорогим и хрупким отладочным зондом, который вы подключили к своей плате вместо процессора.

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

Например, для GNU debugger GDB требуется «заглушка GDB» — программный интерфейс между программным обеспечением главного отладчика и целевым оборудованием. Заглушка GDB может выполняться на цели — например, для Linux это позволяет выполнять «удаленную отладку» по сети или даже через последовательный интерфейс без какого-либо отладочного оборудования, но не подходит для отладки с использованием «чистого металла» и платы. В других случаях заглушка выполняется на хосте — например, обычный OpenOCD обеспечивает это для очень простого встроенного отладочного оборудования JTAG. В более дорогих отладчиках заглушка может выполняться на самом оборудовании отладчика, поэтому оборудование должно иметь возможность обработки.

Физический интерфейс для JTAG или проприетарный встроенный интерфейс отладки тривиален. Реализации, использующие резидентное программное обеспечение для отладки хоста, такое как OpenOCD, вообще не должны быть очень сложными. Фактически, в те дни, когда ПК имели параллельные порты для подключения к принтеру, это можно было использовать для передачи сигналов JTAG, поэтому аппаратное обеспечение было совершенно тупым — так называемый дизайн «Вигглера». Простые современные конструкции типа «wiggler» также глупы, но для выполнения этой функции обычно требуется микросхема устройства с параллельным портом USB или небольшой микроконтроллер. Они часто выполняются довольно медленно.

Более сложные отладчики обычно содержат микроконтроллер для обеспечения интерфейса USB-устройства и более быстрого ввода-вывода для JTAG. Устройства, поддерживающие трассировку отладки, требуют относительно более высокой скорости ввода-вывода и возможности быстрой передачи больших объемов данных.

Все отладчики iSystem на https://www.isystem.com/products/hardware/on-chip-analyzers.html также имеется подключение по Ethernet и большие встроенные буферы трассировки отладки с высокой пропускной способностью, а также аналоговые и цифровые входы для мониторинга подключенной системы параллельно с отладкой кода. Они кажутся гораздо более сложными, чем типичный отладчик низкого уровня, который вы описываете как «интерфейс USB на одном конце и интерфейс JTAG на другом«. Это наводит на мысль, что у них есть возможности, выходящие за рамки простого отладчика.

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

В конечном счете цена, которую вы платите, не имеет большого отношения к стоимости физического оборудования — Raspberry Pi стоимостью 35 долларов, вероятно, обладает большими возможностями, чем даже самые сложные отладчики JTAG. Объемы для этих устройств, особенно устройств высокого класса, невелики, а затраты на разработку относительно высоки, поэтому вы платите за амортизированные затраты на разработку, экспертизу и текущие продажи и техническую поддержку, предоставляемые поставщиком / производителем. Как разработчик, вы сами понимаете, что эти вещи не бесплатны, если вы зарабатываете на жизнь, а ваша компания получает прибыль. Глядя на документацию iSystem, вы также покупаете не только аппаратное обеспечение — в комплект поставки также входит программное обеспечение WinIDEA debug — стоит ли это чего-нибудь, это вопрос мнения, я с ним не знаком.

Если ваши потребности в отладке удовлетворяются «интерфейсом USB на одном конце и интерфейсом JTAG на другом»., возможно, вам не нужно такое сложное устройство, как iSystem. Он также поддерживает функции осциллографа и анализатора логики, но синхронно с трассировкой команд кода — очень мощный для сложных систем.

Ответ №2:

Что именно там может быть, что делает его таким сложным и дорогостоящим

Ничего. Но они продаются только в небольших объемах — я бы ожидал, что для конкретного отладчика будет продано от 1 до 10 тыс. единиц, может быть, даже меньше.

Но у вас все еще есть фиксированные затраты на разработку — как для аппаратного, так и для программного обеспечения. Это приводит к высокой удельной стоимости, которая на самом деле вообще не связана с оборудованием.

что находится внутри таких блоков

Обычно какой-нибудь микроконтроллер с поддержкой USB и регулятор уровня, иногда с изоляцией (который вам понадобится для автомобильных приложений ISP).