
Am Donnerstag, 6. Mai 2010 15:59:44 schrieb Wolfgang Wegner:
Hi Alexander,
On Thu, May 06, 2010 at 03:33:53PM +0200, Alexander Stein wrote: [...]
IIRC 400kBytes/second is the initial speed for SD cards on SPI. The card itself responds which max speed it can handle. Which could be adjusted later (up to 25MHz or even more).
the initial speed is 400 kBits/second, because there may be some (few) cards that could not handle more.
Yep, it's need to distinguish between SD and MMC. IIRC that's also the speed a MMC can handle (at maximum?).
I backported this spi_mmc driver to 2.6.10 (yes, even older) and it is slow, nevertheless. I don't know how SPI is done in u-boot, but maybe the system interrupts in linux like ethernet and timer slow SPI transfer down.
Thanks for the confirmation!
e.g. If I'm downloading something per FTP to the SD card I get a big burst at first and then several seconds 0bytes/s In this case I also detected a bug in the windows TCP stack if some packets get dropped... On a new AT91 board with integrated MCI interface it's much faster
I just found a page from the blackfin linux project: http://docs.blackfin.uclinux.org/doku.php?id=linux-kernel:drivers:spi_mmc which suggests better values (using dd with bs=512 should be similar to what bonnie does in the block tests?). A hint I got from this page was to disable SPI DMA (which was also enabled on my coldfire), and this improved the situation to get around 115 kBytes/second.
I can't say much about actual transfer rates. But i noticed a real slowdown when the filesystem buffer is about to be flushed. We are using a COldfire 5484 and AFAIK there is no DMA for SPI, at least we don't use it.
Best regards Alexander