Я запускаю Debian 8 на iMx6, и все работает нормально, пока я быстро не выключу и не включу питание. (Quick Power Cycle) Я получаю это на dmesg:

usb 1-1.6: device no response, device descriptor read/64, error -32

Если я захожу с ssh и выполняю команду перезагрузки, я получаю ту же ошибку, что и предыдущая загрузка. Но если я выключу его и подожду не менее 5 секунд, USB запустится без проблем.

Кто-нибудь знает, что означает ошибка -32?

Вот вывод dmesg:

root@vasoport:~# dmesg | grep usb
[    0.234446] usbcore: registered new interface driver usbfs
[    0.234522] usbcore: registered new interface driver hub
[    0.234614] usbcore: registered new device driver usb
[    0.234783] 2000000.aips-bus:usbphy_nop1 supply vcc not found, using dummy regulator
[    0.234907] 2000000.aips-bus:usbphy_nop2 supply vcc not found, using dummy regulator
[    1.319001] usbcore: registered new interface driver rtl8192cu
[    1.323787] usbcore: registered new interface driver cdc_ether
[    1.328389] usbcore: registered new interface driver MOSCHIP usb-ethernet driver
[    1.345027] usbcore: registered new interface driver cdc_acm
[    1.356196] usbcore: registered new interface driver usb-storage
[    1.361036] usbcore: registered new interface driver usbserial
[    1.365648] usbcore: registered new interface driver usbserial_generic
[    1.370922] usbserial: USB Serial support registered for generic
[    1.375698] usbcore: registered new interface driver cp210x
[    1.380013] usbserial: USB Serial support registered for cp210x
[    1.384702] usbcore: registered new interface driver ftdi_sio
[    1.389202] usbserial: USB Serial support registered for FTDI USB Serial Device
[    1.395287] usbcore: registered new interface driver option
[    1.399600] usbserial: USB Serial support registered for GSM modem (1-port)
[    1.406359] 2184800.usbmisc supply vbus-wakeup not found, using dummy regulator
[    1.460961] usb0: HOST MAC 42:3f:32:d8:7c:c0
[    1.464020] usb0: MAC ea:65:54:9f:3e:fe
[    1.592253] usbcore: registered new interface driver uvcvideo
[    1.621151] usbcore: registered new interface driver bcm203x
[    1.625616] usbcore: registered new interface driver btusb
[    1.629884] usbcore: registered new interface driver ath3k
[    1.773230] usb 1-1: new high-speed USB device number 2 using ci_hdrc
[    2.213248] usb 1-1.1: new low-speed USB device number 3 using ci_hdrc
[    2.313217] usb 1-1.1: device no response, device descriptor read/64, error -32
[    2.503239] usb 1-1.1: device no response, device descriptor read/64, error -32
[    2.703225] usb 1-1.1: new low-speed USB device number 4 using ci_hdrc
[    2.793222] usb 1-1.1: device no response, device descriptor read/64, error -32
[    2.993222] usb 1-1.1: device no response, device descriptor read/64, error -32
[    3.183224] usb 1-1.1: new low-speed USB device number 5 using ci_hdrc
[    3.190138] usbcore: registered new interface driver usbhid
[    3.194438] usbhid: USB HID core driver
[    3.197772] usbcore: registered new interface driver snd-usb-audio
[    3.371438] usb_otg_vbus: disabling
[    3.603314] usb 1-1.1: device not accepting address 5, error -32
[    3.703272] usb 1-1.1: new low-speed USB device number 6 using ci_hdrc
[    4.123304] usb 1-1.1: device not accepting address 6, error -32
[    4.136116] usb 1-1-port1: unable to enumerate USB device
[    4.373263] usb 1-1.6: new low-speed USB device number 7 using ci_hdrc
[    4.453252] usb 1-1.6: device no response, device descriptor read/64, error -32
[    4.643963] usb 1-1.6: device no response, device descriptor read/64, error -32
[    4.833317] usb 1-1.6: new low-speed USB device number 8 using ci_hdrc
[    4.943258] usb 1-1.6: device no response, device descriptor read/64, error -32
[    5.133246] usb 1-1.6: device no response, device descriptor read/64, error -32
[    5.323272] usb 1-1.6: new low-speed USB device number 9 using ci_hdrc
[    5.743293] usb 1-1.6: device not accepting address 9, error -32
[    5.843271] usb 1-1.6: new low-speed USB device number 10 using ci_hdrc
[    6.263291] usb 1-1.6: device not accepting address 10, error -32

Похоже, что-то с напряжением, я думаю, но есть ли способ исправить это на стороне программного обеспечения?

Редактировать: Здесь представлены напряжения 5 В и 3 В 3, а также вывод сброса iMx6, который все больше и больше показывает, что напряжение 3 В 3 в порядке.

Нормальный старт Нормальный старт

Быстрый старт Быстрый старт

2 ответа2

2

Вы можете найти коды ошибок в errno.h, который включает в себя errno-base.h. Возвращенные коды ошибок по соглашению отрицательны, поэтому -32 - это "сломанный канал", что, скорее всего, является следствием сбоя чтения или записи через USB.

2184800.usbmisc supply vbus-wakeup not found, using dummy regulator

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

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

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

Таким образом, самый простой обходной путь - «не включайте слишком быстро».

0

Таким образом, одним из решений было бы использование разрядной цепи с активным конденсатором с использованием полевых МОП-транзисторов в источниках питания 5 В и 3 В 3. Как эта схема: https://electronics.stackexchange.com/questions/201343/discharge-power-rail-with-mosfet

Конденсатор разряда Мосфет:Конденсатор разряда Мосфет

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .