This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MicroSD card on OMAP-L138

Other Parts Discussed in Thread: OMAP-L138

Dear E2E:

Thank you fot your help.

I have some questions about MicroSD card controller on OMAP-L138:

1.  Can one page block (128MB) writing be suspended due to some interrupts then start again to complete 1 page write?

2.  Is this supported by DMA?

Thank you,

Boris

  • Once you issue a write command to the SD card, the card should be in the writing state and you can then write out the data to the MMC/SD controller FIFO at your leisure.  The transfer could be done via the system EDMA or it could be done using the CPU, and it should be interrupt tolerant.  The code I've seen does writes (and reads) in chunks of the FIFO size, so I think DMA transfers would have to be done the same way. But there is no requirement (neither from the card nor the controller) that the data be delivered in one continuous non-stop transfer (but of course you can't go do other SD card stuff while a write is outstanding - like if you were in a multithreaded environment, you can't have one thread try to do a read from the card while the other thread is still in the middle of a write that you started).

    Regards, Daniel

  • Hello Daniel.

    Thank you for you respond.

    1.  As I understood from your email - the continuous write to MicroSD is "interrupt tolerant" - so it can be interrupted by the "512Byte block" basis. Is it correct? I found in UM (SPRUH77) page1254 that single block is 512Byte. Is it correct?

    2.  With "Sustained write transfer rate" of 12.4MB/s (this is from MicroSD spec) - the time required for the writing of 512B is ~41uS

    3.  Does it mean - the continuous write to MicroSD can be interrupted (stopped for anther processor task) after each "block write" or 41uS if it is necessary?

    4.  The continuous write to MicroSD can be resumed after CPU served another task. Is it correct?

    Thank you for your help,

    Boris Ruvinsky