A USB controller is provided with multiple logic channels that share same
physical address and data bus at an interface between the host system and
the USB Host Controller; and dataports used by the host system to read
and/or write data to the USB Host Controller. Also provided is a data
packet format for transferring data, which comprises of an Endpoint
Transfer Descriptor ("ETD") that includes an EndPoint Descriptor and a
Transfer Descriptor, wherein the host system programs the parameters of a
communication channel for a particular Endpoint. Also included is a
technique for partitioning a memory storage device into a first memory
buffer and a second memory buffer; wherein the size of the first and
second memory buffer may be programmed by the host system and the first
and/or second memory buffer may contain more than one USB packet.