libblock and FAT

Sebastian Huber sebastian.huber at embedded-brains.de
Mon Aug 26 11:13:47 UTC 2013


On 2013-08-26 10:52, ruizx wrote:
> My problem is my SDHC controller do not support DMA block tranfer interrupt, the DMA interrupt only occured when the total
> number of blocks transferd finished.
> In this case, the buffer passed to DMA controller must contiguous.
> Linux can use dma_map_sg to mao scatter discrete memory to a contiguous buffer address.
> RTEMS s/g buffer mechanism can not provide such buffer.
>
> I'v used an alternative but not good method to solve this problem.
>
> I allocate a large size buffer which provided a contiguous DMA memory address.
>
> When read access, SDHC controller fills the buffer first, then use memcpy  to move data from the buffer to s/g buffers.

The bdbuf can work with a block size that is an integral multiple of the media 
block size.  If you can use large blocks for the file system, then you get good 
IO performance.  Using 512 transfer quantities is a performance disaster.

Please have a look at my other mail of this thread regarding some tuning options.

-- 
Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax     : +49 89 189 47 41-09
E-Mail  : sebastian.huber at embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.



More information about the users mailing list