In our company we develop and distribute USB cameras for industrial use. At the moment I am involved in a project that aims on evaluating the usage of our cameras on mobile processors.
We have the i.MX 53 Quick Start Board, with Windows Embedded Compact 7. Adeneo BSP.
To access the device, we are using Jungo WinDriver for CE and also tested Thesycon USBIO.
The problem we are facing is that we only get very small amounts of data without data loss. E.g. an amount of ~8000 Byte is Ok. This would be a resolution of ca. 64x64 pixels.
Larger amounts produce data loss. The same driver and user software on an x86 platform also works with large data amounts.
Now I have to evaluate, where this issue comes from. Is it a hardware issue (bus, processor,...)?
Could it be a driver issue?
I would appreciate any hint about USB transfer speeds on this board. If anyone has experience with USB usage on this hardware, please share your knowledge.
Additionally I should mention, that there is no additional buffer memory in our hardware. It is only the Bulk-Pipe FIFO.
Thanks in advance,
Ok, I think I understand what you're focusing on. Probably there has to be done a deeper and more exact analysis of timing than I have done now. For now, I haven't really focused on the RT functionality and its timing measures of WEC7. I simply used this 'OpenTimeCE' implementation from 'time.codeplex.com'. Being really new to this platforms, I am not sure how accurate this is!
But on the other hand, I think, this problem should have been there with lower data amounts, too... ?
The type of data loss is quite hard to identify for me... But probably I will figure out tomorrow.
Hello! Thanks for your hint...
The camera's pixel clock is decreased to a rate of 13 MHz (so, really not very fast). Any further processing doesn't take place. I am just trying to read Bulk data of a multiple of 2048 (Max Bulk Size) into a buffer of the same size. So, doing this with around 8000 bytes is no problem. Taking an amount of around 16000, e.g., will produce data loss. The only operations after the drivers read operation is writing the buffer into a file (to verify checksums afterwards).
Joan Carles said:
I think it's a case of buffering. Either your camera sends too fast (could you accept a slower rate?) or else your processor takes the data too slowly, are you writing to a DDR RAM before any further processing?
We have faced similar issues while connecting high bandwidth camera on our i.MX53 board.
We have solved this issue by optimizing the Freescale BSP. If you need further details, please contact us.