06/16/2010 5:45 PM
CACHE_FLAG_SNOOPED and devb-umass
We are working on a project that requires >10MB/sec transfers from USB. We are working with the Freescale MPC8349EA
processor. We are using QNX 6.3.2. We are using a USB drive that we've verified (under Linux) will easily do 25 to 28
MB/sec sustained transfer rates.
USB Transfers using default 6.3.2 components give us around 6 MB/sec data transfers. So we got a hold of the code and
began looking for reasons as to why the transfers were so slow. We came across the bounce buffers and the
Setting this flag in ppcv_cpuinfo_8200.c and building a new image did indeed bypass the bounce buffers and allowed 15 to
18 MB/sec sustained transfers, but USB was very unreliable at detection.
If we could get USB to detect the USB drive, the transfer rates were wonderful. But it was flaky.
So we took the latest code from the source tree (io-blk, cam, fs-dos, etc) and built it and installed these instead of
the default 6.3.2 components.
Detection became reliable but now reading and writing are flaky.
We may undertake upgrading to 6.4.x, however, it would require extensive Ethernet driver changes because of our
particular configuration, so I'd like to avoid that if possible.
Can anyone help me understand why the bounce buffers are necessary and what we might be able to do to get this to run
Any pointers or insights are appreciated.