Протестировал FatFS на LPC2478
Исходные данные:
FatFS 0.07 + uCOS-II
LPC2478: Core CLK 72МГц, MCI CLK - 18МГц, трансфер данных между картой и памятью по DMA.
При тестировании производилась запись и чтение файла целиком, и для сравнения - в цикле блоками по 512 байт.
При чтении/записи целого файла драйвер использует команды SD карты WRITE_MULTIPLE_BLOCK (CMD25) и READ_MULTIPLE_BLOCK (CMD18).
FatFS пишет последовательно столько блоков, сколько их содержится в кластере.
При чтении/записи блоками по 512 байт драйвер использует команды WRITE_SINGLE_BLOCK (CMD24) и READ_SINGLE_BLOCK (CMD17).
SD Card - 16 MB (размер кластера 4096 байт):
Код
Test for read/write speed whole file.
File size = 262144 bytes
File write time = 770152 mks
Write speed = 340425 bytes/sec
File read time = 87600 mks
Read speed = 3011764 bytes/sec
Test for read/write speed with blocks.
File size = 262144 bytes
Block size = 512 bytes
File write time = 5824609 mks
Block write time= 11375 mks
Write speed = 45007 bytes/sec
File read time = 270855 mks
Block read time = 528 mks
Read speed = 969696 bytes/sec
Комментарий. Карта старая, запись длится примерно 10 мс.
В Windows для этой же карты разультат на запись 650 кБ/сек, на чтение - 6 МБ/сек.
SD Card - 2 GB (размер кластера 32768 байт):
Код
Test for read/write speed whole file.
File size = 262144 bytes
File write time = 290314 mks
Write speed = 904593 bytes/sec
File read time = 39776 mks
Read speed = 6736842 bytes/sec
Test for read/write speed with blocks.
File size = 262144 bytes
Block size = 512 bytes
File write time = 1438077 mks
Block write time= 2808 mks
Write speed = 182336 bytes/sec
File read time = 268885 mks
Block read time = 524 mks
Read speed = 977099 bytes/sec
В Windows для этой карты разультат на запись 2200 кБ/сек, на чтение - 12 МБ/сек.
Пасу котов...