[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [usb] USB pipes



Rudolf,

I don't see myself as a USB expert, but I have developed a number of
systems using USB, and in each case the number of endpoints was very
critical to the software folks.  Since each endpoint might be controlled
by a single thread or task, sharing endpoints creates a fair amount of
overhead to allow the passing of semaphores, handling interrupts, etc. 
Obviously more is better, but as you say, there are finite limits in
hardware.  My sense is that for embedded use (my area) 4 endpoints 
plus 1 control endpoint is a minimum amount.  8 may be overkill, but
if it is a HW compile time option than it seems like a good upper 
limit.

One other point, it is important to allow the endpoints to be 
programmable by software for Bulk or Isochronous transfers.  The need
to handle both types can change on the fly during use. 

Michael Kelly

Rudolf Usselmann wrote:
> 
> Question about the USB function core that I'm developing:
> 
> Should I make endpoints individually accessible or just create
> one pipe for all data and one pipe for control ?
> 
> That would mean that the software would have to do frame assembly.
> I would provide with each packet some sort of control information,
> which software could use for assembly.
> 
> Or, I can create a separate pipe(in hardware) for each endpoint and
> do frame assembly in hardware. That would occupy a lot more resources
> and the number of endpoints would be limited in hardware. I could
> setup lets say 8 endpoints, and make it a compile option as to how many
> are really used ...
> 
> Any comments/suggestions ?
> 
> Please follow up to: mailto:usb@opencores.org
> 
> Thanks,
> rudi

-- 
****************************************************************
* Michael J. Kelly,  Vice-President, Engineering and Marketing *
* Cogent Computer Systems, Inc.              tel: 401-295-6505 *
* 1130 Ten Rod Road, Suite A-201             fax: 401-295-6507 *
* North Kingstown, RI 02852               web: www.cogcomp.com *
****************************************************************
* CMA: Universal Target Platform for 32/64-Bit Microprocessors *
****************************************************************