f



USB 1.1 Host with no hardware USB core

We're working on an embedded device that needs to talk to USB mass
storage devices.  We have several processor options, some with
internal USB cores, and some that will require external cores.  The OS
will be something simple, and not of the order of an embedded Linux or
Windows CE.

Most of the processors have a rich set of I/O pins, so I was
wondering, has anyone tried emulating a USB 1.1 host (or subset) using
just the processor and software (and a jack, the appropriate pull-ups,
etc.)?  I'm looking into this on the side, mostly for my own
curiosity.  My guess is it can be done (the initial USB cores had to
be initially created somehow), and that it's not necessarily an easy
thing to do in terms of time for full 1.1 compliance.  USB cores are
somewhat cheap nowadays, but I would think logic to simulate one would
be cheaper.  Given what little text I've found from searching online,
any comments would be appreciated and informative.

Thanks for reading.
Hector.
0
hectorlas
9/21/2004 6:27:56 PM
comp.emulators.misc 427 articles. 0 followers. pgm (4) is leader. Post Follow

2 Replies
524 Views

Similar Articles

[PageSpeed] 18

On Tue, 21 Sep 2004 11:27:56 -0700, Hector wrote:

> We're working on an embedded device that needs to talk to USB mass
> storage devices.  We have several processor options, some with
> internal USB cores, and some that will require external cores.  The OS
> will be something simple, and not of the order of an embedded Linux or
> Windows CE.
> 
> Most of the processors have a rich set of I/O pins, so I was
> wondering, has anyone tried emulating a USB 1.1 host (or subset) using
> just the processor and software (and a jack, the appropriate pull-ups,
> etc.)?

Seems very hard.
You should take a look to the USB 1.1 specification.
You may not support 1.0 devices, which may make your design simpler.
In the electrical specifications part, you have all informations to know
what you need to interface the line signal and split them into functionnal
signals (ie data, device connection signaling, ...).
The real hard stuff is to generate the bit stream, imho: you need to
generate the outgoing signal, splitting USB transactions into elementary
packets, send them at a speed of 12 Mbps, take care of start-of-frame,
errors, treat the incoming data in real-time...
You may know that Cypress designs some USB host chips using
microcontrolers. Those USB controlers are 16 bits simple CPUs running at
48 Mhz with builtin IRQs, timers, ROM & RAM. This may give you an idea of
the resources you would need from your CPU in order to achieve 'soft USB'
implementation.

> I'm looking into this on the side, mostly for my own
> curiosity.  My guess is it can be done (the initial USB cores had to
> be initially created somehow), and that it's not necessarily an easy
> thing to do in terms of time for full 1.1 compliance.  USB cores are
> somewhat cheap nowadays, but I would think logic to simulate one would
> be cheaper.

When you can find USB 2.0 hosts for 2.5$, I'm suspicious that, giving the
development costs of the solution you imagine, it would cost less to avoid
using an existing chip.

0
no_spam
9/21/2004 9:23:04 PM
Thanks for the reply, I'm in agreement with you on all counts.  My
nose has been in the 1.1 spec for the past few days.  I did find one
thing.  The NEC V850 family, heavy on I/O ports (but not USB), seems
to have some middleware that supports USB using the I/O pins and no
other chips.  I'm only inferring that though, I haven't found any
evidence that solidly says that's happening yet.  I've got a message
out with them asking about it.  That would answer whether anyone has
tried it, though I doubt I'll get any first-hand development comments
about it, other than how long it took.

Thanks again.

no_spam <l_indien_no_more_spams@magic.fr> wrote in message news:<pan.2004.09.21.21.23.03.500563@magic.fr>...
> On Tue, 21 Sep 2004 11:27:56 -0700, Hector wrote:
> 
> > We're working on an embedded device that needs to talk to USB mass
> > storage devices.  We have several processor options, some with
> > internal USB cores, and some that will require external cores.  The OS
> > will be something simple, and not of the order of an embedded Linux or
> > Windows CE.
> > 
> > Most of the processors have a rich set of I/O pins, so I was
> > wondering, has anyone tried emulating a USB 1.1 host (or subset) using
> > just the processor and software (and a jack, the appropriate pull-ups,
> > etc.)?
> 
> Seems very hard.
> You should take a look to the USB 1.1 specification.
> You may not support 1.0 devices, which may make your design simpler.
> In the electrical specifications part, you have all informations to know
> what you need to interface the line signal and split them into functionnal
> signals (ie data, device connection signaling, ...).
> The real hard stuff is to generate the bit stream, imho: you need to
> generate the outgoing signal, splitting USB transactions into elementary
> packets, send them at a speed of 12 Mbps, take care of start-of-frame,
> errors, treat the incoming data in real-time...
> You may know that Cypress designs some USB host chips using
> microcontrolers. Those USB controlers are 16 bits simple CPUs running at
> 48 Mhz with builtin IRQs, timers, ROM & RAM. This may give you an idea of
> the resources you would need from your CPU in order to achieve 'soft USB'
> implementation.
> 
> > I'm looking into this on the side, mostly for my own
> > curiosity.  My guess is it can be done (the initial USB cores had to
> > be initially created somehow), and that it's not necessarily an easy
> > thing to do in terms of time for full 1.1 compliance.  USB cores are
> > somewhat cheap nowadays, but I would think logic to simulate one would
> > be cheaper.
> 
> When you can find USB 2.0 hosts for 2.5$, I'm suspicious that, giving the
> development costs of the solution you imagine, it would cost less to avoid
> using an existing chip.
0
hectorlas
9/23/2004 5:48:52 PM
Reply: