Fedek
2011-03-17 10:17:34 UTC
Hey all!
My question is:
-is there ANY way to configure system to handle my USB device or
isuued requests with higher priority?
-what is continous reader parameters' maximum values?
-I have read about IRQxxPriority parameter in the registry and tried
it with no sense. Is it working?
I am developing a USB driver for camera device and get video data with
continuous reader. Data rates are really high for USB - at about 40MB/
s.
Some machines are fast enough to capture this stream without any
problems - other don't. The main requirement to the host system and to
the driver (as a part of system) is ability of capturing all the data.
If host is late with submitting new request to the bus, the entire
video frame is lost (overflow).
On my target system I have a situation when most of video frames are
captured, but 5% are lost (a frame in 5 sec).
It seems that there IS a way to get over this limit.
And about numbers - continuous reader transfer size = 63*1024, num
pending reads=255.
I have observed different values for both - numpending reads over 16
doesn't make sense (2,4,8 - really loss of bandwidth). Buffer size of
64k and more causes the system to BSOD with IRQL_NOT_LESS_OR_EQUAL.
CPU load:
user mode client - 20% (doesn`t matter up to 70%)
DPC - 10%
ISR - 1.5%
My only next idea is to implement my own continuous reader.
My question is:
-is there ANY way to configure system to handle my USB device or
isuued requests with higher priority?
-what is continous reader parameters' maximum values?
-I have read about IRQxxPriority parameter in the registry and tried
it with no sense. Is it working?
I am developing a USB driver for camera device and get video data with
continuous reader. Data rates are really high for USB - at about 40MB/
s.
Some machines are fast enough to capture this stream without any
problems - other don't. The main requirement to the host system and to
the driver (as a part of system) is ability of capturing all the data.
If host is late with submitting new request to the bus, the entire
video frame is lost (overflow).
On my target system I have a situation when most of video frames are
captured, but 5% are lost (a frame in 5 sec).
It seems that there IS a way to get over this limit.
And about numbers - continuous reader transfer size = 63*1024, num
pending reads=255.
I have observed different values for both - numpending reads over 16
doesn't make sense (2,4,8 - really loss of bandwidth). Buffer size of
64k and more causes the system to BSOD with IRQL_NOT_LESS_OR_EQUAL.
CPU load:
user mode client - 20% (doesn`t matter up to 70%)
DPC - 10%
ISR - 1.5%
My only next idea is to implement my own continuous reader.