Page 1 of 17

Тестируем поддержку USB - 2

Posted: Wed May 15, 2013 6:50 pm
by CleverMouse
Старая тема разрослась на 46 страниц с большим количеством более неактуальных логов и исправленных багов, ориентироваться в ней сложно, поэтому я закрыла её и открываю новую тему.

Код наконец-то почти готов к заливанию на svn, но в ходе приведения его в готовность я могла допустить какие-нибудь ошибки, поэтому я прошу проверить текущую версию ещё раз.
Ядро: http://ftp.kolibrios.org/users/CleverMo ... kernel.mnt
Драйвера: http://ftp.kolibrios.org/users/CleverMo ... sbstor.obj и http://ftp.kolibrios.org/users/CleverMo ... usbhid.obj

Известные общие проблемы, о которых можно не сообщать:
1. На навороченных мышах не работает скроллинг.
2. На USB-накопителях поддерживаются только FAT16 и FAT32.
3. Код поддержки USB-накопителей не обрабатывает ситуации смены карты внутри накопителя без переподключения самого накопителя.
4. Код поддержки USB-накопителей останавливает всю работу с устройством, увидев фатальную ошибку. Если USB-накопитель поддерживает два логических устройства, но с одним из них работать не получается, то со вторым могут быть проблемы.
5. Отладочный вывод чересчур интенсивный. Не следует пугаться "TD failed" от движений мыши и "Command 03 failed" при подключении флешки, это нормальные явления.

Известные проблемы конкретных конфигураций:
6. В VirtualBox с установленной поддержкой USB2 устройства, подключённые до загрузки к виртуальному USB2-контроллеру, не будут видны. Это баг VirtualBox.
7. eBox некорректно обрабатывает короткие входные пакеты в расщеплённых транзакциях типа прерываний, что приводит к тому, что там навороченные мыши через USB2-хаб работать не будут.
NB: исправление проблемы 1 приведёт к тому, что условия проявления проблемы 5 перестанут выполняться (конкретно - короткие пакеты), в результате проблема 7 перестанет проявляться, но починена (будучи аппаратной проблемой) не будет.
8. В этой конфигурации один из UHCI-контроллеров упорно генерирует не то прерывание, которое прописала BIOS в PCI-пространстве. Причём BIOS не виновата, ибо Interrupt Pin тоже не соответствует истине: Interrupt Pin у UHCI-контроллера совпадает с Interrupt Pin у EHCI-контроллера на том же самом PCI-устройстве, назначенные IRQ у них тоже совпадают = 03, но EHCI-контроллер действительно генерирует IRQ 03, а UHCI - почему-то IRQ 0B. Я запрашивала у yogev_ezra в личке полные дампы PCI-пространства USB-контроллеров, там нет ничего подозрительного. Как это чинить правильно, я не знаю, r3505+r3506 обходят проблему путём "если никто из зарегистрированных обработчиков не подтвердил прерывание, давайте опросим все другие обработчики, которые ещё ничего не подтвердили".

Re: Тестируем поддержку USB - 2

Posted: Wed May 15, 2013 7:22 pm
by Miggi
Может быть я что-то не так делаю, но система виснет. При загрузке ядра - последнее это установка мыши. Доску посмотреть не могу.
Ноутбук: Fujitsu Siemens AMILO M6450G. Чипсет Intel 915GM + ICH6-M. USB устройства не подключены.

Re: Тестируем поддержку USB - 2

Posted: Wed May 15, 2013 7:36 pm
by CleverMouse
Версия с дублированием вывода доски отладки на экран на случай зависания до возможности вызвать доску отладки: http://ftp.kolibrios.org/users/CleverMo ... el_dbg.mnt

Re: Тестируем поддержку USB - 2

Posted: Wed May 15, 2013 9:04 pm
by Miggi
Лог
Spoiler:верхушка затерта
K : edx=00006871
K : has_ownership
K : HCSPARAMS = 00104208, HCCPARAMS=00006871
K : attaching to IRQ 0B
K : EHCI controller at 00:EF with 8 ports initialized
K : UHCI controller at 00:E8 with 2 ports initialized
K : UHCI controller at 00:E9 with 2 ports initialized
K : UHCI controller at 00:EA with 2 ports initialized
K : UHCI controller at 00:EB with 2 ports initialized
K : kernel SVN r3506
K : 1 cpu detected
========== tmpdisk 0.45 =========
tempdisk.obj driver loaded successfully
trying to add disk
disk size is not specified
10% from free RAM will be used, new DiskSize: 48 MB
operation complited successfully
K : warning relinking handler from IRQ1 to IRQ14
K : Process - forced terminate PID: 00000001 [os/idle]
K : Page fault
K : EAX : 0000077A EBX : 00000000 ECX : 00000000
K : EDX : 00000002 ESI : 800578E8 EDI : 80B58000
K : EBP : 00000001 EIP : 80019B74 ESP : 80821D98
K : Flags : 00210002 CS : 00000008 (kernel)
K : FS - HD timeout
K : FS - HD read error

Re: Тестируем поддержку USB - 2

Posted: Wed May 15, 2013 9:22 pm
by CleverMouse
Miggi, спасибо за репорт, это я исправила, с обновлённым http://ftp.kolibrios.org/users/CleverMo ... kernel.mnt этой проблемы быть больше не должно.
http://ftp.kolibrios.org/users/CleverMo ... el_dbg.mnt на случай зависания при загрузке я тоже обновила.

Re: Тестируем поддержку USB - 2

Posted: Wed May 15, 2013 10:09 pm
by Miggi
Система стартовала.
Подключение-отключение мыши распознает. Мышь ASUS M/N UT200.
Подключение-отключение Флешки Kingston DTI/2GB распознает.

Всё работает (в том числе картридер видит карту памяти). проблем нет (были, но то был я виноват)

Spoiler:K : [4385] EHCI 80B48094: status of port 5 changed to 00001803
K : [4395] EHCI 80B48094 port 5 state is 00001801
K : [4395] EHCI 80B48094: port 5 has HS or FS device, resetting
K : [4397] EHCI 80B48094: reset port 5 done
K : [4399] EHCI 80B48094 status of port 5 is 00001005
K : address set in device
K : async advance doorbell
K : async advance int
K : address set for controller
K : async advance doorbell
K : async advance int
K : device descriptor: 12 01 00 02 00 00 00 40 E3 05 11 07 44 91 03 04 05 01
K : found USB device with ID 05E3:0711, 1 configuration(s)
K : config descriptor: 09 02 20 00 01 01 00 80 FA 09 04 00 00 02 08 06 50 00 07 05 81 02 00 02 00 07 05 02 02 00 02 00
K : USB interface class/subclass/protocol = 08/06/50
K : USB mass storage device detected
K : 1 logical unit(s)
K : Command 03 failed
K : media is ready
K : 1 attempts, 24 ticks
K : peripheral device type is 00
K : direct-access mass storage device detected
K : sector size is 512, last sector is 3987455
K : [8277] UHCI 80B4D82C connect status changed, 008A/0080
K : USB mouse disconnected
K : USB device disconnected
K : [8638] EHCI 80B48094: status of port 2 changed to 00001803
K : [8648] EHCI 80B48094 port 2 state is 00001801
K : [8648] EHCI 80B48094: port 2 has HS or FS device, resetting
K : [8650] EHCI 80B48094: reset port 2 done
K : [8652] EHCI 80B48094 status of port 2 is 00001005
K : address set in device
K : async advance doorbell
K : async advance int
K : address set for controller
K : async advance doorbell
K : async advance int
K : device descriptor: 12 01 00 02 00 00 00 40 51 09 03 16 00 01 01 02 03 01
K : found USB device with ID 0951:1603, 1 configuration(s)
K : config descriptor: 09 02 20 00 01 01 00 80 32 09 04 00 00 02 08 06 50 00 07 05 81 02 00 02 FF 07 05 02 02 00 02 FF
K : USB interface class/subclass/protocol = 08/06/50
K : USB mass storage device detected
K : 1 logical unit(s)
K : Command 03 failed
K : media is ready
K : 1 attempts, 1 ticks
K : peripheral device type is 00
K : direct-access mass storage device detected
K : sector size is 512, last sector is 3903577
K : [11256] EHCI 80B48094: status of port 5 changed to 00001002
K : async advance doorbell
K : async advance int
K : USB mass storage device disconnected
K : USB device disconnected
K : [12769] EHCI 80B48094: status of port 2 changed to 00001002
K : async advance doorbell
K : async advance int
K : USB mass storage device disconnected
K : USB device disconnected
K : [23999] EHCI 80B48094: status of port 2 changed to 00001803
K : [24009] EHCI 80B48094 port 2 state is 00001801
K : [24009] EHCI 80B48094: port 2 has HS or FS device, resetting
K : [24011] EHCI 80B48094: reset port 2 done
K : [24013] EHCI 80B48094 status of port 2 is 00001005
K : address set in device
K : async advance doorbell
K : async advance int
K : address set for controller
K : async advance doorbell
K : async advance int
K : device descriptor: 12 01 00 02 00 00 00 40 51 09 03 16 00 01 01 02 03 01
K : found USB device with ID 0951:1603, 1 configuration(s)
K : config descriptor: 09 02 20 00 01 01 00 80 32 09 04 00 00 02 08 06 50 00 07 05 81 02 00 02 FF 07 05 02 02 00 02 FF
K : USB interface class/subclass/protocol = 08/06/50
K : USB mass storage device detected
K : 1 logical unit(s)
K : Command 03 failed
K : media is ready
K : 1 attempts, 4 ticks
K : peripheral device type is 00
K : direct-access mass storage device detected
K : sector size is 512, last sector is 3903577

Re: Тестируем поддержку USB - 2

Posted: Thu May 16, 2013 9:38 pm
by yogev_ezra
CleverMouse wrote:8. В этой конфигурации один из UHCI-контроллеров упорно генерирует не то прерывание, которое прописала BIOS в PCI-пространстве. Причём BIOS не виновата, ибо Interrupt Pin тоже не соответствует истине: Interrupt Pin у UHCI-контроллера совпадает с Interrupt Pin у EHCI-контроллера на том же самом PCI-устройстве, назначенные IRQ у них тоже совпадают = 03, но EHCI-контроллер действительно генерирует IRQ 03, а UHCI - почему-то IRQ 0B. Я запрашивала у yogev_ezra в личке полные дампы PCI-пространства USB-контроллеров, там нет ничего подозрительного. Как это чинить правильно, я не знаю, r3505+r3506 обходят проблему путём "если никто из зарегистрированных обработчиков не подтвердил прерывание, давайте опросим все другие обработчики, которые ещё ничего не подтвердили".
К сожалению, с последним ядром и драйверами абсолютно без изменений:
Spoiler:
2013-05-16_21.09.32.jpg
2013-05-16_21.09.32.jpg (166.13 KiB)
Viewed 22129 times

Re: Тестируем поддержку USB - 2

Posted: Thu May 16, 2013 11:35 pm
by yogev_ezra
Последнее не-дебаг ядро - зависает:
Spoiler:
2013-05-16_22.45.55.jpg
2013-05-16_22.45.55.jpg (147.07 KiB)
Viewed 22111 times
Последнее дебаг-ядро - падает основное ядро (PID 001) прямо сразу при загрузке:
Spoiler:
2013-05-16_23.14.26.jpg
2013-05-16_23.14.26.jpg (120.33 KiB)
Viewed 22111 times

Re: Тестируем поддержку USB - 2

Posted: Fri May 17, 2013 12:11 am
by yogev_ezra
Последнее дебаг-ядро
Spoiler:
2013-05-16_23.54.28.jpg
2013-05-16_23.54.28.jpg (425.19 KiB)
Viewed 22103 times

Re: Тестируем поддержку USB - 2

Posted: Fri May 17, 2013 12:18 am
by CleverMouse
Я обновила http://ftp.kolibrios.org/users/CleverMo ... kernel.mnt и http://ftp.kolibrios.org/users/CleverMo ... el_dbg.mnt . Изменения не связаны с USB-подсистемой, так что если вы успели протестировать вариант до изменений и он не вис в процессе загрузки, то для вас ничего не изменится.

Re: Тестируем поддержку USB - 2

Posted: Fri May 17, 2013 1:19 am
by yogev_ezra
CleverMouse wrote:8. В этой конфигурации один из UHCI-контроллеров упорно генерирует не то прерывание, которое прописала BIOS в PCI-пространстве. Причём BIOS не виновата, ибо Interrupt Pin тоже не соответствует истине: Interrupt Pin у UHCI-контроллера совпадает с Interrupt Pin у EHCI-контроллера на том же самом PCI-устройстве, назначенные IRQ у них тоже совпадают = 03, но EHCI-контроллер действительно генерирует IRQ 03, а UHCI - почему-то IRQ 0B. Я запрашивала у yogev_ezra в личке полные дампы PCI-пространства USB-контроллеров, там нет ничего подозрительного. Как это чинить правильно, я не знаю, r3505+r3506 обходят проблему путём "если никто из зарегистрированных обработчиков не подтвердил прерывание, давайте опросим все другие обработчики, которые ещё ничего не подтвердили".
CleverMouse wrote:Я обновила http://ftp.kolibrios.org/users/CleverMo ... kernel.mnt и http://ftp.kolibrios.org/users/CleverMo ... el_dbg.mnt . Изменения не связаны с USB-подсистемой, так что если вы успели протестировать вариант до изменений и он не вис в процессе загрузки, то для вас ничего не изменится.
С последним ядром всё работает супер. Лог прилагаю. Однако проблема с Android-телефонами не исправлена и не находится в списке "Known Issues":
yogev_ezra wrote:Затем решил попробовать мобильный телефон Samsung Galaxy S1. У этого телефона трёхступенчатая система подключения карт памяти к компьютеру:
1) Соединяем телефон и компьютер с помощью USB-кабеля. На этом этапе компьютер только подает питание, а телефон распознает, что был подключен USB кабель, и предлагает на выбор 3 варианта: перевести телефон в режим "Media Player", перевести телефон в режим "Samsung Kies" (синхронизация данных), или перевести телефон в режим флешки.
2) Выбираем режим флешки - другие варианты нам не нужны. На этом этапе Windows пишет, что найдено новое USB-устройство, и в "Windows Explorer" появляются 3 новых диска, соответствующие двум картам памяти телефона (внутренней и внешней) и "Virtual CD", но доступа к этим дискам пока нет. Телефон пишет, что выбран режим флешки, и, чтоб получить доступ к дискам, нужно нажать подтверждение на телефоне. USB-ядро Колибри на этом этапе обламывается, и сообщает о фатальной ошибке. В KFAR новые диски не появляются:

Code: Select all

K : USB interface class/subclass/protocol = 08/06/50
K : USB mass storage device detected
K : 3 logical unit(s)
K : Fatal error during execution of command 00
3) После нажатия кнопки "Подтверждение" на телефоне, Windows дает доступ к дискам (чтение и запись). Телефон пишет, что по окончании работы с дисками нужно выполнить "Безопасное извлечение устройства" из Windows, а затем нажать "Отключение дисков" на самом телефоне. В Колибри ничего не происходит (ничего не пишется в лог, диски продолжают быть не видны в KFAR).

При нажатии кнопки "Отключение дисков" на телефоне, в Колибри также ничего не происходит. При извлечении USB кабеля из компьютера, пишется куча ошибок в лог.

Re: Тестируем поддержку USB - 2

Posted: Fri May 17, 2013 1:22 am
by Mario_r4
Roverbook U800
Spoiler:
BOARDLOG.TXT (36.89 KiB)
Downloaded 580 times
Новых глюков не замечено. Кроме глючной мышки, которая глючная сама по себе, но даже она коммутировалась достаточно стабильно - всего два сбоя.

Re: Тестируем поддержку USB - 2

Posted: Fri May 17, 2013 1:23 am
by CleverMouse
Это есть в списке. Пункты 3 и 4. Сразу после подключения диски есть, но а) носителей в них нету и б) на запрос "ты кто?" телефон отвечает ошибкой, надо полагать, если запросить код ошибки, то было бы "носителя нету".

Re: Тестируем поддержку USB - 2

Posted: Fri May 17, 2013 1:47 am
by Mario_r4
Dell Inspiron N7010 (Intel i5)
Spoiler:
BOARDLOG.TXT (45.51 KiB)
Downloaded 578 times
Все работает кроме глюков глючной мыши, да еще и картридер встроенный не читает SD карты, если они не были вставлены до загрузки системы.
З.Ы. Планируется ли ввести сообщение об изменении состава корневой директории системы, в случае появления/исчезания дисков. Сейчас приходится любой файловый менеджер перезапускать, чтобы увидеть изменения.

Re: Тестируем поддержку USB - 2

Posted: Fri May 17, 2013 2:08 am
by Mario_r4
ASUS M3N78-VM - Athlon II x2 245
Spoiler:
BOARDLOG.TXT (37.42 KiB)
Downloaded 562 times
Кроме глюков глючной мышки, еще в половине разъемов через хаб не работают устройства.