From: Waschk,Kolja <ur...@ix...> - 2007-11-16 00:22:01
|
Hi Arnim, > Some parts of existing code were modified. So far it looks very good, I endorse merging it into trunk. I made some quick tests with an USB-Blaster attached, all fine. > The cable is still no speed demon :-( Guess we need a different concept > for the cable API to get a better performance. We could introduce buffering replacements for "chain_clock", "transfer", even "get_tdo" etc. Such replacement would just schedule the actual operation for later in some static buffer. Execution of the operations collected in the buffer would happen at a later time; either whenever the caller asks for results, or with some kind of flush() function. Instead of: ...other operations chain_clock() chain_clock() ...other operations chain_clock() chain_clock() We should do ...other operations chain_clock_defer() chain_clock_defer() ...other operations chain_clock_defer() chain_clock() For functions like "get_tdo" and "transfer" which normally return results immediately, all calling code would have to be looked at - whether it uses the result at all and _when_ it uses the result. If the result isn't required immediately, the "get_tdo" request could be buffered and the data could retrieved later with another call: Instead of: ... other operations x = get_tdo ... other operations> New version: ... other operations (void)get_tdo_defer ... other operations x = get_tdo_result Tracking this as an Enhancement request: [ 1832990 ] Speed improvements for USB cables |