Отладка USB CDC ACM Serial: line coding, control line state и пропавшие данные

Как отлаживать USB CDC ACM-виртуальные serial-устройства, изучая SET_LINE_CODING, SET_CONTROL_LINE_STATE, bulk-конечные точки и поведение прошивки.

USB, CDC ACM, serial, line coding, прошивка, виртуальный COM-порт

USB CDC ACM-устройства используются для виртуальных serial-портов, консолей устройств, инструментов прошивки, телеметрии, тестовых стендов и встроенной диагностики. Со стороны приложения всё выглядит просто: "открыл COM-порт или /dev/ttyACM*, задал baud rate, читал и писал байты. Под капотом хост и устройство всё равно обмениваются класс-управляющими USB-запросами и bulk-передачами." Когда CDC-устройство перечисляется, но данные не идут, захват покажет, в чём проблема: "layout дескрипторов, line coding, control line state, трафик конечных точек или буферизация прошивки."

У CDC ACM есть интерфейсы Control и Data

Типичное CDC ACM-устройство выставляет коммуникационный интерфейс и интерфейс данных. Хост может слать класс-управляющие запросы до начала обмена данными.

Важные доказательства:

  • communication interface descriptor
  • data interface descriptor
  • CDC functional descriptors
  • notification-конечная точка
  • bulk IN-конечная точка
  • bulk OUT-конечная точка
  • SET_LINE_CODING
  • GET_LINE_CODING
  • SET_CONTROL_LINE_STATE

Если эти запросы не приходят, возможно, хост не привязал ожидаемый CDC-драйвер.

Baud rate — часто сигнал, а не физический UART

Для многих USB CDC-устройств baud rate не имеет физического смысла в том же смысле, что для UART. Но хост всё равно шлёт line coding. Прошивка может использовать его, чтобы сконфигурировать мост, проигнорировать или валидировать.

Вопросы к захвату:

  • послал ли хост SET_LINE_CODING?
  • какой baud rate, parity, stop bits и data bits были запрошены?
  • приняла ли прошивка запрос?
  • установил ли хост DTR или RTS через SET_CONTROL_LINE_STATE?
  • ждёт ли прошивка DTR перед отправкой?

Многие проблемы «нет serial-вывода» на самом деле «прошивка ждёт DTR, а хост его никогда не установил» или «приложение открыло порт, но не сконфигурировало как ожидалось».

Bulk-конечные точки доказывают движение данных

После настройки CDC-данные обычно идут через bulk-конечные точки. Если записи хоста видны на bulk OUT, но bulk IN-ответа нет, прошивка, возможно, не отправляет. Если данные на bulk IN идут, но приложение их не отображает, проблема может быть на стороне приложения.

Изучите:

  • направление конечной точки
  • длины передач
  • повторяющееся NAK/timeout-поведение
  • реальные байты полезной нагрузки
  • статус передач
  • порядок относительно line-state запросов

Вот как USB-захват становится полезнее терминального скриншота.

Место Bus Scope

Bus Scope должен помогать командам прошивок держать дескрипторы, класс-запросы и сырые данные по конечным точкам в одном сеансе. Для отладки CDC ACM он должен отвечать:

  • привязал ли хост CDC?
  • какой line coding он послал?
  • менялся ли DTR/RTS?
  • нёс ли bulk OUT команды?
  • нёс ли bulk IN ответы?
  • случилась ли проблема до или после начала serial-трафика?

Для запросов вроде «USB CDC ACM no data», «virtual COM port no output», «SET_CONTROL_LINE_STATE DTR» доказательства не только в терминале. Они в USB класс-запросах и передачах по конечным точкам.

<!-- bus-scope-localized-transaction-foundation-v1:start -->

Проверка USB-контракта для «Отладка USB CDC ACM Serial: line coding, control line state и пропавшие данные»

Краткий ответ: STALL, timeout или reset сам по себе не объясняет причину. Сначала докажите, что provider видит нужный device, затем прочитайте контракт transfer: тип, направление, recipient, wValue, wIndex, заявленная и фактическая длина, status и состояние до/после. Свяжите вывод с первой транзакцией, отличающейся от исправного запуска.

Граница Сравнение Решение
Платформа provider, права, Root Hub или usbmon/XHC20 Records относятся к нужному соединению?
Setup bmRequestType, bRequest, wValue, wIndex, wLength Host отправил ожидаемый запрос?
Data направление, длина и сохранённые bytes Payload соответствует контракту?
Status ACK, STALL, timeout или cancellation Где завершилась транзакция?
Состояние configuration, interface, alternate setting, halt Device был готов к запросу?

Начинайте до reset и enumeration, сохраняя descriptors, SET_CONFIGURATION, SET_INTERFACE и command перед отказом. Узкий endpoint filter может скрыть решающий control transfer. В одном опыте выполняйте одно USB-действие и меняйте только firmware, driver, port, cable, host command или timing.

Как написать цитируемый ответ?

Укажите request, setup fields, ответ и предыдущее состояние, затем тест с одной переменной. Не сохранённые из-за retention bytes не доказывают packet loss. Близость command и reset показывает корреляцию, но не причину без повторения или перехода состояния.

Сохраняйте VID/PID, firmware, speed, topology, provider, filter и trigger. Сравнивайте смысловые USB-фазы, а не frame numbers usbmon и USBPcap. Запишите начало, конец, версию, OS, подключение и checksum. Используйте устранение неполадок Bus Scope.

Semrush owners разделены: free USB analyzer принадлежит продукту, best USB protocol analyzerсравнению, USB descriptor viewerруководству descriptor. Для этой support-страницы не создаётся выдуманный volume или KD.

<!-- bus-scope-localized-transaction-foundation-v1:end --><!-- multilingual-blog-closeout:start -->

Прямой ответ и граница приемки

Краткий ответ по теме «Отладка USB CDC ACM Serial: line coding, control line state и пропавшие данные»: Как отлаживать USB CDC ACM-виртуальные serial-устройства, изучая SET_LINE_CODING, SET_CONTROL_LINE_STATE, bulk-конечные точки и поведение прошивки. Считайте это проверяемым результатом, а не обещанием для любого входа, устройства, проекта или окружения. Полный результат фиксирует исходное состояние, точное действие, видимый выход и условие, подтверждающее завершение задачи в Bus Scope.

Порядок работы от доказательств

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

Контрольная точка 1: Отладка USB CDC ACM Serial: line coding, control line state и пропавшие данные

Сформулируйте для «Отладка USB CDC ACM Serial: line coding, control line state и пропавшие данные» воспроизводимое условие успеха или отказа. Укажите, что должно присутствовать, отсутствовать и какое восстановление безопасно. Сохраняйте исходный проект или захват до прохождения той же проверки исправленной копией.

Контрольная точка 2: Как отлаживать USB CDC ACM-виртуальные serial-устройства, изучая SETLINECODING, SETCONTROL

Рассматривайте «Как отлаживать USB CDC ACM-виртуальные serial-устройства, изучая SET_LINE_CODING, SET_CONTROL_LINE_STATE, bulk-конечные точки и поведение прошивки.» как отдельную границу приемки для «Отладка USB CDC ACM Serial: line coding, control line state и пропавшие данные». Зафиксируйте состояние до действия, первое видимое изменение и конечное состояние. Если результат отличается от заявленной цели, вернитесь к последней подтвержденной точке, а не продолжайте на предположениях.

Контрольная точка 3: У CDC ACM есть интерфейсы Control и Data

Сформулируйте для «У CDC ACM есть интерфейсы Control и Data» воспроизводимое условие успеха или отказа. Укажите, что должно присутствовать, отсутствовать и какое восстановление безопасно. Сохраняйте исходный проект или захват до прохождения той же проверки исправленной копией.

Контрольная точка 4: Baud rate — часто сигнал, а не физический UART

Рассматривайте «Baud rate — часто сигнал, а не физический UART» как отдельную границу приемки для «Отладка USB CDC ACM Serial: line coding, control line state и пропавшие данные». Зафиксируйте состояние до действия, первое видимое изменение и конечное состояние. Если результат отличается от заявленной цели, вернитесь к последней подтвержденной точке, а не продолжайте на предположениях.

Контрольная точка 5: Bulk-конечные точки доказывают движение данных

Сформулируйте для «Bulk-конечные точки доказывают движение данных» воспроизводимое условие успеха или отказа. Укажите, что должно присутствовать, отсутствовать и какое восстановление безопасно. Сохраняйте исходный проект или захват до прохождения той же проверки исправленной копией.

Контрольная точка 6: Место Bus Scope

Рассматривайте «Место Bus Scope» как отдельную границу приемки для «Отладка USB CDC ACM Serial: line coding, control line state и пропавшие данные». Зафиксируйте состояние до действия, первое видимое изменение и конечное состояние. Если результат отличается от заявленной цели, вернитесь к последней подтвержденной точке, а не продолжайте на предположениях.

Контрольная точка 7: Проверка USB-контракта для «Отладка USB CDC ACM Serial: line coding, control line state и

Сформулируйте для «Проверка USB-контракта для «Отладка USB CDC ACM Serial: line coding, control line state и пропавшие данные»» воспроизводимое условие успеха или отказа. Укажите, что должно присутствовать, отсутствовать и какое восстановление безопасно. Сохраняйте исходный проект или захват до прохождения той же проверки исправленной копией.

Контрольная точка 8: Как написать цитируемый ответ?

Рассматривайте «Как написать цитируемый ответ?» как отдельную границу приемки для «Отладка USB CDC ACM Serial: line coding, control line state и пропавшие данные». Зафиксируйте состояние до действия, первое видимое изменение и конечное состояние. Если результат отличается от заявленной цели, вернитесь к последней подтвержденной точке, а не продолжайте на предположениях.

Контрольная точка 9: communication interface descriptor

Сформулируйте для «communication interface descriptor» воспроизводимое условие успеха или отказа. Укажите, что должно присутствовать, отсутствовать и какое восстановление безопасно. Сохраняйте исходный проект или захват до прохождения той же проверки исправленной копией.

Контрольная точка 10: data interface descriptor

Рассматривайте «data interface descriptor» как отдельную границу приемки для «Отладка USB CDC ACM Serial: line coding, control line state и пропавшие данные». Зафиксируйте состояние до действия, первое видимое изменение и конечное состояние. Если результат отличается от заявленной цели, вернитесь к последней подтвержденной точке, а не продолжайте на предположениях.

Матрица приемки

Точка Сохраняемое доказательство Критерий успеха
Отладка USB CDC ACM Serial: line coding, control line state и пропавшие данные Исходное состояние, одно действие и результат Второй оператор воспроизводит заявленный результат
Как отлаживать USB CDC ACM-виртуальные serial-устройства, изучая SETLINECODING, SETCONTROLLINESTATE, bulk-конечные точки Исходное состояние, одно действие и результат Второй оператор воспроизводит заявленный результат
У CDC ACM есть интерфейсы Control и Data Исходное состояние, одно действие и результат Второй оператор воспроизводит заявленный результат
Baud rate — часто сигнал, а не физический UART Исходное состояние, одно действие и результат Второй оператор воспроизводит заявленный результат
Bulk-конечные точки доказывают движение данных Исходное состояние, одно действие и результат Второй оператор воспроизводит заявленный результат
Место Bus Scope Исходное состояние, одно действие и результат Второй оператор воспроизводит заявленный результат

Изоляция, восстановление и передача

Остановитесь на первой неуспешной границе. Сохраните источник, проект, сеанс или захват, сделайте копию перед разрушающим редактированием и меняйте одну переменную за опыт. Повтор широкого процесса после нескольких изменений может дать иной результат без объяснения причины.

Отличайте отсутствие доказательств от доказательства отсутствия. Пустой экран может означать неверный вход, область, фильтр, права, устройство, период или состояние проекта. Подтвердите получение или импорт до толкования decoder, редактора, отчета или экспорта.

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

Вопросы и ответы

Как надежнее всего начать?

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

Какие доказательства сохранять?

Сохраните идентификатор входа, версию, платформу, настройки, точное действие, первый неожиданный переход и конечный выход. Закройте и повторно откройте проект, сеанс, отчет или экспорт.

Когда повторять процедуру?

После значимого изменения приложения, системы, драйвера, прошивки, модели, источника или процесса. Сохраните предыдущий принятый случай как неизменную основу сравнения.

Когда результат готов к передаче?

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

Связанные руководства

Эти страницы на том же языке описывают соседние этапы, не меняя канонического владельца темы:

<!-- multilingual-blog-closeout:end -->