From: Joris v. R. <jo...@sr...> - 2010-07-08 15:15:48
|
On Wednesday 07 July 2010 19:46:03 Uwe Bonnes wrote: > Joris> I noticed that programming big files is quite slow (20 minutes > Joris> for a 20 Mbit image). I'm using a Xilinx DLC10 USB programmer. > > What are Impact programming times? Much faster, about 140 seconds for erasing plus programming. With xc3sprog, programming takes between 320 and 980 seconds, depending on the Linux timer frequency (1000 or 100 Hz). There is a slight change to the XCFP programming loop that I'd like to make (patch in sourceforge tracker). My previous code would actually sleep shorter than the recommended time between commands. > Xc3sprog used the reversed engineered devices handling from ixo.de. Perhaps > impact uses not-yet documented APIs for those big chunks. Can you perhaps > send some log like the Linux usbmon api delivers? I captured a usbmon log file. It looks like Impact uses only A6 commands during programming, just like xc3sprog. However Impact always sends large packets, 9398 bytes. I'm thinking that my programming time may be mostly due the Usleep calls in the algorithm. Short sleeps (10 - 100 us) may be rounded up by the OS scheduler, so this is very inefficient. In fact I think xc3sprog could be a lot smarter about sleeping when a USB programmer is used. If the bit rate of the programmer is known, sleeping could be done much more accurately inside the programmer by inserting NOPs in the bit stream. I think this is how Impact handles it. Greetings, Joris. |