Thread (14 messages) 14 messages, 8 authors, 2008-04-03

Re: Real time USB2Serial devices and behaivor

From: Greg KH <hidden>
Date: 2008-03-27 02:47:50
Also in: lkml

On Wed, Mar 26, 2008 at 09:49:46AM -0700, mark gross wrote:
On Wed, Mar 26, 2008 at 09:27:28AM -0700, Greg KH wrote:
quoted
On Wed, Mar 26, 2008 at 08:25:59AM -0700, mark gross wrote:
quoted
At home I'm playing with a real time amateur robotics application with a
micro controller talking over its serial port to a Linux box running an RT
kernel and some RT user mode software to suck in the serial port data
and do some processing in real time.  One example of what I want to do
with this type of configuration is to create a type of IMU thing and run
the data through a kalman filter to see how good I can do with my
hardware.

I'll be sending data regularly at data rates between 50 and 500 HZ from
the MCU (depending on mode)

Anyway, I have the RT code and the system prototyped using the hardware
serial port on my desktop and I'm getting rock solid RT delivery times
of the data +/- 30usec.  While stressing the system in CPU and disk. (I
still need to do the test while flood pinging the box)  However; when I
use my USB dongle instead of the hardware serial port the system falls
over WRT real time behavior.

I'm just starting to look into the behavior now but has anyone looked at
the RT'ness of USB2Serial + USB stack yet?  I would like to see what
other folks have done.  My googleing last night didn't get any useful
hits.
I have, and others have in the past, and it's something that you can not
really do.  USB is not "deterministic", and these cheap usb to serial
devices introduce a very big lag that also is not deterministic.
I'm seeing some of that today :(
quoted
I wouldn't recommend using USB for anything that you need to be able to
accuratly control the latency of, it's just not going to work as that is
not what it was designed for at all.
Oh, thats a drag.  I know bulk has retries, and that on a clean bus they
don't happen (well as far as my hobby use they shouldn't, real
applications should use isochronous streams to avoid them.)

What is the root cause for the non deterministic behavior?  HW or USB
stack?
The USB hardware.  Go read the spec for the gory details, in short,
nothing is guaranteed :(
Is there any reason to think that if I created my own isochronous
USB2Serial adapter and iso-usb-driver that I couldn't get determinism?
I strongly doubt it as others have tried and failed in the past.

sorry,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help