EmbeddedRelated.com
Forums
Memfault Beyond the Launch

Cypress GPIF: Bulk read error

Started by Gavin Brewer February 26, 2007
Guys,

I am working with a Cypress EZ-USB FX2 prototyping board connected to an 
  Omnivision camera chip that spits out data far faster than the GPIF's 
Endpoint buffers are programmed to handle. The Keil uVision compiler is 
used for the firmware and libusb 0.1.12.0 for enumerating the USB 
devices at the PC end.

I am using Control Requests, (or Vendor Requests in GPIF parlance) to 
communicate with the development board and the Camera chip. These work 
find for turning LEDs on and off and sending the Camera chip to sleep 
etc. However, when I attempt the bulk read transer below, I get the 
following error message:

Bulk Read Vendor Request failed (-22).
usb_submit_async: submitting request failed, win error: The parameter is 
incorrect.

I have checked the parameters of the usb_bulk_read() call and I don't 
find any obvious discrepancies, so I assume that there is a problem with 
my firmware.

Could someone please offer me a code snippet for buffering Camera output 
on the GPIF chip, (if that is what the problem is).

Thank you for your time,
			Gavin Brewer.

				
On Feb 26, 6:29 am, Gavin Brewer <g...@axicon.com> wrote:

> I am working with a Cypress EZ-USB FX2 prototyping board connected to an > Omnivision camera chip that spits out data far faster than the GPIF's > Endpoint buffers are programmed to handle. The Keil uVision compiler is > used for the firmware and libusb 0.1.12.0 for enumerating the USB > devices at the PC end. > > I am using Control Requests, (or Vendor Requests in GPIF parlance) to > communicate with the development board and the Camera chip. These work > find for turning LEDs on and off and sending the Camera chip to sleep > etc. However, when I attempt the bulk read transer below, I get the > following error message: > > Bulk Read Vendor Request failed (-22). > usb_submit_async: submitting request failed, win error: The parameter is > incorrect.
I found a similar problem trying to talk to an fx2 using libusb-win32. I found that it was necessary to call usb_set_configuration() before calling usb_claim_interface(), otherwise I would get one of these paramater is incorrect errors. You can find which configuration you want from the libusb test program. I think maybe it was configuration 1... don't remember exactly. I suspect that this call may not be necessary in some versions of libusb (or maybe under linux) as I had started with allegedly working code... but it didn't work for me until I added that - I could use vendor commands to program the chip, but then couldn't talk to it via the bulk transfers.

Memfault Beyond the Launch