This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

USBSER.SYS quirks explained

Hi,
I have been wrestling with Microsoft USBSER.SYS as my host driver for an MDK-PRO based Atmel project.

We are using the USB CDC ACM middleware from Keil. (4.73 source)

I have determined a few interesting points and would like to see if anyone else concurs.

1) The slowest USBSER.SYS polls the INTERRUPT endpoint is once every 32ms to get modem state changes. If you indicate a slower polling rate than 32ms, it will be ignored and 32ms will be used. Keil USB middleware does not write to the INTERRUPT IN endpoint useless there is a state change on the control lines. In the Keil usb_config.c, when you are entering polling interval, it is in FRAMES for low/full speed (i.e. ms), and micro frames (i.e. 125microsecond increments) These is a typo in the 4.74 middleware usb_config.c, as they hint you that it is in ms.

2) USBSER.SYS has a small buffer, about 16K in size. Once you attach your device, USBSER.SYS will read up to 16K from the device, and then stop reading.

3) Once you open the USB COM port, USBSER.SYS flushes the buffers and starts reading. As long as you consume the data, it will keep reading from your device indefinitely. Once that buffer fills, it will stop issuing BULK IN requests.

We are trying to use the USBSER.SYS, not the Keil VCOM driver, as we want to use the Windows USB Extended Compat ID OS Feature Descriptor so our device can plug and play with no .inf or useless windows update searches.

Does this sound rational to anyone else? (Tsuneo?)

-Steve

0