Page 1 of 1

Help me understand few things please

Posted: Mon Aug 23, 2010 11:58 pm
by pokevitek
Hi,please help me with 2 things I still dont understand about USB.

First, why is there the whole concept of endpoints? Let me explain, I believe endopoints are there to differentiate between different transfer types and in-out transmitions. But is this so? Or is there any deeper enpoint meaning I am missing? Becouse, for example, Control endpoint0 is In-Out, so why other enpoints have to be IN or OUT?

And second, how far-hardware can USB go? I mean, I read that bulk transfer are disabled on low speed USB devices by standart. But this driver seems to allow bulk transfers on low speed device. Further, low speed device should have only 4 endpoints, and this driver can manage 7 endpoints. So, this make me think, since this driver is software only, you can stretch standart basically anywhere you want, create anything, have same portion of memory reserved for every enpoints and so. But when you communicate with PC, I think PC has HW USB host, so I believe that you send commands like send data from addres X to device #12 using Control transfer? And the USB chip handles the rest? Or how? Becouse, if you can have bulk transfer on low speed device, and more endpoints that standart allows, there must be more precise way to control PC USB host, to stretch rules little bit, but I dont believe that USB host driver actually creates this signals in software. So where is the truth? Thanks for all ideas.

Re: Help me understand few things please

Posted: Tue Aug 24, 2010 3:25 am
by IvIePhisto
pokevitek wrote:First, why is there the whole concept of endpoints? Let me explain, I believe endopoints are there to differentiate between different transfer types and in-out transmitions. But is this so? Or is there any deeper enpoint meaning I am missing? Becouse, for example, Control endpoint0 is In-Out, so why other enpoints have to be IN or OUT?
An endpoint is identified by its number and transfer direction for a device. So you can have one endpoint with number 1 with in-direction (device-to-host) and another with number 1 and the out-direction. Each endpoint has properties as transfer type (like you said), maximum packet size, polling interval and so on. See section "5.3.1 Device Endpoints" in the USB 2.0 Specification.
pokevitek wrote:And second, how far-hardware can USB go? I mean, I read that bulk transfer are disabled on low speed USB devices by standart. But this driver seems to allow bulk transfers on low speed device. Further, low speed device should have only 4 endpoints, and this driver can manage 7 endpoints. So, this make me think, since this driver is software only, you can stretch standart basically anywhere you want, create anything, have same portion of memory reserved for every enpoints and so. But when you communicate with PC, I think PC has HW USB host, so I believe that you send commands like send data from addres X to device #12 using Control transfer? And the USB chip handles the rest? Or how? Becouse, if you can have bulk transfer on low speed device, and more endpoints that standart allows, there must be more precise way to control PC USB host, to stretch rules little bit, but I dont believe that USB host driver actually creates this signals in software. So where is the truth? Thanks for all ideas.
As I see it most USB host implementations are lax in some respect of requirements by the standard, so some things might work which aren't allowed.