| Предыдущий | Следующий |
| kIOUSBBufferOverrunErr | kIOUSBNotSent1Err |
kIOUSBBufferUnderrunErr
Недостаток данных относится к пути передачи
kIOUSBBufferUnderrunErr — парный устаревшему статусу переполнения буфера результат. Определение IOUSBFamily связывает его с аппаратным состоянием хоста или шины во время пути вывода данных, а не с собственным кодом ответа класса устройства. Он означает, что конвейеру передачи не хватило данных или буферизации в требуемый момент обработки.
Это отличается от обычного короткого пакета, который допустим для некоторых типов USB-передач и протоколов. Также это не остановка конечной точки устройства: underrun не означает, что устройство намеренно отклонило конечную точку. Нужно определить, на какой стадии возник недостаток — у производителя приложения, в поставленном запросе, пути DMA или контроллера либо при переходе питания.
Диагностическая граница
- Запишите направление передачи, размер запроса, фактический размер завершения, тип конечной точки и наличие концентратора перед устройством.
- Сохраните состояние очереди до и после ошибки; последующий тайм-аут или возвращённый запрос может быть следствием, а не независимым сбоем.
- Проверьте сторону-производитель OUT-передачи на ошибки срока жизни буфера и асинхронного завершения.
- Не превращайте статус в общий диагноз «устройство отправило слишком мало данных» без доказательств от контроллера и протокола.
Ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.