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.

SD Card Speed

Other Parts Discussed in Thread: CSD

Hallo Community,

sorry for disturbing again! I'm still working on the Speed of the SD Card

im using LogicPD board with OMAP L-138 and biospsp 3.00.01.00 i try to write data to SD Card, and it schould be faster then 1MB/sek but the fastest i get is 200kB/sek

is there a trick to get it much faster?

 writeSize = fwrite(srcmmcsdBuf, 1, cnt, pFile);

i try to variate cnt, but i got not more speed...

  • Eugen,

    Can you check whether multi-block read/write support is enabled in the mmc driver? You should be able to achieve at least 6MB/sec using a standard SD card.

  • Renjith

    i saw this defenition once, but now i cant find it!

  • Eugen,

    Check the SD card read/write function implementation. It will use CMD17/CMD24 is for read/write single sector. Check the macro definition of that. Most likely the CMD18/25 will be defined next to it and from there you should be able to trace it, where it is called.

  • Hallo Renjith, thank you for your support!

    i can find in ...psp_03_00_01_00/drivers/mmcsd/... llc_mmcsd.h

     LLC_MMCSD_READ_SINGLE_BLOCK = 17,
     LLC_MMCSD_READ_MULTIPLE_BLOCK = 18,
     LLC_MMCSD_WRITE_BLOCK = 24,
     LLC_MMCSD_WRITE_MULTIPLE_BLOCK = 25,

    following llc_mmcsd.c

     /*Set for generating DMA Xfer event*/
        if ((PSP_MMCSD_OPMODE_DMAINTERRUPT == cmd->opMode) &&
            ((LLC_MMCSD_WRITE_BLOCK == cmd->idx) ||
             (LLC_MMCSD_WRITE_MULTIPLE_BLOCK == cmd->idx) ||
             (LLC_MMCSD_PROGRAM_CSD == cmd->idx) ||
             (LLC_MMCSD_ACMD_SEND_SCR == cmd->idx)))

    i found in the documentation that  PSP_MMCSD_IOCTL_GET_OPMODE give me the Information of Operation Mode

    in file psp_mmcsd.h

     

    PSP_MMCSD_IOCTL_GET_OPMODE,
        /**< Get the opmode of the driver
        *   This IOCTL will be used to get operating mode of the MMCSD device.
        *   Application has to pass pointer to PSP_MmcsdOpMode enum variable
        *   as a third argument in PSP_mmcsdStatus() function. For example
        *   PSP_MmcsdOpMode opmode;
        *   cmdArg = (&opmode);

      i try to use it in my code but no result 

    char cmdArg[25];
    PSP_MmcsdOpMode opmode;

    cmdArg = (&opmode);
    printf("OPmode: %s", cmdArg);

    is there no simple difinition to use multiple block write or not?

  • Eugen,

    Are you sure that there is only one instance of LLC_MMCSD_READ_MULTIPLE_BLOCK in your whole driver? If so, then multi-block read/write support has to be added. 

    Whatever you've tried by changing the command directly will not help, because the for supporting multi-block the arguments are different and logically it has to be handled properly. The read sequence itself will change.