flat assembler
Message board for the users of flat assembler.

Index > OS Construction > USB unresponsive device (EHCI)

Author
Thread Post new topic Reply to topic
BAiC



Joined: 22 Mar 2011
Posts: 272
Location: California
BAiC 30 Jul 2019, 15:41
I'm having some trouble with my test hardware. EHCI is reporting that a device is connected. I go through the USB Reset procedure and upon issuing a "Set Address" command the device simply doesn't respond. EHCI doesn't terminate with an error either (I initialized the error counter to 1 everywhere possible).

I am going to have to implement a timeout mechanism generally anyway but doing that won't solve the underlying problem here.

The only device plugged into any of my USB ports is the USB Floppy drive I use to boot so this behavior is very suspicious.

I booted into Windows (it's a DELL D520 laptop with WinXP): Windows doesn't have any issue with USB and the Device Manager doesn't report anything suspicious.

Has anyone seen this before?

Thanks.

_________________
byte me.
Post 30 Jul 2019, 15:41
View user's profile Send private message Visit poster's website Reply with quote
N-LG



Joined: 14 Feb 2019
Posts: 40
Location: france
N-LG 01 Aug 2019, 17:31
i doesnt know a lot about USB (today my OS just detect the controler) but EHCI controler doesnt support low speed device and we need to use an slave UHCI or OHCI to use them
maybe the floppy drive is a low speed device?
Post 01 Aug 2019, 17:31
View user's profile Send private message Reply with quote
BAiC



Joined: 22 Mar 2011
Posts: 272
Location: California
BAiC 02 Aug 2019, 07:56
the floppy is a Full Speed device. the EHCI uses "Companion Controllers" that are either UHCI or OHCI to implement connections to the Root Hub. the EHCI can handle connections to Low Speed and Full Speed but they have to be connected to a non-root-hub.


my EHCI driver properly hands off the device to the Companion Controller when it first boots (for the floppy drive). this is a coincidence of the port enumerator: the Floppy Drive happens to be enumerated before the 'ghost' device.

I've since added a timeout function and a software port disable that blocks this 'ghost' device.

_________________
byte me.
Post 02 Aug 2019, 07:56
View user's profile Send private message Visit poster's website Reply with quote
N-LG



Joined: 14 Feb 2019
Posts: 40
Location: france
N-LG 03 Aug 2019, 16:54
I can not wait to take care of the USB driver of my OS, it looks very complex, currently I take care of TCP connection management but the USB seems to be at a higher level

is that your work is available somewhere? I would like to take a look when i do my own future implementation of USB
Post 03 Aug 2019, 16:54
View user's profile Send private message Reply with quote
BAiC



Joined: 22 Mar 2011
Posts: 272
Location: California
BAiC 04 Aug 2019, 20:35
I stopped posting my code around the same time I created my own loader (i.e., ELF). it became so complex that I can't really ask for help with specific code blocks: most sections require knowledge of the OS in general in order to debug them.

_________________
byte me.
Post 04 Aug 2019, 20:35
View user's profile Send private message Visit poster's website Reply with quote
Display posts from previous:
Post new topic Reply to topic

Jump to:  


< Last Thread | Next Thread >
Forum Rules:
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Copyright © 1999-2025, Tomasz Grysztar. Also on GitHub, YouTube.

Website powered by rwasa.